handshake 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest.txt CHANGED
@@ -10,3 +10,4 @@ lib/handshake/inheritable_attributes.rb
10
10
  lib/handshake/proxy_self.rb
11
11
  lib/handshake/version.rb
12
12
  test/tc_handshake.rb
13
+ test/tc_disable_handshake.rb
data/README.txt CHANGED
@@ -5,6 +5,9 @@ It's intended to allow Ruby developers to apply simple, clear constraints
5
5
  to their methods and classes. Handshake is written by Brian Guthrie
6
6
  (btguthrie@gmail.com) and lives at http://handshake.rubyforge.org.
7
7
 
8
+ Contracts defined with Handshake are not enforced unless the global $DEBUG
9
+ flag is set.
10
+
8
11
  === Features
9
12
 
10
13
  * Method signature contracts
@@ -1,8 +1,8 @@
1
1
  module Handshake # :nodoc:
2
2
  module VERSION # :nodoc:
3
3
  MAJOR = 0
4
- MINOR = 2
5
- TINY = 1
4
+ MINOR = 3
5
+ TINY = 0
6
6
  STRING = [MAJOR, MINOR, TINY].join('.')
7
7
  end
8
8
  end
data/lib/handshake.rb CHANGED
@@ -46,6 +46,10 @@ module Handshake
46
46
  base.class_inheritable_hash :method_contracts
47
47
  base.write_inheritable_hash :method_contracts, {}
48
48
 
49
+ # No contracts will ever be checked if we return now, so it's a good place
50
+ # to put the $DEBUG flag check.
51
+ return unless $DEBUG
52
+
49
53
  class << base
50
54
  alias :instantiate :new
51
55
  # Override the class-level new method of every class that includes
@@ -0,0 +1,29 @@
1
+ require 'test/unit'
2
+ require 'handshake'
3
+
4
+ # The purpose of this test case is to ensure that when the $DEBUG flag is not
5
+ # set contracts may still be declared without raising a syntax error, although
6
+ # they are not enforced.
7
+ class TestDisableHandshake < Test::Unit::TestCase
8
+
9
+ class ComprehensiveContracts
10
+ include Handshake
11
+
12
+ invariant("foo must always be true") { @foo == true }
13
+
14
+ contract /foo/ => /bar/
15
+ before do |arg|
16
+ assert_equal "foo", arg
17
+ end
18
+ after do |arg, returned|
19
+ assert_equal "bar", returned
20
+ end
21
+ def call(str); "baz"; end
22
+ end
23
+
24
+ def test_contracts_not_enforced
25
+ assert_nothing_raised { ComprehensiveContracts.new }
26
+ assert_nothing_raised { ComprehensiveContracts.new.call 3 }
27
+ end
28
+
29
+ end
data/test/tc_handshake.rb CHANGED
@@ -1,28 +1,8 @@
1
- # test_handshake.rb
2
- # Copyright (c) 2007 Brian Guthrie
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining
5
- # a copy of this software and associated documentation files (the
6
- # "Software"), to deal in the Software without restriction, including
7
- # without limitation the rights to use, copy, modify, merge, publish,
8
- # distribute, sublicense, and/or sell copies of the Software, and to
9
- # permit persons to whom the Software is furnished to do so, subject to
10
- # the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be
13
- # included in all copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
-
23
1
  require 'test/unit'
24
2
  require 'handshake'
25
3
 
4
+ $DEBUG = true
5
+
26
6
  class TestContract < Test::Unit::TestCase
27
7
 
28
8
  class InvariantDeclarations
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: handshake
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.1
7
- date: 2007-05-02 00:00:00 -04:00
6
+ version: 0.3.0
7
+ date: 2007-05-03 00:00:00 -04:00
8
8
  summary: Handshake is a simple design-by-contract system for Ruby.
9
9
  require_paths:
10
10
  - lib
@@ -40,7 +40,9 @@ files:
40
40
  - lib/handshake/proxy_self.rb
41
41
  - lib/handshake/version.rb
42
42
  - test/tc_handshake.rb
43
+ - test/tc_disable_handshake.rb
43
44
  test_files:
45
+ - test/tc_disable_handshake.rb
44
46
  - test/tc_handshake.rb
45
47
  rdoc_options: []
46
48