diff options
author | Rémy Coutable <remy@rymai.me> | 2018-11-29 16:39:00 +0100 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2019-02-28 18:15:51 +0100 |
commit | 95b5832366e4bd809bc55641e9c8cb93234b0330 (patch) | |
tree | 302700c4fa1eeb839e78d7782576fa032fb8fd30 /qa | |
parent | 790a51a42778b3aa3fb5c8c5afe687ef06dd4433 (diff) | |
download | gitlab-ce-95b5832366e4bd809bc55641e9c8cb93234b0330.tar.gz |
[QA] Fail early if a Git command fails
Signed-off-by: Rémy Coutable <remy@rymai.me>
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 |