spectre-core 1.8.4 → 1.12.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.
- checksums.yaml +4 -4
- data/exe/spectre +516 -494
- data/lib/spectre/assertion.rb +48 -35
- data/lib/spectre/bag.rb +21 -19
- data/lib/spectre/curl.rb +397 -368
- data/lib/spectre/diagnostic.rb +39 -29
- data/lib/spectre/environment.rb +30 -26
- data/lib/spectre/helpers.rb +133 -64
- data/lib/spectre/http/basic_auth.rb +5 -2
- data/lib/spectre/http/keystone.rb +76 -73
- data/lib/spectre/http.rb +106 -85
- data/lib/spectre/logger/console.rb +143 -142
- data/lib/spectre/logger/file.rb +1 -1
- data/lib/spectre/logger.rb +3 -1
- data/lib/spectre/mixin.rb +58 -41
- data/lib/spectre/reporter/console.rb +102 -103
- data/lib/spectre/reporter/junit.rb +100 -98
- data/lib/spectre/resources.rb +49 -46
- data/lib/spectre.rb +440 -434
- metadata +19 -65
- data/lib/spectre/database/postgres.rb +0 -78
- data/lib/spectre/ftp.rb +0 -195
- data/lib/spectre/mysql.rb +0 -97
- data/lib/spectre/ssh.rb +0 -149
data/lib/spectre/assertion.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require_relative '../spectre'
|
2
|
+
|
1
3
|
require 'ostruct'
|
2
4
|
require_relative 'logger'
|
3
5
|
|
@@ -6,19 +8,19 @@ module Spectre
|
|
6
8
|
module Assertion
|
7
9
|
class ::Object
|
8
10
|
def should_be(val)
|
9
|
-
|
11
|
+
raise AssertionFailure.new("The value '#{self.to_s.trim}' should be '#{val.to_s.trim}'", val, self) unless self.to_s == val.to_s
|
10
12
|
end
|
11
13
|
|
12
14
|
def should_be_empty
|
13
|
-
raise AssertionFailure.new("The value '#{self.to_s.trim}' should be empty", nil, self) unless self
|
15
|
+
raise AssertionFailure.new("The value '#{self.to_s.trim}' should be empty", nil, self) unless self.nil?
|
14
16
|
end
|
15
17
|
|
16
18
|
def should_not_be(val)
|
17
|
-
|
19
|
+
raise AssertionFailure.new("The value '#{self.to_s.trim}' should not be '#{val.to_s.trim}'", val, self) unless self.to_s != val.to_s
|
18
20
|
end
|
19
21
|
|
20
22
|
def should_not_exist
|
21
|
-
|
23
|
+
raise AssertionFailure.new("The value '#{self.to_s.trim}' should not exist, but it does", val, self) unless self.to_s != nil
|
22
24
|
end
|
23
25
|
|
24
26
|
def should_not_be_empty
|
@@ -34,7 +36,6 @@ module Spectre
|
|
34
36
|
end
|
35
37
|
end
|
36
38
|
|
37
|
-
|
38
39
|
class ::NilClass
|
39
40
|
def should_be(val)
|
40
41
|
raise AssertionFailure.new("There is nothing, but the value should be '#{val.to_s.trim}'", val, nil) unless val == nil
|
@@ -55,7 +56,6 @@ module Spectre
|
|
55
56
|
end
|
56
57
|
end
|
57
58
|
|
58
|
-
|
59
59
|
class ::Hash
|
60
60
|
def should_contain(other)
|
61
61
|
raise AssertionFailure.new(other, self) unless self.merge(other) == self
|
@@ -64,8 +64,25 @@ module Spectre
|
|
64
64
|
def should_not_contain(other)
|
65
65
|
raise AssertionFailure.new(other, self) unless self.merge(other) != self
|
66
66
|
end
|
67
|
+
|
68
|
+
def should_be_empty
|
69
|
+
raise AssertionFailure.new("The object should be empty", nil, self) unless self.empty?
|
70
|
+
end
|
71
|
+
|
72
|
+
def should_not_be_empty
|
73
|
+
raise AssertionFailure.new("The object should not be empty", nil, self) if self.empty?
|
74
|
+
end
|
67
75
|
end
|
68
76
|
|
77
|
+
class ::OpenStruct
|
78
|
+
def should_be_empty
|
79
|
+
raise AssertionFailure.new("The object should be empty", nil, self) unless self.to_h.empty?
|
80
|
+
end
|
81
|
+
|
82
|
+
def should_not_be_empty
|
83
|
+
raise AssertionFailure.new("The object should not be empty", nil, self) if self.to_h.empty?
|
84
|
+
end
|
85
|
+
end
|
69
86
|
|
70
87
|
class ::Array
|
71
88
|
def should_contain(val)
|
@@ -76,7 +93,7 @@ module Spectre
|
|
76
93
|
val = OpenStruct.new(val)
|
77
94
|
end
|
78
95
|
|
79
|
-
raise AssertionFailure.new("The list [#{list.join(', ').trim}] should contain '#{val.trim}'", val, list) unless list.include? val
|
96
|
+
raise AssertionFailure.new("The list [#{list.join(', ').trim}] should contain '#{val.to_s.trim}'", val, list) unless list.include? val
|
80
97
|
end
|
81
98
|
|
82
99
|
def should_not_contain(val)
|
@@ -87,19 +104,18 @@ module Spectre
|
|
87
104
|
val = OpenStruct.new(val)
|
88
105
|
end
|
89
106
|
|
90
|
-
raise AssertionFailure.new("The list [#{list.join(', ').trim}] should not contain '#{val.trim}'", val, list) if list.include? val
|
107
|
+
raise AssertionFailure.new("The list [#{list.join(', ').trim}] should not contain '#{val.to_s.trim}'", val, list) if list.include? val
|
91
108
|
end
|
92
109
|
|
93
110
|
def should_be_empty
|
94
|
-
raise AssertionFailure.new('empty list', self) unless self.
|
111
|
+
raise AssertionFailure.new('empty list', self) unless self.empty?
|
95
112
|
end
|
96
113
|
|
97
114
|
def should_not_be_empty
|
98
|
-
raise AssertionFailure.new('no empty list', self)
|
115
|
+
raise AssertionFailure.new('no empty list', self) if self.empty?
|
99
116
|
end
|
100
117
|
end
|
101
118
|
|
102
|
-
|
103
119
|
class ::String
|
104
120
|
def should_be(val)
|
105
121
|
raise AssertionFailure.new("The text '#{self.trim}' should be '#{val.to_s.trim}'", val, self) unless self == val
|
@@ -110,7 +126,7 @@ module Spectre
|
|
110
126
|
end
|
111
127
|
|
112
128
|
def should_not_be(val)
|
113
|
-
|
129
|
+
raise AssertionFailure.new("The text '#{self.trim}' should not be '#{val.to_s.trim}'", val, self) unless self != val
|
114
130
|
end
|
115
131
|
|
116
132
|
def should_not_be_empty
|
@@ -118,8 +134,10 @@ module Spectre
|
|
118
134
|
end
|
119
135
|
|
120
136
|
def should_contain(value)
|
137
|
+
raise AssertionFailure.new("`value' must not be nil") if value.nil?
|
138
|
+
|
121
139
|
predicate = proc { |x| self.include? x.to_s }
|
122
|
-
evaluation = SingleEvaluation.new
|
140
|
+
evaluation = SingleEvaluation.new(value)
|
123
141
|
success = evaluation.call(predicate)
|
124
142
|
|
125
143
|
return if success
|
@@ -143,7 +161,6 @@ module Spectre
|
|
143
161
|
alias :& :and
|
144
162
|
end
|
145
163
|
|
146
|
-
|
147
164
|
class Evaluation
|
148
165
|
def initialize value, other
|
149
166
|
@value = value
|
@@ -162,10 +179,9 @@ module Spectre
|
|
162
179
|
alias :& :and
|
163
180
|
end
|
164
181
|
|
165
|
-
|
166
182
|
class SingleEvaluation < Evaluation
|
167
183
|
def initialize value
|
168
|
-
super
|
184
|
+
super(value, nil)
|
169
185
|
end
|
170
186
|
|
171
187
|
def call predicate
|
@@ -177,10 +193,9 @@ module Spectre
|
|
177
193
|
end
|
178
194
|
end
|
179
195
|
|
180
|
-
|
181
196
|
class OrEvaluation < Evaluation
|
182
197
|
def initialize value, other
|
183
|
-
super
|
198
|
+
super(value, other)
|
184
199
|
end
|
185
200
|
|
186
201
|
def call predicate
|
@@ -192,10 +207,9 @@ module Spectre
|
|
192
207
|
end
|
193
208
|
end
|
194
209
|
|
195
|
-
|
196
210
|
class AndEvaluation < Evaluation
|
197
211
|
def initialize value, other
|
198
|
-
super
|
212
|
+
super(value, other)
|
199
213
|
end
|
200
214
|
|
201
215
|
def call predicate
|
@@ -207,7 +221,6 @@ module Spectre
|
|
207
221
|
end
|
208
222
|
end
|
209
223
|
|
210
|
-
|
211
224
|
class AssertionFailure < ExpectationFailure
|
212
225
|
attr_reader :expected, :actual
|
213
226
|
|
@@ -222,27 +235,16 @@ module Spectre
|
|
222
235
|
class << self
|
223
236
|
@@success = nil
|
224
237
|
|
225
|
-
def eval_assertion predicate, val
|
226
|
-
if val.is_a? Proc
|
227
|
-
val.call(predicate)
|
228
|
-
else
|
229
|
-
predicate.call(val)
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
238
|
def expect desc
|
234
239
|
begin
|
235
240
|
Logger.log_process("expect #{desc}")
|
236
241
|
yield
|
237
242
|
Logger.log_status(desc, Logger::Status::OK)
|
238
|
-
|
239
243
|
rescue Interrupt => e
|
240
244
|
raise e
|
241
|
-
|
242
245
|
rescue AssertionFailure => e
|
243
246
|
Logger.log_status(desc, Logger::Status::FAILED)
|
244
247
|
raise AssertionFailure.new(e.message, e.expected, e.actual, desc), cause: nil
|
245
|
-
|
246
248
|
rescue Exception => e
|
247
249
|
Logger.log_status(desc, Logger::Status::ERROR)
|
248
250
|
raise AssertionFailure.new("An unexpected error occured during expectation: #{e.message}", nil, nil, desc), cause: e
|
@@ -250,15 +252,21 @@ module Spectre
|
|
250
252
|
end
|
251
253
|
|
252
254
|
def observe desc = nil
|
255
|
+
prefix = "observing"
|
256
|
+
prefix += " '#{desc}'" if desc
|
257
|
+
|
253
258
|
begin
|
254
|
-
Logger.log_info(
|
259
|
+
Logger.log_info(prefix) if desc
|
255
260
|
yield
|
256
261
|
@@success = true
|
257
|
-
|
262
|
+
@@logger.info("#{prefix} finished with success")
|
258
263
|
rescue Interrupt => e
|
259
264
|
raise e
|
260
|
-
|
261
265
|
rescue Exception => e
|
266
|
+
error_message = "#{prefix} finished with failure: #{e.message}"
|
267
|
+
error_message += "\n" + e.backtrace.join("\n") if @@debug
|
268
|
+
|
269
|
+
@@logger.info(error_message)
|
262
270
|
@@success = false
|
263
271
|
end
|
264
272
|
end
|
@@ -272,6 +280,11 @@ module Spectre
|
|
272
280
|
end
|
273
281
|
end
|
274
282
|
|
283
|
+
Spectre.register do |config|
|
284
|
+
@@logger = ::Logger.new(config['log_file'], progname: 'spectre/assertion')
|
285
|
+
@@debug = config['debug']
|
286
|
+
end
|
287
|
+
|
275
288
|
Spectre.delegate :expect, :observe, :success?, :fail_with, to: self
|
276
289
|
end
|
277
290
|
end
|
data/lib/spectre/bag.rb
CHANGED
@@ -1,19 +1,21 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
1
|
+
require_relative '../spectre'
|
2
|
+
|
3
|
+
require 'ostruct'
|
4
|
+
|
5
|
+
module Spectre
|
6
|
+
module Bag
|
7
|
+
class << self
|
8
|
+
@@bag
|
9
|
+
|
10
|
+
def bag
|
11
|
+
@@bag
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
Spectre.register do |config|
|
16
|
+
@@bag = OpenStruct.new
|
17
|
+
end
|
18
|
+
|
19
|
+
Spectre.delegate :bag, to: self
|
20
|
+
end
|
21
|
+
end
|