test_bench 1.2.0.10 → 2.0.0.0.pre1

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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/lib/test_bench/cli.rb +268 -18
  3. data/lib/test_bench/controls/file.rb +5 -0
  4. data/lib/test_bench/controls/path.rb +1 -11
  5. data/lib/test_bench/controls/random.rb +7 -0
  6. data/lib/test_bench/controls/result.rb +1 -1
  7. data/lib/test_bench/controls/stdin.rb +27 -0
  8. data/lib/test_bench/controls.rb +7 -24
  9. data/lib/test_bench/test_bench.rb +23 -77
  10. data/lib/test_bench.rb +1 -35
  11. metadata +16 -55
  12. data/lib/test_bench/cli/parse_arguments.rb +0 -181
  13. data/lib/test_bench/controls/caller_location.rb +0 -5
  14. data/lib/test_bench/controls/depth.rb +0 -21
  15. data/lib/test_bench/controls/device.rb +0 -27
  16. data/lib/test_bench/controls/directory.rb +0 -15
  17. data/lib/test_bench/controls/error.rb +0 -35
  18. data/lib/test_bench/controls/fixture.rb +0 -29
  19. data/lib/test_bench/controls/output/batch_data.rb +0 -52
  20. data/lib/test_bench/controls/output/detail_setting.rb +0 -29
  21. data/lib/test_bench/controls/output/escape_code.rb +0 -23
  22. data/lib/test_bench/controls/output/exercise.rb +0 -7
  23. data/lib/test_bench/controls/output/log_level.rb +0 -7
  24. data/lib/test_bench/controls/output/newline_character.rb +0 -16
  25. data/lib/test_bench/controls/output/print_error.rb +0 -19
  26. data/lib/test_bench/controls/output/styling.rb +0 -29
  27. data/lib/test_bench/controls/output/summary/error.rb +0 -28
  28. data/lib/test_bench/controls/output/summary/session.rb +0 -20
  29. data/lib/test_bench/controls/pattern.rb +0 -33
  30. data/lib/test_bench/controls/test_file.rb +0 -5
  31. data/lib/test_bench/controls/time.rb +0 -89
  32. data/lib/test_bench/deactivation_variants.rb +0 -11
  33. data/lib/test_bench/environment/boolean.rb +0 -40
  34. data/lib/test_bench/fixtures/configure_receiver.rb +0 -80
  35. data/lib/test_bench/fixtures.rb +0 -5
  36. data/lib/test_bench/output/batch_data.rb +0 -17
  37. data/lib/test_bench/output/buffer.rb +0 -114
  38. data/lib/test_bench/output/log.rb +0 -27
  39. data/lib/test_bench/output/print_error.rb +0 -163
  40. data/lib/test_bench/output/raw.rb +0 -363
  41. data/lib/test_bench/output/summary/session.rb +0 -94
  42. data/lib/test_bench/output/summary.rb +0 -146
  43. data/lib/test_bench/output/timer/substitute.rb +0 -45
  44. data/lib/test_bench/output/timer.rb +0 -75
  45. data/lib/test_bench/output/writer/dependency.rb +0 -12
  46. data/lib/test_bench/output/writer/sgr.rb +0 -54
  47. data/lib/test_bench/output/writer/substitute.rb +0 -38
  48. data/lib/test_bench/output/writer.rb +0 -192
  49. data/lib/test_bench/output.rb +0 -21
  50. data/lib/test_bench/run/substitute.rb +0 -36
  51. data/lib/test_bench/run.rb +0 -113
  52. data/script/bench +0 -19
