diff options
author | Mark Lapierre <mlapierre@gitlab.com> | 2019-03-01 12:52:06 +0000 |
---|---|---|
committer | Mark Lapierre <mlapierre@gitlab.com> | 2019-03-01 12:52:06 +0000 |
commit | b0897429e27554fef3894ffa062346229b36ad4a (patch) | |
tree | 0dd376d454dead8104df59947e8db4b30a590aa9 /qa | |
parent | 6b507626ed3499c1796706b507c30b8f46c706b7 (diff) | |
parent | 95b5832366e4bd809bc55641e9c8cb93234b0330 (diff) | |
download | gitlab-ce-b0897429e27554fef3894ffa062346229b36ad4a.tar.gz |
Merge branch 'qa-raise-error-when-repository-command-fail' into 'master'
[QA] Fail early if a Git command fails
Closes #54653
See merge request gitlab-org/gitlab-ce!23450
Diffstat (limited to 'qa')
-rw-r--r-- | qa/qa/git/repository.rb | 5 | ||||
-rw-r--r-- | qa/qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb | 7 | ||||
-rw-r--r-- | qa/spec/git/repository_spec.rb | 4 |
3 files changed, 8 insertions, 8 deletions
diff --git a/qa/qa/git/repository.rb b/qa/qa/git/repository.rb index 0aa94101098..b3bad40a90f 100644 --- a/qa/qa/git/repository.rb +++ b/qa/qa/git/repository.rb @@ -12,6 +12,7 @@ module QA module Git class Repository include Scenario::Actable + RepositoryCommandError = Class.new(StandardError) attr_writer :use_lfs attr_accessor :env_vars @@ -205,6 +206,10 @@ module QA output.chomp! Runtime::Logger.debug "Git: output=[#{output}], exitstatus=[#{status.exitstatus}]" + unless status.success? + raise RepositoryCommandError, "The command #{command} failed (#{status.exitstatus}) with the following output:\n#{output}" + end + Result.new(status.exitstatus == 0, output) end diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb index 4464fb812b7..6aebd04af03 100644 --- a/qa/qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb @@ -37,12 +37,7 @@ module QA it '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) - - expect(push.output) - .to match(/remote\: GitLab\: You are not allowed to push code to protected branches on this project/) - expect(push.output) - .to match(/\[remote rejected\] #{branch_name} -> #{branch_name} \(pre-receive hook declined\)/) + expect { push_new_file(branch_name) }.to raise_error(QA::Git::Repository::RepositoryCommandError, /remote: GitLab: You are not allowed to push code to protected branches on this project\.([\s\S]+)\[remote rejected\] #{branch_name} -> #{branch_name} \(pre-receive hook declined\)/) end end diff --git a/qa/spec/git/repository_spec.rb b/qa/spec/git/repository_spec.rb index 62c81050bd9..0ded33a73a2 100644 --- a/qa/spec/git/repository_spec.rb +++ b/qa/spec/git/repository_spec.rb @@ -39,7 +39,7 @@ describe QA::Git::Repository do describe '#clone' do it 'is unable to resolve host' do - expect(repository.clone).to include("fatal: unable to access 'http://root@foo/bar.git/'") + expect { repository.clone }.to raise_error(described_class::RepositoryCommandError, /The command .* failed \(128\) with the following output/) end end @@ -49,7 +49,7 @@ describe QA::Git::Repository do end it 'fails to push changes' do - expect(repository.push_changes).to include("error: failed to push some refs to 'http://root@foo/bar.git'") + expect { repository.push_changes }.to raise_error(described_class::RepositoryCommandError, /The command .* failed \(1\) with the following output/) end end |