-
Notifications
You must be signed in to change notification settings - Fork 27
/
minitest_runner.rb
65 lines (49 loc) · 1.94 KB
/
minitest_runner.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
module KnapsackPro
module Runners
module Queue
class MinitestRunner < BaseRunner
def self.run(args)
require 'minitest'
ENV['KNAPSACK_PRO_TEST_SUITE_TOKEN'] = KnapsackPro::Config::Env.test_suite_token_minitest
ENV['KNAPSACK_PRO_QUEUE_RECORDING_ENABLED'] = 'true'
ENV['KNAPSACK_PRO_QUEUE_ID'] = KnapsackPro::Config::EnvGenerator.set_queue_id
runner = new(KnapsackPro::Adapters::MinitestAdapter)
# Add test_dir to load path to make work:
# require 'test_helper'
# in test files.
$LOAD_PATH.unshift(runner.test_dir)
run_tests(runner, true, args, 0, [])
end
def self.run_tests(runner, can_initialize_queue, args, exitstatus, all_test_file_paths)
test_file_paths = runner.test_file_paths(
can_initialize_queue: can_initialize_queue,
executed_test_files: all_test_file_paths
)
if test_file_paths.empty?
KnapsackPro::Hooks::Queue.call_after_queue
KnapsackPro::Report.save_node_queue_to_api
exit(exitstatus)
else
subset_queue_id = KnapsackPro::Config::EnvGenerator.set_subset_queue_id
ENV['KNAPSACK_PRO_SUBSET_QUEUE_ID'] = subset_queue_id
all_test_file_paths += test_file_paths
result = minitest_run(runner, test_file_paths, args)
exitstatus = 1 unless result
KnapsackPro::Hooks::Queue.call_after_subset_queue
run_tests(runner, false, args, exitstatus, all_test_file_paths)
end
end
private
def self.minitest_run(runner, test_file_paths, args)
test_file_paths.each do |test_file_path|
require "./#{test_file_path}"
end
cli_args = (args || '').split
result = Minitest.run(cli_args)
Minitest::Runnable.reset
result
end
end
end
end
end