Module: Testament::Probe
- Defined in:
- lib/testament/probe.rb,
lib/testament/probe/version.rb
Defined Under Namespace
Modules: MinitestIntegration
Constant Summary
collapse
- DEFAULT_OUTPUT =
".testament/per-test-coverage.json"
- DEFAULT_TRACE_OUTPUT =
".testament/trace.json"
- DEFAULT_TRACE_WINDOW =
200
- ASSERTION_METHODS =
%i[
expect should should_not to not_to to_not
assert assert_equal assert_same assert_nil assert_not_nil assert_empty
assert_includes assert_match assert_operator assert_predicate
assert_instance_of assert_kind_of assert_raises assert_throws
assert_output assert_silent
refute refute_equal refute_same refute_nil refute_empty
refute_includes refute_match refute_operator refute_predicate
refute_instance_of refute_kind_of
must_be must_equal must_include must_match must_raise must_be_nil
wont_be wont_equal wont_include wont_match wont_be_nil
].freeze
- VERSION =
"0.1.0"
Class Method Summary
collapse
Class Method Details
.install!(output: ENV.fetch("TESTAMENT_PROBE_OUTPUT", DEFAULT_OUTPUT), trace_output: ENV.fetch("TESTAMENT_TRACE_OUTPUT", DEFAULT_TRACE_OUTPUT)) ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/testament/probe.rb', line 25
def install!(
output: ENV.fetch("TESTAMENT_PROBE_OUTPUT", DEFAULT_OUTPUT),
trace_output: ENV.fetch("TESTAMENT_TRACE_OUTPUT", DEFAULT_TRACE_OUTPUT)
)
@output = output
@trace_output = trace_output
@root = File.expand_path(ENV.fetch("TESTAMENT_PROJECT_ROOT", Dir.pwd))
@probe_file = File.expand_path(__FILE__)
@trace_window = ENV.fetch("TESTAMENT_TRACE_WINDOW", DEFAULT_TRACE_WINDOW).to_i
@trace_enabled = ENV.fetch("TESTAMENT_TRACE", "1") != "0"
start_coverage
capture_coverage
install_rspec if defined?(RSpec)
install_minitest if defined?(Minitest::Test)
at_exit { write! }
end
|
.record(case_id) ⇒ Object
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/testament/probe.rb', line 42
def record(case_id)
start_coverage
start_trace
previous_case = @current_case
previous_recent_lines = @recent_lines
previous_assertion_depth = @assertion_depth
@recent_lines = []
@assertion_depth = 0
@current_case = case_id
trace_cases[case_id]
yield
ensure
merge_case(case_id, capture_coverage) if case_id
@recent_lines = previous_recent_lines || []
@assertion_depth = previous_assertion_depth || 0
@current_case = previous_case
end
|
.write! ⇒ Object
60
61
62
63
64
65
66
67
68
|
# File 'lib/testament/probe.rb', line 60
def write!
output = @output || DEFAULT_OUTPUT
FileUtils.mkdir_p(File.dirname(output))
File.write(output, JSON.pretty_generate("cases" => cases))
trace_output = @trace_output || DEFAULT_TRACE_OUTPUT
FileUtils.mkdir_p(File.dirname(trace_output))
File.write(trace_output, JSON.pretty_generate("cases" => trace_cases))
end
|