summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2018-06-23 03:22:43 +0000
committerStan Hu <stanhu@gmail.com>2018-06-23 03:22:43 +0000
commit2bac2918b2d6f12d94f739f4b6865b9e9221c642 (patch)
tree9e9673311b7079d3ce50d0ebaad788a826723306
parentc1fa6f7c88e2d751ffd03ea001d8dbbdfdb5e5cc (diff)
parentd493c91d21250e0b94a14f1808fcf8bb6f1a8d03 (diff)
downloadgitlab-ce-2bac2918b2d6f12d94f739f4b6865b9e9221c642.tar.gz
Merge branch 'mk/log-invalid-byte-sequence-in-us-ascii-qa' into 'master'consolidate-capitalization-profile
Log push output on exception See merge request gitlab-org/gitlab-ce!20085
-rw-r--r--qa/qa/specs/features/repository/protected_branches_spec.rb24
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