flakey_spec_catcher 0.7.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bbde8c00cdc9c8c24d9d81572fe3217d73114d7d360a87ff4f08adea746aae55
|
4
|
+
data.tar.gz: 8142ae2b56440f6a53db1b03c3e736a5556aed9c31945e0ccfbfc3a5d9df5b3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69f5f46b6dc7a8cf31c030b16a3a129dc5768b60214abc9cf603facc4ad3c94d2ee2df7a08838c9b033d91941dc7af4b388861f94b0f539466a107b2dfd10a7c
|
7
|
+
data.tar.gz: 72325c48ca9c58ab7f65f569905b3a4782b9678cf608f86c9b8982f4b6cc70c797e5a6ee6ab04c7d35c1c9275c35d48d9b1f38b1e9d60e08bf8caf357db08db2
|
@@ -7,7 +7,7 @@ module FlakeySpecCatcher
|
|
7
7
|
#
|
8
8
|
# Captures command line arguments for manual re-runs
|
9
9
|
class CliOverride
|
10
|
-
attr_reader :
|
10
|
+
attr_reader :rerun_patterns, :rerun_usage, :repeat_factor, :enable_runs, :excluded_tags
|
11
11
|
|
12
12
|
def initialize
|
13
13
|
@enable_runs = true
|
@@ -23,19 +23,20 @@ module FlakeySpecCatcher
|
|
23
23
|
opts.banner = 'Usage: flakey_spec_catcher [OPTIONS]'
|
24
24
|
|
25
25
|
opts.on('-t', '--test=TEST_NAME',
|
26
|
-
'Specify
|
27
|
-
|
26
|
+
'Specify one or more specs in comma separated list ' \
|
27
|
+
'as `<path/to/file:line_number>, <path/to/file:line_number>...`') do |test|
|
28
|
+
@rerun_patterns = remove_formatter_quotes(test)
|
28
29
|
end
|
29
30
|
|
30
31
|
opts.on('-u', '--usage=USAGE', 'Specify a re-run usage for the manual re-run') do |usage|
|
31
|
-
raise ArgumentError if @
|
32
|
+
raise ArgumentError if @rerun_patterns.nil?
|
32
33
|
|
33
34
|
@rerun_usage = remove_formatter_quotes(usage)
|
34
35
|
end
|
35
36
|
|
36
37
|
opts.on('-r', '--repeat=REPEAT_FACTOR',
|
37
38
|
'Specify a repeat factor for the manual re-run(s)') do |repeat|
|
38
|
-
raise ArgumentError if @
|
39
|
+
raise ArgumentError if @rerun_patterns.nil?
|
39
40
|
|
40
41
|
parsed_repeat_factor = remove_formatter_quotes(repeat).to_i
|
41
42
|
@repeat_factor = parsed_repeat_factor if parsed_repeat_factor.positive?
|
@@ -20,11 +20,11 @@ module FlakeySpecCatcher
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def determine_rerun_usage
|
23
|
-
if @user_config.
|
23
|
+
if @user_config.manual_rerun_patterns.nil?
|
24
24
|
pair_reruns_with_usages
|
25
25
|
else
|
26
26
|
@rerun_capsules.clear
|
27
|
-
inject_manual_reruns(@user_config.
|
27
|
+
inject_manual_reruns(@user_config.manual_rerun_patterns,
|
28
28
|
@user_config.manual_rerun_usage)
|
29
29
|
end
|
30
30
|
end
|
@@ -81,31 +81,33 @@ module FlakeySpecCatcher
|
|
81
81
|
end
|
82
82
|
|
83
83
|
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
84
|
-
def inject_manual_reruns(
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
end
|
95
|
-
|
96
|
-
# It won't make sense to have multiple files to run with one specific line number
|
97
|
-
if line_number_present
|
98
|
-
if matching_files.count > 1
|
99
|
-
puts "Specified pattern #{pattern} matched multiple files but a line number was specified"
|
84
|
+
def inject_manual_reruns(patterns, usage)
|
85
|
+
patterns.tr(' ', '').split(',').each do |pattern|
|
86
|
+
# Check if file exists first and handle if user supplies testcase:line_number
|
87
|
+
file_name = pattern.split(':')[0]
|
88
|
+
line_number_present = pattern.split(':').count > 1
|
89
|
+
matching_files = Dir.glob(file_name)
|
90
|
+
|
91
|
+
# If no file matches are run, don't queue up re-runs
|
92
|
+
if matching_files.count.zero?
|
93
|
+
puts "Specified pattern #{pattern} did not match an existing file"
|
100
94
|
raise ArgumentError
|
101
|
-
else
|
102
|
-
add_rerun_capsule(testcase: pattern, usage: usage)
|
103
95
|
end
|
104
96
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
97
|
+
# It won't make sense to have multiple files to run with one specific line number
|
98
|
+
if line_number_present
|
99
|
+
if matching_files.count > 1
|
100
|
+
puts "Specified pattern #{pattern} matched multiple files but a line number was given"
|
101
|
+
raise ArgumentError
|
102
|
+
else
|
103
|
+
add_rerun_capsule(testcase: pattern, usage: usage)
|
104
|
+
end
|
105
|
+
|
106
|
+
# No line numbers, queue up all matching files
|
107
|
+
else
|
108
|
+
matching_files.each do |file|
|
109
|
+
add_rerun_capsule(testcase: file, usage: usage)
|
110
|
+
end
|
109
111
|
end
|
110
112
|
end
|
111
113
|
end
|
@@ -10,7 +10,7 @@ module FlakeySpecCatcher
|
|
10
10
|
class UserConfig
|
11
11
|
attr_reader :repeat_factor, :ignore_files, :ignore_branches, :silent_mode
|
12
12
|
attr_reader :rerun_file_only, :rspec_usage_patterns, :excluded_tags
|
13
|
-
attr_reader :
|
13
|
+
attr_reader :manual_rerun_patterns, :manual_rerun_usage
|
14
14
|
attr_reader :enable_runs
|
15
15
|
|
16
16
|
USER_CONFIG_ENV_VARS = %w[FSC_REPEAT_FACTOR FSC_IGNORE_FILES FSC_IGNORE_BRANCHES
|
@@ -38,13 +38,13 @@ module FlakeySpecCatcher
|
|
38
38
|
|
39
39
|
def override_settings
|
40
40
|
apply_cli_override
|
41
|
-
return unless @
|
41
|
+
return unless @manual_rerun_patterns.nil?
|
42
42
|
|
43
43
|
parse_commit_message
|
44
44
|
end
|
45
45
|
|
46
46
|
def apply_cli_override
|
47
|
-
@
|
47
|
+
@manual_rerun_patterns = @cli_override.rerun_patterns
|
48
48
|
@manual_rerun_usage = @cli_override.rerun_usage
|
49
49
|
@repeat_factor = @cli_override.repeat_factor if @cli_override.repeat_factor.to_i.positive?
|
50
50
|
@enable_runs = @cli_override.enable_runs
|