minitest-bang 1.0.4 → 1.1.0.beta

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
  SHA1:
3
- metadata.gz: 9ba29e21e6c4caef88885884164781f6f5bf4b01
4
- data.tar.gz: 9044189d6f029e6d266831d212ae607ae1f1c474
3
+ metadata.gz: ea4ee63404be924d6133aab08acd463921c03856
4
+ data.tar.gz: c1f6123c3f2b89944dabc9adbd846e4a679177ba
5
5
  SHA512:
6
- metadata.gz: 59102e3c4f089ae5ffa0fb31a8b7b9fc593a3297b415b644767989fc79d65f91e830e87b75081585ef9f33d2785bc9094d6813bf9a4ca447c8f316ea432837f3
7
- data.tar.gz: 4dfdcf5b28e147f158ad707c8318ae74158f69ed82904b8fbd33c0433f851091570e8332ba7dc3cd14685ed2a2d562009cd38eafd04a96d98ff34944f83d0490
6
+ metadata.gz: fdfdb293e730ae6a2c27d3e64bd8a7d0c0f74df5936dac514fa9f17098f2795c8cbd69e9248af853ed2071aec86c07e3cb04b715a4c9cad5024abd2e3ffea5e6
7
+ data.tar.gz: 5fa6be9fca4b4bc91d8332cf40ed272af605318a382c9ecf09fa076c8e3131a58fcef2acb00c67700a447df18a4243694fa63b15f210bdfbde9e67a4b6d08325
data/lib/minitest/bang.rb CHANGED
@@ -5,9 +5,7 @@ module Minitest
5
5
  module Bang
6
6
  def before_setup
7
7
  super
8
- self.class.bangs.each do |bang|
9
- send(bang)
10
- end
8
+ self.class.all_bangs.each(&method(:send))
11
9
  end
12
10
  end
13
11
 
data/lib/minitest/dsl.rb CHANGED
@@ -3,21 +3,45 @@ require 'minitest/spec'
3
3
 
4
4
  module Minitest
5
5
  module Spec::DSL
6
- def bangs
7
- @bangs ||= Set.new
8
- @bangs = @bangs + bangs_from_parent_scope
9
- end
10
6
 
11
7
  def let!(name, &block)
12
8
  let(name, &block)
13
9
  bangs << name
14
10
  end
15
11
 
12
+ def all_bangs
13
+ return Set.new if @before_ran
14
+ bangs + bangs_from_parent_scope
15
+ end
16
+
16
17
  private
17
18
 
19
+ def bangs
20
+ @bangs ||= Set.new
21
+ end
22
+
23
+ def before_with_bangs(_type=nil, &block)
24
+ @before_ran = true
25
+
26
+ before_bangs = Set.new(bangs + bangs_from_parent_scope)
27
+ bangs.clear
28
+ after_bangs = bangs
29
+
30
+ block_with_bangs = ->(arg) do
31
+ before_bangs.each(&method(:send))
32
+ self.instance_exec(arg, &block)
33
+ after_bangs.each(&method(:send))
34
+ end
35
+
36
+ before_without_bangs(_type, &block_with_bangs)
37
+ end
38
+
39
+ alias_method :before_without_bangs, :before
40
+ alias_method :before, :before_with_bangs
41
+
18
42
  def bangs_from_parent_scope
19
- return Set.new unless defined? self.superclass.bangs
20
- self.superclass.bangs
43
+ return Set.new unless defined? self.superclass.all_bangs
44
+ self.superclass.all_bangs
21
45
  end
22
46
  end
23
47
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-bang
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.1.0.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Stevens
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-05-17 00:00:00.000000000 Z
13
+ date: 2015-06-03 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
@@ -77,9 +77,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
77
77
  version: '0'
78
78
  required_rubygems_version: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - ">"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 1.3.1
83
83
  requirements: []
84
84
  rubyforge_project:
85
85
  rubygems_version: 2.4.6