Module: Kumi::Dev::Golden
- Defined in:
- lib/kumi/dev/golden.rb,
lib/kumi/dev/golden/suite.rb,
lib/kumi/dev/golden/result.rb,
lib/kumi/dev/golden/reporter.rb,
lib/kumi/dev/golden/verifier.rb,
lib/kumi/dev/golden/generator.rb,
lib/kumi/dev/golden/runtime_test.rb,
lib/kumi/dev/golden/representation.rb,
lib/kumi/dev/golden/value_normalizer.rb
Defined Under Namespace
Classes: GenerationResult, Generator, Reporter, Representation, Result, RuntimeTest, RuntimeTestResult, SchemaTestResult, Suite, ValueNormalizer, VerificationResult, Verifier
Constant Summary
collapse
- REPRESENTATIONS =
[
Representation.new("ast", extension: "txt"),
Representation.new("input_plan", extension: "txt"),
Representation.new("nast", extension: "txt"),
Representation.new("snast", extension: "txt"),
Representation.new("lir_00_unoptimized", extension: "txt"),
Representation.new("lir_01_hoist_scalar_references", extension: "txt"),
Representation.new("lir_02_inlined", extension: "txt"),
Representation.new("lir_04_1_loop_fusion", extension: "txt"),
Representation.new("lir_03_cse", extension: "txt"),
Representation.new("lir_04_loop_invcm", extension: "txt"),
Representation.new("lir_06_const_prop", extension: "txt"),
Representation.new("schema_ruby", extension: "rb"),
Representation.new("schema_javascript", extension: "mjs")
].freeze
Class Method Summary
collapse
Class Method Details
.diff!(*names) ⇒ Object
42
43
44
45
46
|
# File 'lib/kumi/dev/golden.rb', line 42
def diff!(*names)
names = [names].flatten.compact
names = nil if names.empty?
suite.diff(names)
end
|
.list ⇒ Object
28
|
# File 'lib/kumi/dev/golden.rb', line 28
def list = suite.list
|
.precompile_schemas! ⇒ Object
Precompile shared schemas so kumi_syntax_tree is available for imports
.suite ⇒ Object
77
78
79
|
# File 'lib/kumi/dev/golden.rb', line 77
def suite
@suite ||= Suite.new
end
|
.test_all_codegen!(*names_arg) ⇒ Object
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/kumi/dev/golden.rb', line 48
def test_all_codegen!(*names_arg)
names_arg = [names_arg].flatten.compact
names = names_arg.any? ? names_arg : suite.send(:schema_names)
ruby_names = suite.send(:filter_testable_schemas, names, :ruby)
ruby_results = ruby_names.map { |n| RuntimeTest.new(n, :ruby).run(suite.send(:schema_dir, n)) }
js_names = suite.send(:filter_testable_schemas, names, :javascript)
js_results = js_names.map { |n| RuntimeTest.new(n, :javascript).run(suite.send(:schema_dir, n)) }
Reporter.new.report_runtime_tests(ruby: ruby_results, javascript: js_results)
end
|
.test_codegen!(*names_arg) ⇒ Object
61
62
63
64
65
66
67
|
# File 'lib/kumi/dev/golden.rb', line 61
def test_codegen!(*names_arg)
names_arg = [names_arg].flatten.compact
names = names_arg.any? ? names_arg : suite.send(:schema_names)
testable = suite.send(:filter_testable_schemas, names, :ruby)
results = testable.map { |n| RuntimeTest.new(n, :ruby).run(suite.send(:schema_dir, n)) }
Reporter.new.report_runtime_tests(ruby: results)
end
|
.test_js_codegen!(*names_arg) ⇒ Object
69
70
71
72
73
74
75
|
# File 'lib/kumi/dev/golden.rb', line 69
def test_js_codegen!(*names_arg)
names_arg = [names_arg].flatten.compact
names = names_arg.any? ? names_arg : suite.send(:schema_names)
testable = suite.send(:filter_testable_schemas, names, :javascript)
results = testable.map { |n| RuntimeTest.new(n, :javascript).run(suite.send(:schema_dir, n)) }
Reporter.new.report_runtime_tests(javascript: results)
end
|
.update!(*names) ⇒ Object
30
31
32
33
34
|
# File 'lib/kumi/dev/golden.rb', line 30
def update!(*names)
names = [names].flatten.compact
names = nil if names.empty?
suite.update(names)
end
|
.verify!(*names) ⇒ Object
36
37
38
39
40
|
# File 'lib/kumi/dev/golden.rb', line 36
def verify!(*names)
names = [names].flatten.compact
names = nil if names.empty?
suite.verify(names)
end
|