theorem 1.2.4 → 1.2.5

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: 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: