test_bench 1.2.0.10 → 2.0.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
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.()