theorem 1.1.0 → 1.2.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/src/theorem/completed_test.rb +6 -1
- data/src/theorem/hypothesis.rb +10 -0
- data/src/theorem/notation.rb +33 -0
- data/src/theorem/test.rb +29 -7
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 433696da9dd29c04e52b86d753dbbc73aba33fdb3e2a14a1c7e03dc4f7f1c2c9
|
4
|
+
data.tar.gz: 42f41fc806176cecbcce43441ace89126e751bed7ab23b103b91477451b243c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 336ef51f1a4b3bfe1b34da109e8ab193a10aff873a3e4151c4d3a754be479bec455aae731886f8a35c769effc1f89b439ef66055b6a62b096b5fa53ec966c3a4
|
7
|
+
data.tar.gz: e5454f1c81f833480f2b5eccbe9f516f9a4826c7ae743f47c1e4112123b0c558220b2dde81eb918929622aca286ba67b8679f3a3cc1a71dee14313a80e8f1b9c
|
@@ -6,9 +6,14 @@ module Theorem
|
|
6
6
|
class CompletedTest
|
7
7
|
attr_reader :test, :error
|
8
8
|
|
9
|
-
def initialize(test, error = nil)
|
9
|
+
def initialize(test, error = nil, notary:)
|
10
10
|
@test = test
|
11
11
|
@error = error
|
12
|
+
@notary = notary
|
13
|
+
end
|
14
|
+
|
15
|
+
def notary
|
16
|
+
@notary
|
12
17
|
end
|
13
18
|
|
14
19
|
def full_name
|
data/src/theorem/hypothesis.rb
CHANGED
@@ -15,6 +15,16 @@ module Theorem
|
|
15
15
|
mod
|
16
16
|
end
|
17
17
|
|
18
|
+
klass.attr_reader :notary
|
19
|
+
|
20
|
+
klass.define_method :initialize do
|
21
|
+
@notary = Notation.new
|
22
|
+
end
|
23
|
+
|
24
|
+
klass.define_method :notate do |&block|
|
25
|
+
block.call(@notary)
|
26
|
+
end
|
27
|
+
|
18
28
|
klass.extend ClassMethods
|
19
29
|
klass.instance_eval do
|
20
30
|
@before_all ||= Beaker.new
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Theorem
|
4
|
+
module Control
|
5
|
+
class Notation
|
6
|
+
def initialize(state = {})
|
7
|
+
@state = state
|
8
|
+
end
|
9
|
+
|
10
|
+
def write(key, value)
|
11
|
+
@state[key] = value
|
12
|
+
end
|
13
|
+
|
14
|
+
def read(key)
|
15
|
+
@state[key]
|
16
|
+
end
|
17
|
+
|
18
|
+
def dump
|
19
|
+
@state
|
20
|
+
end
|
21
|
+
|
22
|
+
def merge(notary)
|
23
|
+
Notation.new(@state.merge(notary.dump))
|
24
|
+
end
|
25
|
+
|
26
|
+
def edit(key, &block)
|
27
|
+
data = read(key)
|
28
|
+
block.call(data)
|
29
|
+
write(key, data)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/src/theorem/test.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require_relative './beaker'
|
3
|
+
require_relative 'notation'
|
3
4
|
|
4
5
|
module Theorem
|
5
6
|
module Control
|
@@ -11,14 +12,19 @@ module Theorem
|
|
11
12
|
@block = block
|
12
13
|
@arguments = arguments
|
13
14
|
@metadata = metadata
|
15
|
+
@notary = Notation.new
|
14
16
|
end
|
15
17
|
|
16
|
-
attr_reader :block, :name, :arguments, :namespace, :metadata
|
18
|
+
attr_reader :block, :name, :arguments, :namespace, :metadata, :notary
|
17
19
|
|
18
20
|
def full_name
|
19
21
|
"#{namespace} #{name}"
|
20
22
|
end
|
21
23
|
|
24
|
+
def notate(&block)
|
25
|
+
block.call(notary)
|
26
|
+
end
|
27
|
+
|
22
28
|
def run!(ctx)
|
23
29
|
ctx.instance_exec self, **arguments, &block
|
24
30
|
end
|
@@ -100,27 +106,43 @@ module Theorem
|
|
100
106
|
def run!
|
101
107
|
test_case = new
|
102
108
|
|
109
|
+
# run before all beakers to create state in test case
|
103
110
|
before_failures = run_before_all_beakers(test_case)
|
111
|
+
|
104
112
|
if before_failures.any?
|
105
113
|
return before_failures
|
106
114
|
end
|
107
115
|
|
116
|
+
# duplicate the before_all arrangement for the after all hook
|
117
|
+
duplicate_test_case = test_case.clone
|
118
|
+
|
108
119
|
results = []
|
109
120
|
@tests.each do |test|
|
110
121
|
error ||= run_before_each_beakers(test_case)
|
111
|
-
|
112
|
-
|
122
|
+
before_test_case = test_case.clone
|
123
|
+
|
124
|
+
error ||= run_test(test, before_test_case)
|
113
125
|
|
114
|
-
|
126
|
+
error ||= run_after_each_beakers(before_test_case)
|
127
|
+
|
128
|
+
notary = test_case.notary.merge(test.notary)
|
129
|
+
|
130
|
+
completed_test = CompletedTest.new(test, error, notary: notary.dump)
|
115
131
|
publish_test_completion(completed_test)
|
116
132
|
results << completed_test
|
117
133
|
end
|
118
134
|
|
119
|
-
after_failures = run_after_all_beakers(
|
135
|
+
after_failures = run_after_all_beakers(duplicate_test_case)
|
136
|
+
|
120
137
|
if after_failures.any?
|
121
138
|
return after_failures
|
122
139
|
end
|
123
140
|
|
141
|
+
results.each do |completed_test|
|
142
|
+
# merge any after_all notations
|
143
|
+
completed_test.notary.merge!(duplicate_test_case.notary.dump)
|
144
|
+
end
|
145
|
+
|
124
146
|
results
|
125
147
|
end
|
126
148
|
|
@@ -153,7 +175,7 @@ module Theorem
|
|
153
175
|
Theorem.handle_exception(error)
|
154
176
|
|
155
177
|
@tests.map do |test|
|
156
|
-
CompletedTest.new(test, error)
|
178
|
+
CompletedTest.new(test, error, notary: test_case.notary)
|
157
179
|
end
|
158
180
|
end
|
159
181
|
|
@@ -192,7 +214,7 @@ module Theorem
|
|
192
214
|
Theorem.handle_exception(error)
|
193
215
|
|
194
216
|
@tests.map do |test|
|
195
|
-
CompletedTest.new(test, error)
|
217
|
+
CompletedTest.new(test, error, notary: test_case.notary)
|
196
218
|
end
|
197
219
|
end
|
198
220
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: theorem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Gregory
|
@@ -96,6 +96,7 @@ files:
|
|
96
96
|
- src/theorem/completed_test.rb
|
97
97
|
- src/theorem/harness.rb
|
98
98
|
- src/theorem/hypothesis.rb
|
99
|
+
- src/theorem/notation.rb
|
99
100
|
- src/theorem/registry.rb
|
100
101
|
- src/theorem/reporter.rb
|
101
102
|
- src/theorem/test.rb
|