spectre-core 1.13.0 → 1.14.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/exe/spectre +116 -101
- data/lib/spectre/assertion.rb +66 -48
- data/lib/spectre/helpers.rb +3 -2
- data/lib/spectre/http.rb +2 -7
- data/lib/spectre.rb +2 -2
- metadata +4 -12
- data/lib/spectre/reporter/html.rb +0 -1167
- data/lib/spectre/reporter/junit.rb +0 -105
- data/lib/spectre/reporter/vstest.rb +0 -167
- data/resources/OpenSans-Regular.ttf +0 -0
- data/resources/fa-regular-400.ttf +0 -0
- data/resources/fa-solid-900.ttf +0 -0
- data/resources/spectre_icon.svg +0 -106
- data/resources/vue.global.prod.js +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1d19a96bd18baeb678abc3670c744bbd8855b4680db1e05bd57dcd99dfc3f21
|
4
|
+
data.tar.gz: db9f3efd3faf3bf571845b1ae340a133ee9a95065cec2b8469d28b0a76985996
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dcfa21488bfce34984bac2efa1bc7fa73d703eb84d730497edef928fd9eea35be33abe9774d3becf38a1424d2e347728b5627ec1d053ac69e19b82b8b937decb
|
7
|
+
data.tar.gz: af9018490eb268a7820419e597ea2eb5d8887ed7606c28bb7180e28245347f8d4fe630e26028113a39fd8ad7b54744b20687376fa1c386102ded67bb4ee38874
|
data/exe/spectre
CHANGED
@@ -55,9 +55,6 @@ DEFAULT_CONFIG = {
|
|
55
55
|
'modules' => [
|
56
56
|
'spectre/helpers',
|
57
57
|
'spectre/reporter/console',
|
58
|
-
'spectre/reporter/junit',
|
59
|
-
'spectre/reporter/vstest',
|
60
|
-
'spectre/reporter/html',
|
61
58
|
'spectre/logger/console',
|
62
59
|
'spectre/logger/file',
|
63
60
|
'spectre/assertion',
|
@@ -86,19 +83,21 @@ property_overrides = {}
|
|
86
83
|
$COMMAND = ['spectre'].concat(ARGV.clone).join(' ')
|
87
84
|
|
88
85
|
OptionParser.new do |opts|
|
89
|
-
opts.banner =
|
86
|
+
opts.banner = <<~BANNER
|
87
|
+
Spectre #{Spectre::VERSION}
|
90
88
|
|
91
|
-
|
89
|
+
Usage: spectre [command] [options]
|
92
90
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
91
|
+
Commands:
|
92
|
+
list List specs
|
93
|
+
run Run specs (default)
|
94
|
+
show Print current environment settings
|
95
|
+
dump Dumps the given environment in YAML format to console
|
96
|
+
cleanup Will remove all generated files (e.g. logs and reports)
|
97
|
+
init Initializes a new spectre project
|
100
98
|
|
101
|
-
|
99
|
+
Specific options:
|
100
|
+
BANNER
|
102
101
|
|
103
102
|
opts.on('-s SPEC,SPEC', '--specs SPEC,SPEC', Array, 'The specs to run') do |specs|
|
104
103
|
cmd_options['specs'] = specs
|
@@ -136,11 +135,17 @@ OptionParser.new do |opts|
|
|
136
135
|
cmd_options['out_path'] = File.absolute_path(path)
|
137
136
|
end
|
138
137
|
|
139
|
-
opts.on('-r NAME', '--reporters NAME', Array, "A list of reporters to use") do |reporters|
|
138
|
+
opts.on('-r NAME,NAME', '--reporters NAME,NAME', Array, "A list of reporters to use") do |reporters|
|
140
139
|
cmd_options['reporters'] = reporters
|
141
140
|
end
|
142
141
|
|
143
|
-
opts.on('-
|
142
|
+
opts.on('-m MODULE,MODULE', '--modules MODULE,MODULE', Array, "Load the given modules") do |modules|
|
143
|
+
modules.each do |mod|
|
144
|
+
require mod
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
opts.on('-d', '--debug', "Run in debug mode. Do not use in production!") do
|
144
149
|
cmd_options['debug'] = true
|
145
150
|
end
|
146
151
|
|
@@ -165,9 +170,9 @@ OptionParser.new do |opts|
|
|
165
170
|
end
|
166
171
|
end
|
167
172
|
|
168
|
-
opts.separator "\
|
173
|
+
opts.separator "\n Common options:"
|
169
174
|
|
170
|
-
opts.on_tail('--version', 'Print current installed version') do
|
175
|
+
opts.on_tail('-v', '--version', 'Print current installed version') do
|
171
176
|
puts Spectre::VERSION
|
172
177
|
exit
|
173
178
|
end
|
@@ -205,15 +210,19 @@ if File.exists? config_file
|
|
205
210
|
Dir.chdir File.dirname(config_file)
|
206
211
|
end
|
207
212
|
|
213
|
+
# Set config options, which are only allowed to be overriden by command options
|
214
|
+
cfg['debug'] = DEFAULT_CONFIG['debug']
|
215
|
+
|
216
|
+
# Set project name
|
208
217
|
cfg['project'] = File.basename(Dir.pwd) unless cfg['project']
|
209
218
|
|
210
219
|
cfg.deep_merge! cmd_options
|
211
220
|
|
221
|
+
|
212
222
|
###########################################
|
213
223
|
# Load Environment
|
214
224
|
###########################################
|
215
225
|
|
216
|
-
|
217
226
|
envs = {}
|
218
227
|
read_env_files = {}
|
219
228
|
cfg['env_patterns'].each do |pattern|
|
@@ -258,127 +267,131 @@ require_relative '../lib/spectre/environment' unless cfg['exclude'].include? 'sp
|
|
258
267
|
Spectre.configure(cfg)
|
259
268
|
|
260
269
|
|
261
|
-
|
262
|
-
|
263
|
-
###########################################
|
270
|
+
# Load specs only, when listing or running specs
|
271
|
+
if ['list', 'run'].include? action
|
264
272
|
|
273
|
+
###########################################
|
274
|
+
# Load Specs
|
275
|
+
###########################################
|
265
276
|
|
266
|
-
|
267
|
-
|
268
|
-
|
277
|
+
|
278
|
+
cfg['spec_patterns'].each do |pattern|
|
279
|
+
Dir.glob(pattern).each do|f|
|
280
|
+
require_relative File.join(Dir.pwd, f)
|
281
|
+
end
|
269
282
|
end
|
270
|
-
end
|
271
283
|
|
272
284
|
|
273
|
-
###########################################
|
274
|
-
# List specs
|
275
|
-
###########################################
|
285
|
+
###########################################
|
286
|
+
# List specs
|
287
|
+
###########################################
|
288
|
+
|
276
289
|
|
290
|
+
if 'list' == action
|
291
|
+
colors = [:blue, :magenta, :yellow, :green]
|
292
|
+
specs = Spectre.specs(cfg['specs'], cfg['tags'])
|
277
293
|
|
278
|
-
|
279
|
-
colors = [:blue, :magenta, :yellow, :green]
|
280
|
-
specs = Spectre.specs(cfg['specs'], cfg['tags'])
|
294
|
+
exit 1 unless specs.any?
|
281
295
|
|
282
|
-
|
296
|
+
counter = 0
|
283
297
|
|
284
|
-
|
298
|
+
specs.group_by { |x| x.subject }.each do |subject, spec_group|
|
299
|
+
spec_group.each do |spec|
|
300
|
+
tags = spec.tags.map { |x| '#' + x.to_s }.join ' '
|
301
|
+
desc = subject.desc
|
302
|
+
desc += ' - ' + spec.context.__desc + ' -' if spec.context.__desc
|
303
|
+
desc += ' ' + spec.desc
|
304
|
+
puts "[#{spec.name}]".send(colors[counter % colors.length]) + " #{desc} #{tags.cyan}"
|
305
|
+
end
|
285
306
|
|
286
|
-
|
287
|
-
spec_group.each do |spec|
|
288
|
-
tags = spec.tags.map { |x| '#' + x.to_s }.join ' '
|
289
|
-
desc = subject.desc
|
290
|
-
desc += ' - ' + spec.context.__desc + ' -' if spec.context.__desc
|
291
|
-
desc += ' ' + spec.desc
|
292
|
-
puts "[#{spec.name}]".send(colors[counter % colors.length]) + " #{desc} #{tags.cyan}"
|
307
|
+
counter += 1
|
293
308
|
end
|
294
309
|
|
295
|
-
|
310
|
+
exit 0
|
296
311
|
end
|
297
312
|
|
298
|
-
exit 0
|
299
|
-
end
|
300
313
|
|
314
|
+
###########################################
|
315
|
+
# Run
|
316
|
+
###########################################
|
301
317
|
|
302
|
-
###########################################
|
303
|
-
# Run
|
304
|
-
###########################################
|
305
318
|
|
319
|
+
if 'run' == action
|
320
|
+
# Initialize logger
|
321
|
+
now = Time.now
|
306
322
|
|
307
|
-
|
308
|
-
|
309
|
-
|
323
|
+
cfg['log_file'] = cfg['log_file'].frmt({
|
324
|
+
shortdate: now.strftime('%Y-%m-%d'),
|
325
|
+
date: now.strftime('%Y-%m-%d_%H%M%S'),
|
326
|
+
timestamp: now.strftime('%s'),
|
327
|
+
subject: 'spectre',
|
328
|
+
})
|
310
329
|
|
311
|
-
|
312
|
-
|
313
|
-
date: now.strftime('%Y-%m-%d_%H%M%S'),
|
314
|
-
timestamp: now.strftime('%s'),
|
315
|
-
subject: 'spectre',
|
316
|
-
})
|
330
|
+
log_dir = File.dirname(cfg['log_file'])
|
331
|
+
FileUtils.makedirs(log_dir)
|
317
332
|
|
318
|
-
|
319
|
-
FileUtils.makedirs(log_dir)
|
333
|
+
# Load Modules
|
320
334
|
|
321
|
-
|
335
|
+
cfg['modules']
|
336
|
+
.concat(cfg['include'])
|
337
|
+
.select { |mod| !cfg['exclude'].include? mod }
|
338
|
+
.each do |mod|
|
339
|
+
begin
|
340
|
+
mod_file = mod + '.rb'
|
341
|
+
spectre_lib_mod = File.join(File.dirname(__dir__), 'lib', mod_file)
|
322
342
|
|
323
|
-
|
324
|
-
|
325
|
-
.select { |mod| !cfg['exclude'].include? mod }
|
326
|
-
.each do |mod|
|
327
|
-
begin
|
328
|
-
mod_file = mod + '.rb'
|
329
|
-
spectre_lib_mod = File.join(File.dirname(__dir__), 'lib', mod_file)
|
343
|
+
if File.exists? mod_file
|
344
|
+
require_relative mod_file
|
330
345
|
|
331
|
-
|
332
|
-
|
346
|
+
elsif File.exists? spectre_lib_mod
|
347
|
+
require_relative spectre_lib_mod
|
333
348
|
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
349
|
+
else
|
350
|
+
require mod
|
351
|
+
end
|
352
|
+
rescue LoadError => e
|
353
|
+
puts "Unable to load module #{mod}. Check if the module exists or remove it from your spectre config:\n#{e.message}"
|
354
|
+
exit 1
|
339
355
|
end
|
340
|
-
rescue LoadError => e
|
341
|
-
puts "Unable to load module #{mod}. Check if the module exists or remove it from your spectre config:\n#{e.message}"
|
342
|
-
exit 1
|
343
356
|
end
|
344
|
-
end
|
345
357
|
|
346
|
-
|
358
|
+
# Load mixins
|
347
359
|
|
348
|
-
|
349
|
-
|
350
|
-
|
360
|
+
cfg['mixin_patterns'].each do |pattern|
|
361
|
+
Dir.glob(pattern).each do|f|
|
362
|
+
require_relative File.join(Dir.pwd, f)
|
363
|
+
end
|
351
364
|
end
|
352
|
-
end
|
353
365
|
|
354
|
-
|
366
|
+
Spectre.configure(cfg)
|
355
367
|
|
356
|
-
|
368
|
+
Spectre::Logging.debug! if cfg['debug']
|
357
369
|
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
370
|
+
cfg['loggers'].each do |logger_name|
|
371
|
+
logger = Kernel.const_get(logger_name).new(cfg)
|
372
|
+
Spectre::Logging.add(logger)
|
373
|
+
end if cfg['loggers']
|
362
374
|
|
363
|
-
|
375
|
+
specs = Spectre.specs(cfg['specs'], cfg['tags'])
|
364
376
|
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
377
|
+
unless specs.any?
|
378
|
+
puts "No specs found in #{Dir.pwd}"
|
379
|
+
exit 1
|
380
|
+
end
|
369
381
|
|
370
|
-
|
382
|
+
run_infos = Spectre::Runner.new.run(specs)
|
371
383
|
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
384
|
+
cfg['reporters'].each do |reporter|
|
385
|
+
reporter = Kernel.const_get(reporter).new(cfg)
|
386
|
+
reporter.report(run_infos)
|
387
|
+
end
|
376
388
|
|
377
|
-
|
389
|
+
errors = run_infos.select { |x| nil != x.error or nil != x.failure }
|
378
390
|
|
379
|
-
|
391
|
+
exit 0 if cfg['ignore_failure'] or not errors.any?
|
380
392
|
|
381
|
-
|
393
|
+
exit 1
|
394
|
+
end
|
382
395
|
end
|
383
396
|
|
384
397
|
|
@@ -425,10 +438,12 @@ if 'cleanup' == action
|
|
425
438
|
|
426
439
|
Dir.glob(log_file_pattern).each do |log_file|
|
427
440
|
File.delete(log_file)
|
441
|
+
puts "#{log_file} deleted"
|
428
442
|
end
|
429
443
|
|
430
444
|
Dir.glob(File.join cfg['out_path'], '/*').each do |out_file|
|
431
445
|
File.delete(out_file)
|
446
|
+
puts "#{out_file} deleted"
|
432
447
|
end
|
433
448
|
end
|
434
449
|
|
@@ -511,7 +526,7 @@ SAMPLE_SPEC = %[describe '<subject>' do
|
|
511
526
|
end
|
512
527
|
|
513
528
|
expect 'a message to exist' do
|
514
|
-
response.json.message.
|
529
|
+
response.json.message.should_not_be_empty
|
515
530
|
end
|
516
531
|
end
|
517
532
|
end
|
data/lib/spectre/assertion.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require_relative '../spectre'
|
2
|
+
require_relative '../spectre/helpers'
|
2
3
|
|
3
4
|
require 'ostruct'
|
4
5
|
require_relative 'logger'
|
@@ -7,32 +8,39 @@ require_relative 'logger'
|
|
7
8
|
module Spectre
|
8
9
|
module Assertion
|
9
10
|
class ::Object
|
10
|
-
def should_be(
|
11
|
-
|
11
|
+
def should_be(value)
|
12
|
+
evaluate(value, "#{self} should be #{value}") do |x|
|
13
|
+
self.to_s == x.to_s
|
14
|
+
end
|
12
15
|
end
|
13
16
|
|
14
17
|
def should_be_empty
|
15
|
-
raise AssertionFailure.new("
|
18
|
+
raise AssertionFailure.new("#{self.to_s.trim} should be empty", nil, self) unless self.nil?
|
16
19
|
end
|
17
20
|
|
18
21
|
def should_not_be(val)
|
19
|
-
raise AssertionFailure.new("
|
22
|
+
raise AssertionFailure.new("#{self.to_s.trim} should not be #{val.to_s.trim}", val, self) unless self.to_s != val.to_s
|
20
23
|
end
|
21
24
|
|
22
25
|
def should_not_exist
|
23
|
-
raise AssertionFailure.new("
|
26
|
+
raise AssertionFailure.new("#{self.to_s.trim} should not exist, but it does", val, self) unless self.to_s != nil
|
24
27
|
end
|
25
28
|
|
26
29
|
def should_not_be_empty
|
27
30
|
raise AssertionFailure.new('empty value', 'nothing', self) unless self != nil
|
28
31
|
end
|
29
32
|
|
33
|
+
def evaluate val, message, &block
|
34
|
+
val = Evaluation.new(val) unless val.is_a? Evaluation
|
35
|
+
raise AssertionFailure.new(message, val, self) unless val.run &block
|
36
|
+
end
|
37
|
+
|
30
38
|
def or other
|
31
|
-
OrEvaluation.new
|
39
|
+
OrEvaluation.new(self, other)
|
32
40
|
end
|
33
41
|
|
34
42
|
def and other
|
35
|
-
AndEvaluation.new
|
43
|
+
AndEvaluation.new(self, other)
|
36
44
|
end
|
37
45
|
end
|
38
46
|
|
@@ -93,7 +101,9 @@ module Spectre
|
|
93
101
|
val = OpenStruct.new(val)
|
94
102
|
end
|
95
103
|
|
96
|
-
|
104
|
+
evaluate(val, "#{list} should contain #{val.to_s}") do |x|
|
105
|
+
list.include? x
|
106
|
+
end
|
97
107
|
end
|
98
108
|
|
99
109
|
def should_not_contain(val)
|
@@ -118,7 +128,9 @@ module Spectre
|
|
118
128
|
|
119
129
|
class ::String
|
120
130
|
def should_be(val)
|
121
|
-
|
131
|
+
evaluate(val, "'#{self}' should be '#{val}'") do |x|
|
132
|
+
self.to_s == x.to_s
|
133
|
+
end
|
122
134
|
end
|
123
135
|
|
124
136
|
def should_be_empty
|
@@ -126,35 +138,37 @@ module Spectre
|
|
126
138
|
end
|
127
139
|
|
128
140
|
def should_not_be(val)
|
129
|
-
|
141
|
+
evaluate(val, "'#{self}' should not be '#{val}'") do |x|
|
142
|
+
self.to_s != x.to_s
|
143
|
+
end
|
130
144
|
end
|
131
145
|
|
132
146
|
def should_not_be_empty
|
133
147
|
raise AssertionFailure.new('Text should not be empty', 'nothing', self) unless not self.empty?
|
134
148
|
end
|
135
149
|
|
136
|
-
def should_contain(
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
evaluation = SingleEvaluation.new(value)
|
141
|
-
success = evaluation.call(predicate)
|
142
|
-
|
143
|
-
return if success
|
144
|
-
|
145
|
-
raise AssertionFailure.new("'#{self.to_s.trim}' should contain #{evaluation.to_s}", evaluation, self)
|
150
|
+
def should_contain(val)
|
151
|
+
evaluate(val, "'#{self.trim}' should contain '#{val.to_s}'") do |x|
|
152
|
+
self.include? x.to_s
|
153
|
+
end
|
146
154
|
end
|
147
155
|
|
148
156
|
def should_not_contain(val)
|
149
|
-
|
157
|
+
evaluate(val, "'#{self}' should not contain '#{val}'") do |x|
|
158
|
+
not self.include? x.to_s
|
159
|
+
end
|
150
160
|
end
|
151
161
|
|
152
162
|
def should_match(regex)
|
153
|
-
|
163
|
+
evaluate(regex, "'#{self.trim}' should match /#{regex}/") do |x|
|
164
|
+
self.match(x)
|
165
|
+
end
|
154
166
|
end
|
155
167
|
|
156
168
|
def should_not_match(regex)
|
157
|
-
|
169
|
+
evaluate(regex, "'#{self.trim}' should not match '#{regex}'") do |x|
|
170
|
+
not self.match(x)
|
171
|
+
end
|
158
172
|
end
|
159
173
|
|
160
174
|
alias :| :or
|
@@ -162,54 +176,58 @@ module Spectre
|
|
162
176
|
end
|
163
177
|
|
164
178
|
class Evaluation
|
165
|
-
def initialize
|
166
|
-
@
|
167
|
-
@other = other
|
179
|
+
def initialize val
|
180
|
+
@val = val
|
168
181
|
end
|
169
182
|
|
170
|
-
def
|
183
|
+
def run &block
|
184
|
+
evaluate(@val, block)
|
185
|
+
end
|
186
|
+
|
187
|
+
def evaluate(val, predicate)
|
171
188
|
if val.is_a? Evaluation
|
172
|
-
val.
|
189
|
+
val.run &predicate
|
173
190
|
else
|
174
191
|
predicate.call(val)
|
175
192
|
end
|
176
193
|
end
|
177
194
|
|
178
|
-
alias :| :or
|
179
|
-
alias :& :and
|
180
|
-
end
|
181
|
-
|
182
|
-
class SingleEvaluation < Evaluation
|
183
|
-
def initialize value
|
184
|
-
super(value, nil)
|
185
|
-
end
|
186
|
-
|
187
|
-
def call predicate
|
188
|
-
eval_assertion(predicate, @value)
|
189
|
-
end
|
190
|
-
|
191
195
|
def to_s
|
192
|
-
@
|
196
|
+
@val.to_s
|
193
197
|
end
|
194
198
|
end
|
195
199
|
|
196
200
|
class OrEvaluation < Evaluation
|
197
|
-
def
|
198
|
-
|
201
|
+
def initialize val, other
|
202
|
+
@val = val
|
203
|
+
@other = other
|
204
|
+
end
|
205
|
+
|
206
|
+
def run &block
|
207
|
+
res1 = evaluate(@val, block)
|
208
|
+
res2 = evaluate(@other, block)
|
209
|
+
res1 or res2
|
199
210
|
end
|
200
211
|
|
201
212
|
def to_s
|
202
|
-
"(#{@
|
213
|
+
"(#{@val} or #{@other})"
|
203
214
|
end
|
204
215
|
end
|
205
216
|
|
206
217
|
class AndEvaluation < Evaluation
|
207
|
-
def
|
208
|
-
|
218
|
+
def initialize val, other
|
219
|
+
@val = val
|
220
|
+
@other = other
|
221
|
+
end
|
222
|
+
|
223
|
+
def run &block
|
224
|
+
res1 = evaluate(@val, block)
|
225
|
+
res2 = evaluate(@other, block)
|
226
|
+
res1 and res2
|
209
227
|
end
|
210
228
|
|
211
229
|
def to_s
|
212
|
-
"(#{@
|
230
|
+
"(#{@val} and #{@other})"
|
213
231
|
end
|
214
232
|
end
|
215
233
|
|
data/lib/spectre/helpers.rb
CHANGED
data/lib/spectre/http.rb
CHANGED
@@ -19,7 +19,7 @@ module Spectre
|
|
19
19
|
'cert' => nil,
|
20
20
|
'headers' => nil,
|
21
21
|
'query' => nil,
|
22
|
-
'content_type' =>
|
22
|
+
'content_type' => nil,
|
23
23
|
'timeout' => 180,
|
24
24
|
'retries' => 0,
|
25
25
|
}
|
@@ -77,8 +77,7 @@ module Spectre
|
|
77
77
|
data = data.to_h if data.is_a? OpenStruct
|
78
78
|
body JSON.pretty_generate(data)
|
79
79
|
|
80
|
-
|
81
|
-
content_type('application/json')
|
80
|
+
content_type('application/json') unless @__req['content_type']
|
82
81
|
end
|
83
82
|
|
84
83
|
def body body_content
|
@@ -231,10 +230,6 @@ module Spectre
|
|
231
230
|
# do nothing
|
232
231
|
end
|
233
232
|
|
234
|
-
if str.length > 1000
|
235
|
-
str = str[0...1000] + "\n[...]"
|
236
|
-
end
|
237
|
-
|
238
233
|
str
|
239
234
|
end
|
240
235
|
|
data/lib/spectre.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spectre-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.14.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Neubauer
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08
|
11
|
+
date: 2022-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ectoplasm
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.2.
|
19
|
+
version: 1.2.3
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.2.
|
26
|
+
version: 1.2.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: jsonpath
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -63,15 +63,7 @@ files:
|
|
63
63
|
- lib/spectre/logger/file.rb
|
64
64
|
- lib/spectre/mixin.rb
|
65
65
|
- lib/spectre/reporter/console.rb
|
66
|
-
- lib/spectre/reporter/html.rb
|
67
|
-
- lib/spectre/reporter/junit.rb
|
68
|
-
- lib/spectre/reporter/vstest.rb
|
69
66
|
- lib/spectre/resources.rb
|
70
|
-
- resources/OpenSans-Regular.ttf
|
71
|
-
- resources/fa-regular-400.ttf
|
72
|
-
- resources/fa-solid-900.ttf
|
73
|
-
- resources/spectre_icon.svg
|
74
|
-
- resources/vue.global.prod.js
|
75
67
|
homepage: https://github.com/ionos-spectre/spectre-core
|
76
68
|
licenses:
|
77
69
|
- GPL-3.0-or-later
|