theorem 1.2.4 → 1.2.5

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: 482c54bf255ca8192a63190101ea3ff32aaf902d37c6badae8e52966d2222d66
4
- data.tar.gz: 8728e81f43d1acbc6f99a553de5400d253325e9b8ba13ba5d788be817c6f0f42
3
+ metadata.gz: ee6da97e143aea34cbdcac8dc8399267376345c958186bb4fcd3db2a282553e8
4
+ data.tar.gz: 7312e470f9ad0442de46f23b8d755389a6a3c43891c1f98ed9fce1ab4ae31036
5
5
  SHA512:
6
- metadata.gz: 9d8a3adabb93286bfcc8679e9437378c36c447395fa3d7e51e39d26cfd56d17dec529cc1ce30bd5ac9d805a7bba952521afca39bceb546f44168a2068a28bf76
7
- data.tar.gz: 0efadbdc23011608363b7ca4b617fbcb0e103045104e23a71e2aca10554a1a8e44a3912ce6e07aba9211919c5d07738da314361546ced2454f43ca239cf810de
6
+ metadata.gz: 721afc1fff1e6dee399907cadfb453633ec2b848b2e847968e0ca56f7db490bb69100e3887faa3769653c7fd090ece96e3aa2527f9cb890030905063302b5ae2
7
+ data.tar.gz: 932e5c189ed8c47d3c4e96da2591bd54d17bd5c3abfb0d480db0093823dbd40d76f84ac329bcaab47b2271e364abb32ce192306fdee197e6160ab86f6d63610d
@@ -50,10 +50,15 @@ 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|
53
+ def clone
54
+ @state.map!(&:clone)
55
+ self
56
+ end
57
+
58
+ def reverse_run!(ctx, **params)
59
+ ctx.instance_exec @state.reverse, ctx, params do |state, ctx, params|
55
60
  state.each do |b|
56
- ctx.instance_eval &b
61
+ ctx.instance_exec **params, &b
57
62
  end
58
63
  end
59
64
  end
@@ -27,7 +27,8 @@ module Theorem
27
27
  inner.suite_finished_subscribers.each do |subscriber|
28
28
  subscriber.call(results, duration)
29
29
  end
30
- exit results.any?(&:failed?) ? 1 : 0
30
+
31
+ inner.instance_exec results, &mod.run_exit
31
32
  end
32
33
  end
33
34
  end
@@ -39,10 +40,18 @@ module Theorem
39
40
  @on_load_tests = block
40
41
  end
41
42
 
43
+ def on_exit(&block)
44
+ @on_exit = block
45
+ end
46
+
42
47
  def on_run(&block)
43
48
  @on_run = block
44
49
  end
45
50
 
51
+ def run_exit
52
+ @on_exit || default_exit
53
+ end
54
+
46
55
  def run_loader
47
56
  @on_run || default_runner
48
57
  end
@@ -53,6 +62,12 @@ module Theorem
53
62
 
54
63
  private
55
64
 
65
+ def default_exit
66
+ lambda do |results|
67
+ exit results.any?(&:failed?) ? 1 : 0
68
+ end
69
+ end
70
+
56
71
  def default_loader
57
72
  lambda do |options|
58
73
  directory = options[:directory] || '.'
@@ -25,7 +25,7 @@ module Theorem
25
25
 
26
26
  def edit(key, &block)
27
27
  data = read(key)
28
- block.call(data)
28
+ data = block.call(data)
29
29
  write(key, data)
30
30
  end
31
31
  end
@@ -7,7 +7,8 @@ module Theorem
7
7
  def self.extended(mod)
8
8
  mod.extend(mod)
9
9
  mod.define_singleton_method :included do |root|
10
- mod.subscriptions.each do |subscription, handler|
10
+ subscriptions = mod.subscriptions || []
11
+ subscriptions.each do |subscription, handler|
11
12
  mod.instance_exec root, subscription, handler do |root, sub, handle|
12
13
  root.send(sub, &handle)
13
14
  end
data/src/theorem/test.rb CHANGED
@@ -37,16 +37,16 @@ module Theorem
37
37
  klass.include(control)
38
38
  klass.instance_exec self do |me|
39
39
  @parent_before_all ||= []
40
- @before_all.concat me.before_all_beaker
40
+ @before_all.concat me.before_all_beaker.clone
41
41
 
42
42
  @parent_before_each ||= []
43
- @before_each.concat me.before_each_beaker
43
+ @before_each.concat me.before_each_beaker.clone
44
44
 
45
45
  @parent_after_each ||= []
46
- @after_each.concat me.after_each_beaker
46
+ @after_each.concat me.after_each_beaker.clone
47
47
 
48
48
  @parent_after_all ||= []
49
- @after_all.concat me.after_all_beaker
49
+ @after_all.concat me.after_all_beaker.clone
50
50
  end
51
51
  super
52
52
  end
@@ -132,7 +132,7 @@ module Theorem
132
132
 
133
133
  before_test_case = test_case.clone
134
134
  error ||= run_test(test, before_test_case)
135
- error ||= run_after_each_beakers(before_test_case)
135
+ error ||= run_after_each_beakers(before_test_case, error: error)
136
136
 
137
137
  notary = test_case.notary.merge(test.notary)
138
138
 
@@ -200,8 +200,8 @@ module Theorem
200
200
  results
201
201
  end
202
202
 
203
- def run_after_each_beakers(test_case)
204
- @after_each.reverse_run!(test_case)
203
+ def run_after_each_beakers(test_case, **params)
204
+ @after_each.reverse_run!(test_case, **params)
205
205
  nil
206
206
  rescue Exception => error
207
207
  Theorem.handle_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
4
+ version: 1.2.5
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-14 00:00:00.000000000 Z
11
+ date: 2022-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: extended_dir
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: parallel
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  description: simple and extensible test library toolkit
112
126
  email: sean.christopher.gregory@gmail.com
113
127
  executables: