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: 993c31c2baefd8e58b525db89b1ff79ea1d6220c2d515151fda4ce2c2bcd6df7
4
- data.tar.gz: 4760b425917fc1284e46eaaa73e8cf48f4f1f6224fc423beb18f749df6756d0f
3
+ metadata.gz: bbde8c00cdc9c8c24d9d81572fe3217d73114d7d360a87ff4f08adea746aae55
4
+ data.tar.gz: 8142ae2b56440f6a53db1b03c3e736a5556aed9c31945e0ccfbfc3a5d9df5b3b
5
5
  SHA512:
6
- metadata.gz: 59be5545a0be53ffc435a299458d665893c35b7df44d9d3c8a8522792cd3ad68069b777d0ac9bd4bc8f10850ad38f679bcaac5fa198023836fe472b633daf401
7
- data.tar.gz: aff2fe42b718049783361bf81d554182928963cc0e9bb0a4a27d9d0ceef7cc72dfbc155e24ad6a1a0c5effb5621ac35b3ae2c69f7c3ed8b16d87107eafecacc4
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 :rerun_pattern, :rerun_usage, :repeat_factor, :enable_runs, :excluded_tags
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 a spec as `path/to/file:line_number` or `file/path` to run') do |test|
27
- @rerun_pattern = remove_formatter_quotes(test)
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 @rerun_pattern.nil?
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 @rerun_pattern.nil?
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.manual_rerun_pattern.nil?
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.manual_rerun_pattern,
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(pattern, usage)
85
- # Check if file exists first and handle if user supplies testcase:line_number
86
- file_name = pattern.split(':')[0]
87
- line_number_present = pattern.split(':').count > 1
88
- matching_files = Dir.glob(file_name)
89
-
90
- # If no file matches are run, don't queue up re-runs
91
- if matching_files.count.zero?
92
- puts "Specified pattern #{pattern} did not match an existing file"
93
- raise ArgumentError
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
- # No line numbers, queue up all matching files
106
- else
107
- matching_files.each do |file|
108
- add_rerun_capsule(testcase: file, usage: usage)
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 :manual_rerun_pattern, :manual_rerun_usage
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 @manual_rerun_pattern.nil?
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
- @manual_rerun_pattern = @cli_override.rerun_pattern
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FlakeySpecCatcher
4
- VERSION = '0.7.0'
4
+ VERSION = '0.7.1'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flakey_spec_catcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Watson