Class: DiffTest::Trackers::SingletonBase

Inherits:
Base
  • Object
show all
Defined in:
lib/diff_test/trackers/singleton_base.rb

Direct Known Subclasses

JsFile

Instance Attribute Summary

Attributes inherited from Base

#impacted_files

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#initialize, #record

Constructor Details

This class inherits a constructor from DiffTest::Trackers::Base

Class Method Details

.active_instancesObject



5
6
7
# File 'lib/diff_test/trackers/singleton_base.rb', line 5

def self.active_instances
  @_active_instances ||= Set.new
end

.record(path) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/diff_test/trackers/singleton_base.rb', line 17

def self.record(path)
  recordable_path = self.recordable_path(path)
  return unless recordable_path

  puts "DiffTest: Recording #{recordable_path} but no active instances" if active_instances.empty?
  active_instances.each do |instance|
    instance.record(recordable_path)
  end
end

.record_by_test_id(test_id, path) ⇒ Object



27
28
29
30
31
32
# File 'lib/diff_test/trackers/singleton_base.rb', line 27

def self.record_by_test_id(test_id, path)
  recordable_path = self.recordable_path(path)
  return unless recordable_path

  DiffTest::TestExecution.get(test_id).impacted_file_tracker.trackers.find { |tracker| tracker.class == self }.record(recordable_path)
end

.recordable_path(path) ⇒ Object



9
10
11
12
13
14
15
# File 'lib/diff_test/trackers/singleton_base.rb', line 9

def self.recordable_path(path)
  path = path&.to_s
  path = DiffTest::Helper.expand_path(path)
  return unless DiffTest::Helper.file_in_project?(path)

  DiffTest::Helper.relative_path_from_project_root(path)
end

Instance Method Details

#pauseObject



46
47
48
# File 'lib/diff_test/trackers/singleton_base.rb', line 46

def pause
  stop
end

#resumeObject



42
43
44
# File 'lib/diff_test/trackers/singleton_base.rb', line 42

def resume
  start
end

#startObject



34
35
36
# File 'lib/diff_test/trackers/singleton_base.rb', line 34

def start
  self.class.active_instances.add(self)
end

#stopObject



38
39
40
# File 'lib/diff_test/trackers/singleton_base.rb', line 38

def stop
  self.class.active_instances.delete(self)
end