ruby_contracts 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -60,23 +60,16 @@ module Contracts
60
60
  __contracts = __contracts_for(name.to_s, @__contracts)
61
61
  @__contracts = Contracts::List.new
62
62
 
63
- if !__contracts.empty?
63
+ if !__contracts.first.empty?
64
64
  @__skip_other_contracts_definitions = true
65
- original_method_name = "#{name}_without_contracts"
66
- define_method(original_method_name, instance_method(name))
67
-
68
- method = <<-EOM
69
- def #{name}(*args, &block)
70
- __args = block.nil? ? args : args + [block]
71
- self.class.__eval_before_contracts("#{name}", self, __args)
72
- result = #{original_method_name}(*args, &block)
73
- self.class.__eval_after_contracts("#{name}", self, __args, result)
74
- return result
75
- end
76
- EOM
77
-
78
- class_eval method
79
-
65
+ original_method = instance_method(name)
66
+ define_method(name) do |*args, &block|
67
+ __args = block.nil? ? args : args + [block]
68
+ self.class.__eval_before_contracts(name.to_s, self, __args)
69
+ result = original_method.bind(self).(*args, &block)
70
+ self.class.__eval_after_contracts(name.to_s, self, __args, result)
71
+ return result
72
+ end
80
73
  @__skip_other_contracts_definitions = false
81
74
  end
82
75
  end
@@ -1,3 +1,3 @@
1
1
  module RubyContracts
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
@@ -15,11 +15,11 @@ class Parent
15
15
  pre "n > minimum_incr" do |n| n > minimum_incr end
16
16
  post "value == old value + n" do "[dummy]" end
17
17
  def increment(n)
18
- value += n
18
+ @value += n
19
19
  end
20
20
 
21
21
  def to_s
22
- value.to_s
22
+ @value.to_s
23
23
  end
24
24
  end
25
25
 
@@ -35,3 +35,9 @@ class ChildWithAddedPrecondition < Parent
35
35
  @value += n
36
36
  end
37
37
  end
38
+
39
+ class ChildWithSuper < Parent
40
+ def increment(n)
41
+ super
42
+ end
43
+ end
@@ -46,5 +46,13 @@ describe 'the contracts behavior in an inheritance context' do
46
46
  end
47
47
  end
48
48
  end
49
+
50
+ describe 'the super keyword usage' do
51
+ let(:child) { ChildWithSuper.new(10, 3) }
52
+
53
+ it 'does not raise any error' do
54
+ child.increment(5).wont_be_nil
55
+ end
56
+ end
49
57
  end
50
58
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_contracts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-16 00:00:00.000000000 Z
12
+ date: 2013-06-17 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Micro DSL to add pre & post condition to methods. It tries to bring some
15
15
  design by contract in the Ruby world.