diff options
author | Stan Hu <stanhu@gmail.com> | 2018-06-23 06:22:43 +0300 |
---|---|---|
committer | Filipa Lacerda <filipa@gitlab.com> | 2018-06-25 18:40:23 +0300 |
commit | f64733208d0d505faf8abbe0243824acf95e67d1 (patch) | |
tree | 6d9ec7853d36f86695e48c54feb9a7588eb762bf | |
parent | 1e877029c18a9a93ffa4e446c016ba981a9af4d9 (diff) |
Merge branch 'mk/log-invalid-byte-sequence-in-us-ascii-qa' into 'master'
Log push output on exception
See merge request gitlab-org/gitlab-ce!20085
-rw-r--r-- | qa/qa/specs/features/repository/protected_branches_spec.rb | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/qa/qa/specs/features/repository/protected_branches_spec.rb b/qa/qa/specs/features/repository/protected_branches_spec.rb index ec3802e7a76..c5b8c271d7d 100644 --- a/qa/qa/specs/features/repository/protected_branches_spec.rb +++ b/qa/qa/specs/features/repository/protected_branches_spec.rb @@ -13,11 +13,15 @@ module QA Page::Main::Login.act { sign_in_using_credentials } end - after do + after do |example| # We need to clear localStorage because we're using it for the dropdown, # and capybara doesn't do this for us. # https://github.com/teamcapybara/capybara/issues/1702 Capybara.execute_script 'localStorage.clear()' + + # In order to help diagnose a false failure + # https://gitlab.com/gitlab-org/gitlab-ce/issues/48241 + log_push_output if example.exception end context 'when developers and maintainers are allowed to push to a protected branch' do @@ -27,9 +31,9 @@ module QA expect(protected_branch.name).to have_content(branch_name) expect(protected_branch.push_allowance).to have_content('Developers + Maintainers') - push = push_new_file(branch_name) + @push = push_new_file(branch_name) - expect(push.output).to match(/remote: To create a merge request for protected-branch, visit/) + expect(@push.output).to match(/remote: To create a merge request for protected-branch, visit/) end end @@ -37,11 +41,11 @@ module QA scenario 'user without push rights fails to push to the protected branch' do create_protected_branch(allow_to_push: false) - push = push_new_file(branch_name) + @push = push_new_file(branch_name) - expect(push.output) + expect(@push.output) .to match(/remote\: GitLab\: You are not allowed to push code to protected branches on this project/) - expect(push.output) + expect(@push.output) .to match(/\[remote rejected\] #{branch_name} -> #{branch_name} \(pre-receive hook declined\)/) end end @@ -65,5 +69,13 @@ module QA resource.new_branch = false end end + + def log_push_output + if defined?(@push) + filename = File.join('tmp', "push-output-#{project.name}") + puts "Exception detected. Push output will be saved to #{filename}" + IO.binwrite(filename, @push.output) + end + end end end |