Class: Kaisoku::Selector
- Inherits:
-
Object
- Object
- Kaisoku::Selector
- Defined in:
- lib/kaisoku/selector.rb
Instance Method Summary collapse
-
#initialize(test_map:, configuration: Configuration.new, checksum: Checksum.new, static_analyzer: StaticAnalysis::Analyzer.new(configuration: configuration), rails_integration: Rails::Integration.new(configuration: configuration), hybrid_policy: nil) ⇒ Selector
constructor
A new instance of Selector.
- #select(changed_paths:, all_entities:) ⇒ Object
Constructor Details
#initialize(test_map:, configuration: Configuration.new, checksum: Checksum.new, static_analyzer: StaticAnalysis::Analyzer.new(configuration: configuration), rails_integration: Rails::Integration.new(configuration: configuration), hybrid_policy: nil) ⇒ Selector
Returns a new instance of Selector.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/kaisoku/selector.rb', line 5 def initialize( test_map:, configuration: Configuration.new, checksum: Checksum.new, static_analyzer: StaticAnalysis::Analyzer.new(configuration: configuration), rails_integration: Rails::Integration.new(configuration: configuration), hybrid_policy: nil ) @test_map = test_map @configuration = configuration @checksum = checksum @static_analyzer = static_analyzer @method_map = MethodMap.new(configuration: configuration) @rails_integration = rails_integration @hybrid_policy = hybrid_policy || HybridPolicy.new(test_map: test_map, configuration: configuration) end |
Instance Method Details
#select(changed_paths:, all_entities:) ⇒ Object
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 |
# File 'lib/kaisoku/selector.rb', line 22 def select(changed_paths:, all_entities:) entities = Array(all_entities) paths = Array(changed_paths).map { |path| @configuration.relative_path(path) }.uniq return Selection.all(entities: entities, reason: 'test map is empty') if @test_map.empty? invalidating = paths.select { |path| @configuration.invalidates_map?(path) } unless invalidating.empty? return Selection.all( entities: entities, reason: "map invalidating file changed: #{invalidating.join(', ')}", invalidate_map: true ) end boot_files = paths.select { |path| @configuration.boot_impact_file?(path) } unless boot_files.empty? rails_selection = rails_boot_selection(boot_files, entities) return rails_selection if rails_selection return Selection.all( entities: entities, reason: "boot-impact file changed: #{boot_files.join(', ')}" ) end select_from_known_changes(paths, entities) end |