rubeno 0.0.8 → 0.0.9
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.
- checksums.yaml +4 -4
- data/lib/rubeno.rb +274 -274
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7e6eca4ae293d0b65e80eaddbf00037d95d647414dadd3e60a162307678d4e38
|
|
4
|
+
data.tar.gz: b267ed2e22a9995cb6b7ce53619ec2ca96a56b353179547fd4e76cf8e7ed9090
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 46cf182585b65e227a0879a1bddaa1bf1d9d502d1d1270c48dc133944ad272619d75381bad50d1b557ff6d9cc50182abc6bdf0c52f5c457938684e944ea8ff4f
|
|
7
|
+
data.tar.gz: 4db99c991f091b7e37b476dccce4070e1580fc35e9a7e1bb5355c4cae041235d40611b2f9e1a9700813b26dda2e01bbeb6c1b4785ca085c234ec9785fb9415e4
|
data/lib/rubeno.rb
CHANGED
|
@@ -1,317 +1,317 @@
|
|
|
1
|
-
require 'json'
|
|
2
|
-
require_relative 'base_suite'
|
|
3
|
-
require_relative 'base_given'
|
|
4
|
-
require_relative 'base_when'
|
|
5
|
-
require_relative 'base_then'
|
|
6
|
-
require_relative 'simple_adapter'
|
|
7
|
-
require_relative 'pm/ruby'
|
|
8
|
-
require_relative 'types'
|
|
1
|
+
# require 'json'
|
|
2
|
+
# require_relative 'base_suite'
|
|
3
|
+
# require_relative 'base_given'
|
|
4
|
+
# require_relative 'base_when'
|
|
5
|
+
# require_relative 'base_then'
|
|
6
|
+
# require_relative 'simple_adapter'
|
|
7
|
+
# require_relative 'pm/ruby'
|
|
8
|
+
# require_relative 'types'
|
|
9
9
|
|
|
10
|
-
module Rubeno
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
# module Rubeno
|
|
11
|
+
# class Rubeno
|
|
12
|
+
# attr_accessor :test_resource_requirement, :artifacts, :test_jobs, :test_specification,
|
|
13
|
+
# :suites_overrides, :given_overrides, :when_overrides, :then_overrides,
|
|
14
|
+
# :puppet_master, :specs, :total_tests, :assert_this, :test_adapter,
|
|
15
|
+
# :test_subject
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
17
|
+
# def initialize(input_val, test_specification, test_implementation, test_resource_requirement, test_adapter, uber_catcher = nil)
|
|
18
|
+
# @test_resource_requirement = test_resource_requirement
|
|
19
|
+
# @artifacts = []
|
|
20
|
+
# @test_jobs = []
|
|
21
|
+
# @test_specification = test_specification
|
|
22
|
+
# @suites_overrides = {}
|
|
23
|
+
# @given_overrides = {}
|
|
24
|
+
# @when_overrides = {}
|
|
25
|
+
# @then_overrides = {}
|
|
26
|
+
# @test_subject = input_val
|
|
27
|
+
# @test_adapter = test_adapter
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
# # Initialize classy implementations
|
|
30
|
+
# initialize_classy_implementations(test_implementation)
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
# # Generate specs
|
|
33
|
+
# @specs = test_specification.call(
|
|
34
|
+
# suites_wrapper,
|
|
35
|
+
# given_wrapper,
|
|
36
|
+
# when_wrapper,
|
|
37
|
+
# then_wrapper
|
|
38
|
+
# )
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
# # Initialize test jobs
|
|
41
|
+
# initialize_test_jobs
|
|
42
|
+
# end
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
44
|
+
# def suites_wrapper
|
|
45
|
+
# # Return an object that responds to method calls for suite types
|
|
46
|
+
# wrapper = Object.new
|
|
47
|
+
# @suites_overrides.each do |suite_name, suite_proc|
|
|
48
|
+
# wrapper.define_singleton_method(suite_name) do |description, givens_dict|
|
|
49
|
+
# {
|
|
50
|
+
# 'name' => description,
|
|
51
|
+
# 'givens' => givens_dict
|
|
52
|
+
# }
|
|
53
|
+
# end
|
|
54
|
+
# end
|
|
55
|
+
# wrapper
|
|
56
|
+
# end
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
58
|
+
# def given_wrapper
|
|
59
|
+
# wrapper = Object.new
|
|
60
|
+
# @given_overrides.each do |given_name, given_proc|
|
|
61
|
+
# wrapper.define_singleton_method(given_name) do |features, whens, thens, initial_values = nil|
|
|
62
|
+
# given_proc.call(features, whens, thens, initial_values)
|
|
63
|
+
# end
|
|
64
|
+
# end
|
|
65
|
+
# wrapper
|
|
66
|
+
# end
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
68
|
+
# def when_wrapper
|
|
69
|
+
# wrapper = Object.new
|
|
70
|
+
# @when_overrides.each do |when_name, when_proc|
|
|
71
|
+
# wrapper.define_singleton_method(when_name) do |*args|
|
|
72
|
+
# when_proc.call(*args)
|
|
73
|
+
# end
|
|
74
|
+
# end
|
|
75
|
+
# wrapper
|
|
76
|
+
# end
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
78
|
+
# def then_wrapper
|
|
79
|
+
# wrapper = Object.new
|
|
80
|
+
# @then_overrides.each do |then_name, then_proc|
|
|
81
|
+
# wrapper.define_singleton_method(then_name) do |*args|
|
|
82
|
+
# then_proc.call(*args)
|
|
83
|
+
# end
|
|
84
|
+
# end
|
|
85
|
+
# wrapper
|
|
86
|
+
# end
|
|
87
87
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
88
|
+
# def initialize_classy_implementations(test_implementation)
|
|
89
|
+
# # Create classy givens
|
|
90
|
+
# test_implementation.givens.each do |key, given_cb|
|
|
91
|
+
# @given_overrides[key] = ->(features, whens, thens, initial_values = nil) do
|
|
92
|
+
# BaseGiven.new(features, whens, thens, given_cb, initial_values)
|
|
93
|
+
# end
|
|
94
|
+
# end
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
96
|
+
# # Create classy whens
|
|
97
|
+
# test_implementation.whens.each do |key, when_cb_proc|
|
|
98
|
+
# @when_overrides[key] = ->(*args) do
|
|
99
|
+
# when_cb = when_cb_proc.call(*args)
|
|
100
|
+
# BaseWhen.new(key, when_cb)
|
|
101
|
+
# end
|
|
102
|
+
# end
|
|
103
103
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
104
|
+
# # Create classy thens
|
|
105
|
+
# test_implementation.thens.each do |key, then_cb_proc|
|
|
106
|
+
# @then_overrides[key] = ->(*args) do
|
|
107
|
+
# then_cb = then_cb_proc.call(*args)
|
|
108
|
+
# BaseThen.new(key, then_cb)
|
|
109
|
+
# end
|
|
110
|
+
# end
|
|
111
|
+
# end
|
|
112
112
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
113
|
+
# def initialize_test_jobs
|
|
114
|
+
# @test_jobs = []
|
|
115
|
+
# @specs.each_with_index do |suite_spec, i|
|
|
116
|
+
# # Create a BaseSuite instance
|
|
117
|
+
# suite = BaseSuite.new(suite_spec['name'], suite_spec['givens'])
|
|
118
|
+
# suite.index = i
|
|
119
119
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
120
|
+
# # Create a test job
|
|
121
|
+
# test_job = {
|
|
122
|
+
# suite: suite,
|
|
123
|
+
# receiveTestResourceConfig: ->(pm, test_resource_config) { run_test_job(suite, pm, test_resource_config) },
|
|
124
|
+
# to_obj: -> { suite.to_obj }
|
|
125
|
+
# }
|
|
126
126
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
127
|
+
# @test_jobs << test_job
|
|
128
|
+
# end
|
|
129
|
+
# end
|
|
130
130
|
|
|
131
|
-
|
|
132
|
-
|
|
131
|
+
# def run_test_job(suite, pm, test_resource_config)
|
|
132
|
+
# t_log = ->(*args) { puts args.join(' ') }
|
|
133
133
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
134
|
+
# # Run the suite
|
|
135
|
+
# suite_done = suite.run(
|
|
136
|
+
# @test_subject,
|
|
137
|
+
# test_resource_config, # Use the actual test resource configuration
|
|
138
|
+
# ->(f_path, value) { nil }, # Simple artifactory
|
|
139
|
+
# t_log,
|
|
140
|
+
# pm
|
|
141
|
+
# )
|
|
142
142
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
143
|
+
# # Create result object
|
|
144
|
+
# result = Object.new
|
|
145
|
+
# result.instance_variable_set(:@fails, suite_done.fails)
|
|
146
|
+
# result.instance_variable_set(:@artifacts, suite_done.artifacts)
|
|
147
|
+
# result.instance_variable_set(:@features, suite_done.features)
|
|
148
148
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
149
|
+
# def result.fails; @fails; end
|
|
150
|
+
# def result.artifacts; @artifacts; end
|
|
151
|
+
# def result.features; @features; end
|
|
152
152
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
153
|
+
# result
|
|
154
|
+
# rescue => e
|
|
155
|
+
# puts "Error in test job: #{e.message}"
|
|
156
|
+
# puts e.backtrace
|
|
157
157
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
158
|
+
# result = Object.new
|
|
159
|
+
# result.instance_variable_set(:@fails, 1)
|
|
160
|
+
# result.instance_variable_set(:@artifacts, [])
|
|
161
|
+
# result.instance_variable_set(:@features, [])
|
|
162
162
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
163
|
+
# def result.fails; @fails; end
|
|
164
|
+
# def result.artifacts; @artifacts; end
|
|
165
|
+
# def result.features; @features; end
|
|
166
166
|
|
|
167
|
-
|
|
168
|
-
|
|
167
|
+
# result
|
|
168
|
+
# end
|
|
169
169
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
170
|
+
# def receiveTestResourceConfig(partialTestResource, websocket_port = 'ipcfile')
|
|
171
|
+
# # Parse the test resource configuration
|
|
172
|
+
# test_resource_config = parse_test_resource_config(partialTestResource)
|
|
173
173
|
|
|
174
|
-
|
|
174
|
+
# pm = PM_Ruby.new(test_resource_config, websocket_port)
|
|
175
175
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
176
|
+
# # Run all test jobs
|
|
177
|
+
# total_fails = 0
|
|
178
|
+
# all_features = []
|
|
179
|
+
# all_artifacts = []
|
|
180
|
+
# suite_results = []
|
|
181
181
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
182
|
+
# @test_jobs.each do |job|
|
|
183
|
+
# begin
|
|
184
|
+
# # Update the job's receiveTestResourceConfig to pass test_resource_config
|
|
185
|
+
# result = run_test_job(job[:suite], pm, test_resource_config)
|
|
186
|
+
# total_fails += result.fails
|
|
187
|
+
# all_features.concat(result.features)
|
|
188
|
+
# all_artifacts.concat(result.artifacts)
|
|
189
|
+
# suite_results << job[:to_obj].call
|
|
190
|
+
# rescue => e
|
|
191
|
+
# puts "Error running test job: #{e.message}"
|
|
192
|
+
# total_fails += 1
|
|
193
|
+
# end
|
|
194
|
+
# end
|
|
195
195
|
|
|
196
|
-
|
|
197
|
-
|
|
196
|
+
# # Write tests.json
|
|
197
|
+
# write_tests_json(suite_results, total_fails, all_features.uniq, all_artifacts)
|
|
198
198
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
199
|
+
# # Return result
|
|
200
|
+
# IFinalResults.new(
|
|
201
|
+
# failed: total_fails > 0,
|
|
202
|
+
# fails: total_fails,
|
|
203
|
+
# artifacts: all_artifacts,
|
|
204
|
+
# features: all_features.uniq
|
|
205
|
+
# )
|
|
206
|
+
# end
|
|
207
207
|
|
|
208
|
-
|
|
208
|
+
# private
|
|
209
209
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
210
|
+
# def parse_test_resource_config(partialTestResource)
|
|
211
|
+
# begin
|
|
212
|
+
# config = JSON.parse(partialTestResource)
|
|
213
|
+
# # Create a hash that can be used as test resource configuration
|
|
214
|
+
# # The PM_Ruby expects certain methods to be available
|
|
215
|
+
# config_hash = {
|
|
216
|
+
# 'name' => config['name'] || 'default',
|
|
217
|
+
# 'fs' => config['fs'] || '.',
|
|
218
|
+
# 'ports' => config['ports'] || [],
|
|
219
|
+
# 'timeout' => config['timeout'] || 30000,
|
|
220
|
+
# 'retries' => config['retries'] || 0,
|
|
221
|
+
# 'environment' => config['environment'] || {}
|
|
222
|
+
# }
|
|
223
|
+
# # Create an object that responds to the needed methods
|
|
224
|
+
# test_resource = Object.new
|
|
225
|
+
# test_resource.define_singleton_method(:name) { config_hash['name'] }
|
|
226
|
+
# test_resource.define_singleton_method(:fs) { config_hash['fs'] }
|
|
227
|
+
# test_resource.define_singleton_method(:ports) { config_hash['ports'] }
|
|
228
|
+
# test_resource.define_singleton_method(:timeout) { config_hash['timeout'] }
|
|
229
|
+
# test_resource.define_singleton_method(:retries) { config_hash['retries'] }
|
|
230
|
+
# test_resource.define_singleton_method(:environment) { config_hash['environment'] }
|
|
231
|
+
# test_resource
|
|
232
|
+
# rescue JSON::ParserError
|
|
233
|
+
# # If not valid JSON, create a default config
|
|
234
|
+
# test_resource = Object.new
|
|
235
|
+
# test_resource.define_singleton_method(:name) { 'default' }
|
|
236
|
+
# test_resource.define_singleton_method(:fs) { '.' }
|
|
237
|
+
# test_resource.define_singleton_method(:ports) { [] }
|
|
238
|
+
# test_resource.define_singleton_method(:timeout) { 30000 }
|
|
239
|
+
# test_resource.define_singleton_method(:retries) { 0 }
|
|
240
|
+
# test_resource.define_singleton_method(:environment) { {} }
|
|
241
|
+
# test_resource
|
|
242
|
+
# end
|
|
243
|
+
# end
|
|
244
244
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
245
|
+
# def write_tests_json(suite_results, total_fails, features, artifacts)
|
|
246
|
+
# # Flatten all givens from all suites
|
|
247
|
+
# all_givens = []
|
|
248
|
+
# suite_results.each do |suite|
|
|
249
|
+
# if suite[:givens]
|
|
250
|
+
# all_givens.concat(suite[:givens])
|
|
251
|
+
# end
|
|
252
|
+
# end
|
|
253
253
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
254
|
+
# tests_data = {
|
|
255
|
+
# 'name' => @specs.first ? @specs.first['name'] : 'Unnamed Test',
|
|
256
|
+
# 'givens' => all_givens,
|
|
257
|
+
# 'fails' => total_fails,
|
|
258
|
+
# 'failed' => total_fails > 0,
|
|
259
|
+
# 'features' => features,
|
|
260
|
+
# 'artifacts' => artifacts
|
|
261
|
+
# }
|
|
262
262
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
263
|
+
# # Create directory if it doesn't exist
|
|
264
|
+
# dir_path = 'testeranto/reports/allTests/example'
|
|
265
|
+
# FileUtils.mkdir_p(dir_path) unless Dir.exist?(dir_path)
|
|
266
266
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
267
|
+
# # Write to file
|
|
268
|
+
# tests_json_path = "#{dir_path}/ruby.Calculator.test.ts.json"
|
|
269
|
+
# File.write(tests_json_path, JSON.pretty_generate(tests_data))
|
|
270
|
+
# puts "tests.json written to: #{tests_json_path}"
|
|
271
|
+
# end
|
|
272
|
+
# end
|
|
273
273
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
274
|
+
# # Main function
|
|
275
|
+
# def self.main
|
|
276
|
+
# puts "Rubeno Ruby implementation"
|
|
277
277
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
278
|
+
# # Check command line arguments
|
|
279
|
+
# if ARGV.length < 1
|
|
280
|
+
# puts "No test arguments provided - exiting"
|
|
281
|
+
# exit 0
|
|
282
|
+
# end
|
|
283
283
|
|
|
284
|
-
|
|
285
|
-
|
|
284
|
+
# partialTestResource = ARGV[0]
|
|
285
|
+
# websocket_port = ARGV[1] || 'ipcfile'
|
|
286
286
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
287
|
+
# # We need a default instance to run
|
|
288
|
+
# # In a real implementation, this would be set elsewhere
|
|
289
|
+
# if $default_rubeno_instance.nil?
|
|
290
|
+
# puts "ERROR: No default Rubeno instance has been configured"
|
|
291
|
+
# exit -1
|
|
292
|
+
# end
|
|
293
293
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
294
|
+
# result = $default_rubeno_instance.receiveTestResourceConfig(partialTestResource, websocket_port)
|
|
295
|
+
# exit result.fails
|
|
296
|
+
# end
|
|
297
297
|
|
|
298
|
-
|
|
299
|
-
|
|
298
|
+
# # Store the default instance
|
|
299
|
+
# $default_rubeno_instance = nil
|
|
300
300
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
301
|
+
# def self.set_default_instance(instance)
|
|
302
|
+
# $default_rubeno_instance = instance
|
|
303
|
+
# end
|
|
304
304
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
end
|
|
305
|
+
# # Helper function to create a Rubeno instance
|
|
306
|
+
# def self.Rubeno(input_val = nil, test_specification = nil, test_implementation = nil, test_adapter = nil, test_resource_requirement = nil, uber_catcher = nil)
|
|
307
|
+
# instance = Rubeno.new(
|
|
308
|
+
# input_val,
|
|
309
|
+
# test_specification,
|
|
310
|
+
# test_implementation,
|
|
311
|
+
# test_resource_requirement || ITTestResourceRequest.new,
|
|
312
|
+
# test_adapter || SimpleTestAdapter.new,
|
|
313
|
+
# uber_catcher
|
|
314
|
+
# )
|
|
315
|
+
# instance
|
|
316
|
+
# end
|
|
317
|
+
# end
|