spectracer 1.1.1 → 1.2.0

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: ec084cfa2b4ba57751dd63c7154d82bdd2606e49eee854b0d01101a4f6b723d7
4
- data.tar.gz: c0dca0ded1cb615ba2603facd9ab3e9cb8842bcb2ef952b77803233a911fdf56
3
+ metadata.gz: 2bbbcdd6d7c46e2cb7fe5d192b4f2e16022c4982844a66751c73032514f66914
4
+ data.tar.gz: 70bc03c6c1faa3232a92bd062bfd42a5e2893aea11538db0c94b2a7d516df946
5
5
  SHA512:
6
- metadata.gz: 0a3aa4ec6146fe2febbb0cf3bedffc6e93708a3fcf1959263096efcd80f0da9842ef71d91e57295607585500f3270c3aeb0d5e327bd802309821fcc633873fc0
7
- data.tar.gz: 7050fd7a5ac675f4f0b5f815b4d98c7e993176164b9fd1ec351a809763a1477fc9ac693f7bee4e42a0365ba7a17cb9c9ba36df5a343b52873ee1c78351b99ae1
6
+ metadata.gz: ea4c07133b4c81c73b4092f4bf46b88f8aafe3c1c9a176b08378b70dfbf043cb91bc6556300f17a5f528753bf2c7e01de0850ca851c5b3184e677b362a5fb1f5
7
+ data.tar.gz: 32754832d52ee9b5729cea19f87417446138925a92475951e92d932d31da67c7deb5e09091c553c25a8256e6c1b910dd874176fc1072f2afb6dc23dfa6fe9afd
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.2.0] - 2026-02-02
4
+
5
+ ### Added
6
+
7
+ - Debug logging for changed files to specs mapping: when debug mode is enabled, outputs a prettified JSON map showing which specs will run for each changed file
8
+
3
9
  ## [1.1.1] - 2026-02-01
4
10
 
5
11
  ### Fixed
@@ -3,25 +3,41 @@
3
3
  module Spectracer
4
4
  module Core
5
5
  class SpecSelector
6
+ Result = Struct.new(:specs, :file_to_specs_map, keyword_init: true)
7
+
6
8
  def call(changed_files:, inverse_deps:, globs:, on_empty:)
7
9
  spec_set = Set.new
10
+ file_to_specs = {}
8
11
 
9
12
  changed_files.each do |file|
10
- spec_set.add(file) if file.end_with?("_spec.rb")
13
+ matched_specs = []
14
+
15
+ if file.end_with?("_spec.rb")
16
+ spec_set.add(file)
17
+ matched_specs << file
18
+ end
11
19
 
12
20
  file_key = file.start_with?("./") ? file : "./#{file}"
13
21
  if (specs = inverse_deps[file_key])
14
22
  spec_set.merge(specs)
23
+ matched_specs.concat(specs)
15
24
  end
16
25
 
17
26
  globs.each do |glob, pattern|
18
27
  normalized_glob = glob.sub(%r{\A\./}, "")
19
- spec_set.add(pattern) if File.fnmatch?(normalized_glob, file)
28
+ if File.fnmatch?(normalized_glob, file)
29
+ spec_set.add(pattern)
30
+ matched_specs << pattern
31
+ end
20
32
  end
33
+
34
+ file_to_specs[file] = matched_specs.uniq.sort unless matched_specs.empty?
21
35
  end
22
36
 
23
37
  files = spec_set.to_a.sort
24
- files.empty? ? on_empty : files.join(",")
38
+ specs_result = files.empty? ? on_empty : files.join(",")
39
+
40
+ Result.new(specs: specs_result, file_to_specs_map: file_to_specs)
25
41
  end
26
42
  end
27
43
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "json"
4
+
3
5
  module Spectracer
4
6
  module Orchestrators
5
7
  class SpecRunDeterminer
@@ -30,12 +32,16 @@ module Spectracer
30
32
 
31
33
  log_debug_info(config, changed_files)
32
34
 
33
- @selector.call(
35
+ result = @selector.call(
34
36
  changed_files: changed_files,
35
37
  inverse_deps: dependencies,
36
38
  globs: config[:globs],
37
39
  on_empty: config[:on_empty_spec_set]
38
40
  )
41
+
42
+ log_file_to_specs_map(result.file_to_specs_map)
43
+
44
+ result.specs
39
45
  rescue => e
40
46
  @logger&.error("Error determining specs: #{e.message}")
41
47
  @logger&.error(e.backtrace&.join("\n"))
@@ -59,6 +65,13 @@ module Spectracer
59
65
  @logger&.debug("Configuration: #{config.inspect}")
60
66
  @logger&.debug("Changed files: #{changed_files.inspect}")
61
67
  end
68
+
69
+ def log_file_to_specs_map(file_to_specs_map)
70
+ return if file_to_specs_map.empty?
71
+
72
+ @logger&.debug("Changed files to specs mapping:")
73
+ @logger&.debug(JSON.pretty_generate(file_to_specs_map))
74
+ end
62
75
  end
63
76
  end
64
77
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Spectracer
4
- VERSION = "1.1.1"
4
+ VERSION = "1.2.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spectracer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mitch Smith