test_bench 1.0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/lib/test_bench.rb +37 -0
  3. data/lib/test_bench/cli.rb +43 -0
  4. data/lib/test_bench/cli/parse_arguments.rb +168 -0
  5. data/lib/test_bench/controls.rb +22 -0
  6. data/lib/test_bench/controls/caller_location.rb +5 -0
  7. data/lib/test_bench/controls/depth.rb +21 -0
  8. data/lib/test_bench/controls/device.rb +27 -0
  9. data/lib/test_bench/controls/directory.rb +15 -0
  10. data/lib/test_bench/controls/error.rb +35 -0
  11. data/lib/test_bench/controls/fixture.rb +29 -0
  12. data/lib/test_bench/controls/output/escape_code.rb +23 -0
  13. data/lib/test_bench/controls/output/newline_character.rb +11 -0
  14. data/lib/test_bench/controls/output/print_error.rb +19 -0
  15. data/lib/test_bench/controls/output/styling.rb +29 -0
  16. data/lib/test_bench/controls/output/summary/error.rb +44 -0
  17. data/lib/test_bench/controls/output/summary/run.rb +59 -0
  18. data/lib/test_bench/controls/path.rb +15 -0
  19. data/lib/test_bench/controls/pattern.rb +29 -0
  20. data/lib/test_bench/controls/result.rb +5 -0
  21. data/lib/test_bench/controls/test_file.rb +5 -0
  22. data/lib/test_bench/controls/time.rb +61 -0
  23. data/lib/test_bench/deactivation_variants.rb +21 -0
  24. data/lib/test_bench/environment/boolean.rb +40 -0
  25. data/lib/test_bench/fixtures.rb +3 -0
  26. data/lib/test_bench/fixtures/configure_receiver.rb +80 -0
  27. data/lib/test_bench/output.rb +9 -0
  28. data/lib/test_bench/output/build.rb +57 -0
  29. data/lib/test_bench/output/levels/debug.rb +229 -0
  30. data/lib/test_bench/output/levels/failure.rb +31 -0
  31. data/lib/test_bench/output/levels/none.rb +13 -0
  32. data/lib/test_bench/output/levels/pass.rb +274 -0
  33. data/lib/test_bench/output/levels/summary.rb +21 -0
  34. data/lib/test_bench/output/print_error.rb +163 -0
  35. data/lib/test_bench/output/summary/error.rb +77 -0
  36. data/lib/test_bench/output/summary/run.rb +102 -0
  37. data/lib/test_bench/output/summary/run/print.rb +98 -0
  38. data/lib/test_bench/output/timer.rb +75 -0
  39. data/lib/test_bench/output/timer/substitute.rb +45 -0
  40. data/lib/test_bench/output/writer.rb +192 -0
  41. data/lib/test_bench/output/writer/dependency.rb +12 -0
  42. data/lib/test_bench/output/writer/sgr.rb +54 -0
  43. data/lib/test_bench/output/writer/substitute.rb +38 -0
  44. data/lib/test_bench/run.rb +103 -0
  45. data/lib/test_bench/run/substitute.rb +36 -0
  46. data/lib/test_bench/test_bench.rb +76 -0
  47. data/script/bench +19 -0
  48. metadata +117 -0
