summaryrefslogtreecommitdiff
path: root/qa/qa/specs/parallel_runner.rb
diff options
context:
space:
mode:
authorMarcel Amirault <mamirault@gitlab.com>2019-07-10 05:56:23 +0000
committerMarcel Amirault <mamirault@gitlab.com>2019-07-10 05:56:23 +0000
commit2b03a0c2cf699074ec37a863e5c752a2cab2b133 (patch)
tree7ebc289d2ec498fcebf8ae454cdb1eb1ef500dbd /qa/qa/specs/parallel_runner.rb
parentc0deda7a86796c5de6ebe376c83f55af0965bde3 (diff)
parent810df4fb51bf3db4016c5f7458599331d4586300 (diff)
downloadgitlab-ce-2b03a0c2cf699074ec37a863e5c752a2cab2b133.tar.gz
Merge branch 'master' into 'docs-hard-tabs'docs-hard-tabs
# Conflicts: # doc/administration/pseudonymizer.md # doc/administration/uploads.md
Diffstat (limited to 'qa/qa/specs/parallel_runner.rb')
-rw-r--r--qa/qa/specs/parallel_runner.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/qa/qa/specs/parallel_runner.rb b/qa/qa/specs/parallel_runner.rb
new file mode 100644
index 00000000000..b92fdb610b6
--- /dev/null
+++ b/qa/qa/specs/parallel_runner.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+require 'open3'
+
+module QA
+ module Specs
+ module ParallelRunner
+ module_function
+
+ def run(args)
+ unless args.include?('--')
+ index = args.index { |opt| opt.include?('features') }
+
+ args.insert(index, '--') if index
+ end
+
+ env = {}
+ Runtime::Env::ENV_VARIABLES.each_key do |key|
+ env[key] = ENV[key] if ENV[key]
+ end
+ env['QA_RUNTIME_SCENARIO_ATTRIBUTES'] = Runtime::Scenario.attributes.to_json
+ env['GITLAB_QA_ACCESS_TOKEN'] = Runtime::API::Client.new(:gitlab).personal_access_token unless env['GITLAB_QA_ACCESS_TOKEN']
+
+ cmd = "bundle exec parallel_test -t rspec --combine-stderr --serialize-stdout -- #{args.flatten.join(' ')}"
+ ::Open3.popen2e(env, cmd) do |_, out, wait|
+ out.each { |line| puts line }
+
+ exit wait.value.exitstatus
+ end
+ end
+ end
+ end
+end