theorem 1.2.1 → 1.2.4
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/publishers/stdout_reporter.rb +5 -5
- data/src/theorem/beaker.rb +10 -2
- data/src/theorem/hypothesis.rb +2 -0
- data/src/theorem/let.rb +57 -0
- data/src/theorem/test.rb +11 -22
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 482c54bf255ca8192a63190101ea3ff32aaf902d37c6badae8e52966d2222d66
|
4
|
+
data.tar.gz: 8728e81f43d1acbc6f99a553de5400d253325e9b8ba13ba5d788be817c6f0f42
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d8a3adabb93286bfcc8679e9437378c36c447395fa3d7e51e39d26cfd56d17dec529cc1ce30bd5ac9d805a7bba952521afca39bceb546f44168a2068a28bf76
|
7
|
+
data.tar.gz: 0efadbdc23011608363b7ca4b617fbcb0e103045104e23a71e2aca10554a1a8e44a3912ce6e07aba9211919c5d07738da314361546ced2454f43ca239cf810de
|
@@ -68,7 +68,7 @@ module Theorem
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
hash = {}
|
71
|
-
hash[:percentile] = (below.size.to_f / sorted.size.to_f) * 100
|
71
|
+
hash[:percentile] = (below.size.to_f / (sorted.size.to_f + 1)) * 100
|
72
72
|
hash[:test] = test
|
73
73
|
arr << hash
|
74
74
|
end
|
@@ -90,12 +90,12 @@ module Theorem
|
|
90
90
|
return 'Not run' if test[:test].duration.nil?
|
91
91
|
|
92
92
|
str = "#{format('%<num>0.10f', num: test[:test].duration)} seconds"
|
93
|
-
rank =
|
94
|
-
if rank <
|
93
|
+
rank = test[:percentile]
|
94
|
+
if rank < 10
|
95
95
|
str.red
|
96
|
-
elsif rank >
|
96
|
+
elsif rank > 90
|
97
97
|
str.green
|
98
|
-
elsif rank <
|
98
|
+
elsif rank < 30
|
99
99
|
str.yellow
|
100
100
|
else
|
101
101
|
str
|
data/src/theorem/beaker.rb
CHANGED
@@ -50,6 +50,14 @@ module Theorem
|
|
50
50
|
@state = []
|
51
51
|
end
|
52
52
|
|
53
|
+
def reverse_run!(ctx)
|
54
|
+
ctx.instance_exec @state.reverse, ctx do |state, ctx|
|
55
|
+
state.each do |b|
|
56
|
+
ctx.instance_eval &b
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
53
61
|
def run!(ctx)
|
54
62
|
ctx.instance_exec @state, ctx do |state, ctx|
|
55
63
|
state.each do |b|
|
@@ -62,8 +70,8 @@ module Theorem
|
|
62
70
|
@state.empty?
|
63
71
|
end
|
64
72
|
|
65
|
-
def
|
66
|
-
@state.
|
73
|
+
def concat(beaker)
|
74
|
+
@state.concat beaker.instance_variable_get('@state')
|
67
75
|
end
|
68
76
|
|
69
77
|
def prepare(&block)
|
data/src/theorem/hypothesis.rb
CHANGED
@@ -4,6 +4,7 @@ require_relative 'completed_test'
|
|
4
4
|
require_relative 'beaker'
|
5
5
|
require_relative 'registry'
|
6
6
|
require_relative 'test'
|
7
|
+
require_relative 'let'
|
7
8
|
|
8
9
|
module Theorem
|
9
10
|
module Control
|
@@ -25,6 +26,7 @@ module Theorem
|
|
25
26
|
block.call(@notary)
|
26
27
|
end
|
27
28
|
|
29
|
+
klass.extend Let
|
28
30
|
klass.extend ClassMethods
|
29
31
|
klass.instance_eval do
|
30
32
|
@before_all ||= Beaker.new
|
data/src/theorem/let.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Theorem
|
4
|
+
module Control
|
5
|
+
# compatibility with let in rspec
|
6
|
+
module Let
|
7
|
+
def let(name, &block)
|
8
|
+
setup_let(name, &block)
|
9
|
+
instance_exec @let_registry do |registry|
|
10
|
+
@before_each.prepare do
|
11
|
+
define_singleton_method name do
|
12
|
+
raise "can't find #{name}" unless registry[:let][name]
|
13
|
+
|
14
|
+
registry[:let][name][:value] ||= instance_exec ®istry[:let][name][:block]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
@after_each.prepare do
|
19
|
+
registry[:let][name][:value] = nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
alias_method :each_with, :let
|
24
|
+
|
25
|
+
def let_it_be(name, &block)
|
26
|
+
setup_let(name, :let_it_be, &block)
|
27
|
+
instance_exec @let_registry do |registry|
|
28
|
+
@before_all.prepare do
|
29
|
+
define_singleton_method name do
|
30
|
+
raise "can't find #{name}" unless registry[:let_it_be][name]
|
31
|
+
|
32
|
+
registry[:let_it_be][name][:value] ||= instance_exec ®istry[:let_it_be][name][:block]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
@after_all.prepare do
|
36
|
+
registry[:let_it_be][name][:value] = nil
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
alias_method :all_with, :let_it_be
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def setup_let(name, type=:let, &block)
|
45
|
+
@let_registry ||= {}
|
46
|
+
@let_registry[type] ||= {}
|
47
|
+
@let_registry[type][name] = { block: block, value: nil }
|
48
|
+
|
49
|
+
define_singleton_method name do
|
50
|
+
raise "can't find #{name}" unless @let_registry[type][name]
|
51
|
+
|
52
|
+
@let_registry[type][name][:value] ||= @let_registry[type][name][:block].call
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/src/theorem/test.rb
CHANGED
@@ -33,19 +33,20 @@ module Theorem
|
|
33
33
|
# module
|
34
34
|
module ClassMethods
|
35
35
|
def inherited(klass)
|
36
|
+
klass.extend ClassMethods
|
36
37
|
klass.include(control)
|
37
38
|
klass.instance_exec self do |me|
|
38
39
|
@parent_before_all ||= []
|
39
|
-
@
|
40
|
+
@before_all.concat me.before_all_beaker
|
40
41
|
|
41
42
|
@parent_before_each ||= []
|
42
|
-
@
|
43
|
+
@before_each.concat me.before_each_beaker
|
43
44
|
|
44
45
|
@parent_after_each ||= []
|
45
|
-
@
|
46
|
+
@after_each.concat me.after_each_beaker
|
46
47
|
|
47
48
|
@parent_after_all ||= []
|
48
|
-
@
|
49
|
+
@after_all.concat me.after_all_beaker
|
49
50
|
end
|
50
51
|
super
|
51
52
|
end
|
@@ -63,11 +64,11 @@ module Theorem
|
|
63
64
|
end
|
64
65
|
|
65
66
|
def after_each(&block)
|
66
|
-
@after_each.
|
67
|
+
@after_each.prepare(&block)
|
67
68
|
end
|
68
69
|
|
69
70
|
def after_all(&block)
|
70
|
-
@after_all.
|
71
|
+
@after_all.prepare(&block)
|
71
72
|
end
|
72
73
|
|
73
74
|
def experiments(klass, **opts, &block)
|
@@ -104,6 +105,8 @@ module Theorem
|
|
104
105
|
end
|
105
106
|
|
106
107
|
def run!
|
108
|
+
return [] if @tests.empty?
|
109
|
+
|
107
110
|
test_case = new
|
108
111
|
|
109
112
|
# run before all beakers to create state in test case
|
@@ -183,11 +186,7 @@ module Theorem
|
|
183
186
|
end
|
184
187
|
|
185
188
|
def run_after_all_beakers(results, test_case)
|
186
|
-
@after_all.
|
187
|
-
|
188
|
-
@parent_after_all&.each do |beaker|
|
189
|
-
beaker.run!(test_case)
|
190
|
-
end
|
189
|
+
@after_all.reverse_run!(test_case)
|
191
190
|
|
192
191
|
[]
|
193
192
|
rescue Exception => error
|
@@ -202,11 +201,7 @@ module Theorem
|
|
202
201
|
end
|
203
202
|
|
204
203
|
def run_after_each_beakers(test_case)
|
205
|
-
@after_each.
|
206
|
-
|
207
|
-
@parent_after_each&.each do |beaker|
|
208
|
-
beaker.run!(test_case)
|
209
|
-
end
|
204
|
+
@after_each.reverse_run!(test_case)
|
210
205
|
nil
|
211
206
|
rescue Exception => error
|
212
207
|
Theorem.handle_exception(error)
|
@@ -215,9 +210,6 @@ module Theorem
|
|
215
210
|
end
|
216
211
|
|
217
212
|
def run_before_each_beakers(test_case)
|
218
|
-
@parent_before_each&.each do |beaker|
|
219
|
-
beaker.run!(test_case)
|
220
|
-
end
|
221
213
|
@before_each.run!(test_case)
|
222
214
|
nil
|
223
215
|
rescue Exception => error
|
@@ -227,9 +219,6 @@ module Theorem
|
|
227
219
|
end
|
228
220
|
|
229
221
|
def run_before_all_beakers(test_case)
|
230
|
-
@parent_before_all&.each do |beaker|
|
231
|
-
beaker.run!(test_case)
|
232
|
-
end
|
233
222
|
@before_all.run!(test_case)
|
234
223
|
[]
|
235
224
|
rescue Exception => error
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: theorem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Gregory
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-04-
|
11
|
+
date: 2022-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: extended_dir
|
@@ -124,6 +124,7 @@ files:
|
|
124
124
|
- src/theorem/completed_test.rb
|
125
125
|
- src/theorem/harness.rb
|
126
126
|
- src/theorem/hypothesis.rb
|
127
|
+
- src/theorem/let.rb
|
127
128
|
- src/theorem/notation.rb
|
128
129
|
- src/theorem/registry.rb
|
129
130
|
- src/theorem/reporter.rb
|