theorem 1.2.3 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 510e3aaddc01eb3545cf4977b01d94b40940f390b9c8ddc91aa01db2eca6cf03
4
- data.tar.gz: 357e1c62b31bd700fa3aff4671dedb777867e3879f5de8ab4738535ab0e4c726
3
+ metadata.gz: 482c54bf255ca8192a63190101ea3ff32aaf902d37c6badae8e52966d2222d66
4
+ data.tar.gz: 8728e81f43d1acbc6f99a553de5400d253325e9b8ba13ba5d788be817c6f0f42
5
5
  SHA512:
6
- metadata.gz: 4f7d8754fc5e3549ce677098c348d4d8aa7dc03018337d44634adcf1ff932bd0ad8666ae0faef01f2c95d4508e11450075cee5fc500b87a67cc66f6313a80dfd
7
- data.tar.gz: 6d0333b789ea2e2d13707be0039533421ce65bef5b9b55064cc6683ac15323900a7040d23a34218d1a05858c150d60cded6445f440448a41c6ec68c4b5bf02f0
6
+ metadata.gz: 9d8a3adabb93286bfcc8679e9437378c36c447395fa3d7e51e39d26cfd56d17dec529cc1ce30bd5ac9d805a7bba952521afca39bceb546f44168a2068a28bf76
7
+ data.tar.gz: 0efadbdc23011608363b7ca4b617fbcb0e103045104e23a71e2aca10554a1a8e44a3912ce6e07aba9211919c5d07738da314361546ced2454f43ca239cf810de
@@ -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 reverse_prepare(&block)
66
- @state.unshift block
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/let.rb CHANGED
@@ -4,7 +4,6 @@ module Theorem
4
4
  module Control
5
5
  # compatibility with let in rspec
6
6
  module Let
7
-
8
7
  def let(name, &block)
9
8
  setup_let(name, &block)
10
9
  instance_exec @let_registry do |registry|
@@ -25,7 +24,6 @@ module Theorem
25
24
 
26
25
  def let_it_be(name, &block)
27
26
  setup_let(name, :let_it_be, &block)
28
- something = binding
29
27
  instance_exec @let_registry do |registry|
30
28
  @before_all.prepare do
31
29
  define_singleton_method name do
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
- @parent_before_all << me.before_all_beaker
40
+ @before_all.concat me.before_all_beaker
40
41
 
41
42
  @parent_before_each ||= []
42
- @parent_before_each << me.before_each_beaker
43
+ @before_each.concat me.before_each_beaker
43
44
 
44
45
  @parent_after_each ||= []
45
- @parent_after_each.unshift me.after_each_beaker
46
+ @after_each.concat me.after_each_beaker
46
47
 
47
48
  @parent_after_all ||= []
48
- @parent_after_all.unshift me.after_all_beaker
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.reverse_prepare(&block)
67
+ @after_each.prepare(&block)
67
68
  end
68
69
 
69
70
  def after_all(&block)
70
- @after_all.reverse_prepare(&block)
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.run!(test_case)
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.run!(test_case)
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.3
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 00:00:00.000000000 Z
11
+ date: 2022-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: extended_dir