From 95b5832366e4bd809bc55641e9c8cb93234b0330 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Coutable?= Date: Thu, 29 Nov 2018 16:39:00 +0100 Subject: [QA] Fail early if a Git command fails MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rémy Coutable --- qa/qa/git/repository.rb | 5 +++++ .../browser_ui/3_create/repository/push_protected_branch_spec.rb | 7 +------ qa/spec/git/repository_spec.rb | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) (limited to 'qa') 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 -- cgit v1.2.1