@@ -0,0 +1,36 @@
1
+ module TestBench
2
+ class Run
3
+ module Substitute
4
+ def self.build
5
+ Run.new
6
+ end
7
+
8
+ class Run
9
+ attr_accessor :ran
10
+
11
+ def paths
12
+ @paths ||= []
13
+ end
14
+
15
+ def call(&block)
16
+ self.ran = true
17
+
18
+ block.(self) unless block.nil?
19
+ end
20
+
21
+ def path(path)
22
+ paths << path
23
+ end
24
+ alias_method :<<, :path
25
+
26
+ def ran?(*paths)
27
+ return false unless ran
28
+
29
+ paths.all? do |path|
30
+ self.paths.include?(path)
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,76 @@
1
+ module TestBench
2
+ def self.session
3
+ @session ||= build_session.tap do |session|
4
+ at_exit do
5
+ exit 1 if session.failed?
6
+ end
7
+ end
8
+ end
9
+ singleton_class.attr_writer(:session)
10
+
11
+ def self.output
12
+ session.output
13
+ end
14
+
15
+ def self.set_output(output, session: nil)
16
+ session ||= self.session
17
+
18
+ if output.is_a?(Array)
19
+ output = Fixture::Output::Multiple.build(*output)
20
+ end
21
+
22
+ session.output = output
23
+ end
24
+ singleton_class.alias_method :output=, :set_output
25
+
26
+ def self.activate(receiver=nil, session: nil)
27
+ receiver ||= TOPLEVEL_BINDING.receiver
28
+
29
+ fixture(session, receiver: receiver)
30
+ end
31
+
32
+ def self.evaluate(session: nil, &block)
33
+ fixture = fixture(session)
34
+
35
+ fixture.context do
36
+ fixture.instance_exec(&block)
37
+ end
38
+ end
39
+
40
+ def self.fixture(session=nil, receiver: nil)
41
+ session ||= self.session
42
+ receiver ||= Object.new
43
+
44
+ receiver.extend(Fixture)
45
+ receiver.extend(DeactivationVariants)
46
+
47
+ receiver.test_session = session
48
+
49
+ receiver
50
+ end
51
+
52
+ def self.build_session(output: nil, abort_on_error: nil, **args)
53
+ output ||= Output.build
54
+ error_policy = session_error_policy(abort_on_error)
55
+
56
+ Fixture::Session.build(output: output, error_policy: error_policy, **args)
57
+ end
58
+
59
+ def self.session_error_policy(abort_on_error=nil)
60
+ abort_on_error = Session::Defaults.abort_on_error if abort_on_error.nil?
61
+
62
+ if abort_on_error
63
+ :abort
64
+ else
65
+ :rescue
66
+ end
67
+ end
68
+
69
+ Session = Fixture::Session
70
+
71
+ module Session::Defaults
72
+ def self.abort_on_error
73
+ Environment::Boolean.fetch('TEST_BENCH_ABORT_ON_ERROR', false)
74
+ end
75
+ end
76
+ end
data/script/bench ADDED
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'test_bench'
5
+ rescue LoadError => load_error
6
+ end
7
+
8
+ unless load_error.nil?
9
+ if File.exist?('init.rb')
10
+ require_relative '../init.rb'
11
+ require 'test_bench'
12
+
13
+ ENV['BOOTSTRAP'] ||= 'off'
14
+ else
15
+ raise load_error
16
+ end
17
+ end
18
+
19
+ TestBench::CLI.()
metadata ADDED
@@ -0,0 +1,117 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: test_bench
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Nathan Ladd
8
+ autorequire:
9
+ bindir: script
10
+ cert_chain: []
11
+ date: 2020-06-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: test_bench-fixture
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: test_bench-bootstrap
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description:
42
+ email: nathanladd+github@gmail.com
43
+ executables:
44
+ - bench
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - lib/test_bench.rb
49
+ - lib/test_bench/cli.rb
50
+ - lib/test_bench/cli/parse_arguments.rb
51
+ - lib/test_bench/controls.rb
52
+ - lib/test_bench/controls/caller_location.rb
53
+ - lib/test_bench/controls/depth.rb
54
+ - lib/test_bench/controls/device.rb
55
+ - lib/test_bench/controls/directory.rb
56
+ - lib/test_bench/controls/error.rb
57
+ - lib/test_bench/controls/fixture.rb
58
+ - lib/test_bench/controls/output/escape_code.rb
59
+ - lib/test_bench/controls/output/newline_character.rb
60
+ - lib/test_bench/controls/output/print_error.rb
61
+ - lib/test_bench/controls/output/styling.rb
62
+ - lib/test_bench/controls/output/summary/error.rb
63
+ - lib/test_bench/controls/output/summary/run.rb
64
+ - lib/test_bench/controls/path.rb
65
+ - lib/test_bench/controls/pattern.rb
66
+ - lib/test_bench/controls/result.rb
67
+ - lib/test_bench/controls/test_file.rb
68
+ - lib/test_bench/controls/time.rb
69
+ - lib/test_bench/deactivation_variants.rb
70
+ - lib/test_bench/environment/boolean.rb
71
+ - lib/test_bench/fixtures.rb
72
+ - lib/test_bench/fixtures/configure_receiver.rb
73
+ - lib/test_bench/output.rb
74
+ - lib/test_bench/output/build.rb
75
+ - lib/test_bench/output/levels/debug.rb
76
+ - lib/test_bench/output/levels/failure.rb
77
+ - lib/test_bench/output/levels/none.rb
78
+ - lib/test_bench/output/levels/pass.rb
79
+ - lib/test_bench/output/levels/summary.rb
80
+ - lib/test_bench/output/print_error.rb
81
+ - lib/test_bench/output/summary/error.rb
82
+ - lib/test_bench/output/summary/run.rb
83
+ - lib/test_bench/output/summary/run/print.rb
84
+ - lib/test_bench/output/timer.rb
85
+ - lib/test_bench/output/timer/substitute.rb
86
+ - lib/test_bench/output/writer.rb
87
+ - lib/test_bench/output/writer/dependency.rb
88
+ - lib/test_bench/output/writer/sgr.rb
89
+ - lib/test_bench/output/writer/substitute.rb
90
+ - lib/test_bench/run.rb
91
+ - lib/test_bench/run/substitute.rb
92
+ - lib/test_bench/test_bench.rb
93
+ - script/bench
94
+ homepage: https://github.com/test-bench/test-bench
95
+ licenses:
96
+ - MIT
97
+ metadata: {}
98
+ post_install_message:
99
+ rdoc_options: []
100
+ require_paths:
101
+ - lib
102
+ required_ruby_version: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ required_rubygems_version: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ requirements: []
113
+ rubygems_version: 3.1.2
114
+ signing_key:
115
+ specification_version: 4
116
+ summary: Principled Test Framework for Ruby
117
+ test_files: []