theorem 1.2.3 → 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
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