Class: DiffTest::TestExecution

Inherits:
Object
  • Object
show all
Defined in:
lib/diff_test/test_execution.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(test_file_path:, test_name:) ⇒ TestExecution

Returns a new instance of TestExecution.



7
8
9
10
11
12
13
14
# File 'lib/diff_test/test_execution.rb', line 7

def initialize(test_file_path:, test_name:)
  @test_file_path = test_file_path
  @test_name = test_name
  @result = :queued
  @started_at = @stopped_at = Process.clock_gettime(Process::CLOCK_MONOTONIC)
  @impacted_file_tracker  = DiffTest::ImpactedFileTracker.new
  self.class.set(id, self)
end

Instance Attribute Details

#impacted_file_trackerObject (readonly)

Returns the value of attribute impacted_file_tracker.



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

def impacted_file_tracker
  @impacted_file_tracker
end

Class Method Details

.currentObject



104
105
106
# File 'lib/diff_test/test_execution.rb', line 104

def self.current
  @current
end

.current=(instance) ⇒ Object



108
109
110
# File 'lib/diff_test/test_execution.rb', line 108

def self.current=(instance)
  @current = instance
end

.get(test_id) ⇒ Object



100
101
102
# File 'lib/diff_test/test_execution.rb', line 100

def self.get(test_id)
  @by_id[test_id]
end

.set(test_id, instance) ⇒ Object



95
96
97
98
# File 'lib/diff_test/test_execution.rb', line 95

def self.set(test_id, instance)
  @by_id ||= {}
  @by_id[test_id] = instance
end

Instance Method Details

#failed!Object



70
71
72
# File 'lib/diff_test/test_execution.rb', line 70

def failed!
  @result = :failed
end

#finishObject



54
55
56
# File 'lib/diff_test/test_execution.rb', line 54

def finish
  DiffTest::TestSuiteExecution.current.record_test_execution(self)
end

#idObject



37
38
39
# File 'lib/diff_test/test_execution.rb', line 37

def id
  @id ||= DiffTest::Helper.test_id(@test_file_path, @test_name)
end

#not_run!Object



58
59
60
# File 'lib/diff_test/test_execution.rb', line 58

def not_run!
  @result = :not_run
end

#passed!Object



66
67
68
# File 'lib/diff_test/test_execution.rb', line 66

def passed!
  @result = :passed
end

#passed?Boolean

Returns:

  • (Boolean)


74
75
76
# File 'lib/diff_test/test_execution.rb', line 74

def passed?
  @result == :passed
end

#previous_runtime_sObject



24
25
26
# File 'lib/diff_test/test_execution.rb', line 24

def previous_runtime_s
  (should_run_decider_result[:previous_runtime_ms] / 1000.0) if should_run_decider_result[:previous_runtime_ms]
end

#runtime_msObject



86
87
88
89
# File 'lib/diff_test/test_execution.rb', line 86

def runtime_ms
  return 0 if @stopped_at.nil? || @started_at.nil?
  (@stopped_at - @started_at) * 1000
end

#save_payloadObject



28
29
30
31
32
33
34
35
# File 'lib/diff_test/test_execution.rb', line 28

def save_payload
  {
    test: id,
    result: @result,
    runtime_ms: runtime_ms,
    impacted_files: (@impacted_file_tracker.save_payload if successful?),
  }.compact
end

#should_run?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/diff_test/test_execution.rb', line 20

def should_run?
  should_run_decider_result[:should_run]
end

#should_run_decider_resultObject



16
17
18
# File 'lib/diff_test/test_execution.rb', line 16

def should_run_decider_result
  @should_run_decider_result ||= DiffTest::ShouldRunDecider.should_run?(id, system_test: system_test?)
end

#skipped!Object



62
63
64
# File 'lib/diff_test/test_execution.rb', line 62

def skipped!
  @result = :skipped
end

#skipped?Boolean

Returns:

  • (Boolean)


78
79
80
# File 'lib/diff_test/test_execution.rb', line 78

def skipped?
  @result == :skipped
end

#startObject



41
42
43
44
45
# File 'lib/diff_test/test_execution.rb', line 41

def start
  DiffTest::Helper.log("TestExecution.start: #{id}")
  @impacted_file_tracker.start
  @started_at = Process.clock_gettime(Process::CLOCK_MONOTONIC)
end

#stopObject



47
48
49
50
51
52
# File 'lib/diff_test/test_execution.rb', line 47

def stop
  @impacted_file_tracker.stop
  @stopped_at = Process.clock_gettime(Process::CLOCK_MONOTONIC)
  DiffTest::Helper.log("TestExecution.stop: #{id}")
  finish
end

#successful?Boolean

Returns:

  • (Boolean)


82
83
84
# File 'lib/diff_test/test_execution.rb', line 82

def successful?
  passed? || skipped?
end

#system_test?Boolean

Returns:

  • (Boolean)


91
92
93
# File 'lib/diff_test/test_execution.rb', line 91

def system_test?
  DiffTest.configuration.system_test_paths.include?(@test_file_path)
end