@@ -1,12 +0,0 @@
1
- module TestBench
2
- module Output
3
- class Writer
4
- module Dependency
5
- def writer
6
- @writer ||= Substitute.build
7
- end
8
- attr_writer :writer
9
- end
10
- end
11
- end
12
- end
@@ -1,54 +0,0 @@
1
- module TestBench
2
- module Output
3
- class Writer
4
- module SGR
5
- def self.escape_code(name)
6
- assure_escape_code(name)
7
-
8
- code_map.fetch(name)
9
- end
10
-
11
- def self.assure_escape_code(name)
12
- unless code_map.key?(name)
13
- raise Error, "Invalid escape code #{name.inspect} (Example values: #{code_map.keys.first(3).map(&:inspect).join(', ')})"
14
- end
15
- end
16
-
17
- def self.code_map
18
- @code_map ||= {
19
- :reset => '0',
20
-
21
- :bold => '1',
22
- :faint => '2',
23
- :italic => '3',
24
- :underline => '4',
25
-
26
- :reset_intensity => '22',
27
- :reset_italic => '23',
28
- :reset_underline => '24',
29
-
30
- :black => '30',
31
- :red => '31',
32
- :green => '32',
33
- :yellow => '33',
34
- :blue => '34',
35
- :magenta => '35',
36
- :cyan => '36',
37
- :white => '37',
38
- :reset_fg => '39',
39
-
40
- :black_bg => '40',
41
- :red_bg => '41',
42
- :green_bg => '42',
43
- :yellow_bg => '43',
44
- :blue_bg => '44',
45
- :magenta_bg => '45',
46
- :cyan_bg => '46',
47
- :white_bg => '47',
48
- :reset_bg => '49'
49
- }
50
- end
51
- end
52
- end
53
- end
54
- end
@@ -1,38 +0,0 @@
1
- module TestBench
2
- module Output
3
- class Writer
4
- module Substitute
5
- def self.build
6
- writer = Writer.new
7
- writer.styling_enabled = false
8
- writer
9
- end
10
-
11
- class Writer < Writer
12
- def written?(pattern=nil)
13
- pattern = self.pattern(pattern)
14
-
15
- written_text = device.string
16
-
17
- pattern.match?(written_text)
18
- end
19
-
20
- def pattern(pattern)
21
- case pattern
22
- when nil
23
- /./
24
- when String
25
- Regexp.new("\\A#{Regexp.escape(pattern)}\\z")
26
- else
27
- pattern
28
- end
29
- end
30
-
31
- def enable_styling!
32
- self.styling_enabled = true
33
- end
34
- end
35
- end
36
- end
37
- end
38
- end
@@ -1,192 +0,0 @@
1
- module TestBench
2
- module Output
3
- class Writer
4
- Error = Class.new(RuntimeError)
5
-
6
- def device
7
- @device ||= StringIO.new
8
- end
9
- attr_writer :device
10
-
11
- attr_accessor :styling
12
-
13
- def styling_enabled
14
- instance_variable_defined?(:@styling_enabled) ?
15
- @styling_enabled :
16
- @styling_enabled = self.class.styling?(device, styling)
17
- end
18
- attr_writer :styling_enabled
19
- alias_method :styling?, :styling_enabled
20
-
21
- def mode
22
- @mode ||= Mode.text
23
- end
24
- attr_writer :mode
25
-
26
- def byte_offset
27
- @byte_offset ||= 0
28
- end
29
- attr_writer :byte_offset
30
-
31
- def indentation_depth
32
- @indentation_depth ||= 0
33
- end
34
- attr_writer :indentation_depth
35
-
36
- def configure(styling: nil, device: nil)
37
- device ||= Defaults.device
38
-
39
- unless styling.nil?
40
- self.class.assure_styling_setting(styling)
41
- end
42
-
43
- self.device = device
44
- self.styling = styling
45
- end
46
-
47
- def self.build(device=nil, styling: nil)
48
- instance = new
49
- instance.configure(device: device, styling: styling)
50
- instance
51
- end
52
-
53
- def self.configure(receiver, writer: nil, styling: nil, device: nil, attr_name: nil)
54
- attr_name ||= :writer
55
-
56
- if writer.nil?
57
- instance = build(device, styling: styling)
58
- else
59
- instance = writer
60
- end
61
-
62
- receiver.public_send(:"#{attr_name}=", instance)
63
-
64
- instance
65
- end
66
-
67
- def text(text)
68
- if mode == Mode.escape_sequence
69
- self.mode = Mode.text
70
-
71
- write('m')
72
- end
73
-
74
- write(text)
75
-
76
- self
77
- end
78
-
79
- def escape_code(id)
80
- escape_code = SGR.escape_code(id)
81
-
82
- if mode == Mode.text
83
- return self unless styling?
84
-
85
- self.mode = Mode.escape_sequence
86
-
87
- write("\e[")
88
- else
89
- write(';')
90
- end
91
-
92
- write(escape_code)
93
-
94
- self
95
- end
96
-
97
- def sync
98
- text('')
99
- end
100
-
101
- def indent
102
- indentation = ' ' * indentation_depth
103
-
104
- text(indentation)
105
- end
106
-
107
- def newline
108
- sync
109
- device.puts('')
110
- self.byte_offset += 1
111
- self
112
- end
113
-
114
- def write(data)
115
- bytes_written = device.write(data)
116
-
117
- self.byte_offset += bytes_written
118
- end
119
-
120
- def current?(byte_offset)
121
- byte_offset >= self.byte_offset
122
- end
123
-
124
- def increase_indentation
125
- self.indentation_depth += 1
126
- end
127
-
128
- def decrease_indentation
129
- self.indentation_depth -= 1
130
- end
131
-
132
- def self.styling?(device, styling_setting=nil)
133
- styling_setting ||= Defaults.styling
134
-
135
- assure_styling_setting(styling_setting)
136
-
137
- case styling_setting
138
- when :detect
139
- device.tty?
140
- when :on
141
- true
142
- when :off
143
- false
144
- end
145
- end
146
-
147
- def self.assure_styling_setting(styling_setting)
148
- unless styling_settings.include?(styling_setting)
149
- raise Error, "Invalid output styling #{styling_setting.inspect} (Valid values: #{styling_settings.map(&:inspect).join(', ')})"
150
- end
151
- end
152
-
153
- def self.styling_settings
154
- [
155
- :detect,
156
- :on,
157
- :off
158
- ]
159
- end
160
-
161
- def self.default_styling_setting
162
- styling_settings.fetch(0)
163
- end
164
-
165
- module Mode
166
- def self.text
167
- :text
168
- end
169
-
170
- def self.escape_sequence
171
- :escape_sequence
172
- end
173
- end
174
-
175
- module Defaults
176
- def self.device
177
- $stdout
178
- end
179
-
180
- def self.styling
181
- styling = ::ENV['TEST_BENCH_OUTPUT_STYLING']
182
-
183
- if styling.nil?
184
- Writer.default_styling_setting
185
- else
186
- styling.to_sym
187
- end
188
- end
189
- end
190
- end
191
- end
192
- end
@@ -1,21 +0,0 @@
1
- module TestBench
2
- module Output
3
- def self.build(log_level: nil, writer: nil, device: nil, styling: nil, **buffer_output_args)
4
- summary = Summary.build(writer: writer, device: device, styling: styling)
5
-
6
- log_output = Log.build(level: log_level)
7
-
8
- writer = summary.writer
9
-
10
- buffer_output = Buffer.build(writer: writer, **buffer_output_args)
11
-
12
- Fixture::Output::Multiple.build(
13
- log_output,
14
- buffer_output,
15
- summary
16
- )
17
- end
18
-
19
- Substitute = Fixture::Output::Substitute
20
- end
21
- end
@@ -1,36 +0,0 @@
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
@@ -1,113 +0,0 @@
1
- module TestBench
2
- class Run
3
- Error = Class.new(RuntimeError)
4
-
5
- def session
6
- @session ||= Fixture::Session::Substitute.build
7
- end
8
- attr_writer :session
9
-
10
- def exclude_pattern
11
- @exclude_pattern ||= Defaults.exclude_pattern
12
- end
13
- attr_writer :exclude_pattern
14
-
15
- attr_reader :paths
16
-
17
- def initialize(*paths)
18
- @paths = Array(paths)
19
- end
20
-
21
- def self.build(*paths, exclude: nil, session: nil, output: nil)
22
- session ||= TestBench.session
23
-
24
- instance = new(*paths)
25
-
26
- instance.exclude_pattern = exclude unless exclude.nil?
27
-
28
- Fixture::Session.configure(instance, session: session)
29
- instance.session.output = output unless output.nil?
30
-
31
- instance
32
- end
33
-
34
- def self.configure(receiver, *paths, attr_name: nil, **args)
35
- attr_name ||= :run
36
-
37
- instance = build(*paths, **args)
38
- receiver.public_send(:"#{attr_name}=", instance)
39
- instance
40
- end
41
-
42
- def self.call(*paths, session: nil, **args, &block)
43
- instance = build(*paths, session: session, **args)
44
-
45
- if block.nil?
46
- instance.()
47
- else
48
- instance.() do
49
- unless session.nil?
50
- original_session = TestBench.session
51
- TestBench.session = session
52
- end
53
-
54
- block.(instance)
55
-
56
- ensure
57
- unless original_session.nil?
58
- TestBench.session = original_session
59
- end
60
- end
61
- end
62
- end
63
-
64
- def call(&block)
65
- session.start
66
-
67
- if block.nil?
68
- paths.each do |path|
69
- path(path)
70
- end
71
- else
72
- block.()
73
- end
74
-
75
- ensure
76
- session.finish
77
- end
78
-
79
- def path(path)
80
- if File.directory?(path)
81
- directory(path)
82
- elsif File.exist?(path)
83
- file(path)
84
- else
85
- raise Error, "Path not found (Path: #{path.inspect})"
86
- end
87
- end
88
-
89
- def directory(path)
90
- glob_pattern = File.join(path, '**/*.rb')
91
-
92
- Dir.glob(glob_pattern).sort.each do |path|
93
- file(path)
94
- end
95
- end
96
-
97
- def file(path)
98
- unless exclude_pattern.match?(path)
99
- session.load(path)
100
- end
101
- end
102
-
103
- module Defaults
104
- def self.exclude_pattern
105
- pattern = ENV.fetch('TEST_BENCH_EXCLUDE_FILE_PATTERN') do
106
- '_init.rb$'
107
- end
108
-
109
- Regexp.new(pattern)
110
- end
111
- end
112
- end
113
- end
data/script/bench DELETED
@@ -1,19 +0,0 @@
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.()