ae 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,9 +1,43 @@
1
1
  = RELEASE HISTORY
2
2
 
3
+ == 1.4.0 / 2010-09-02
4
+
5
+ Version 1.4 brings Ruby 1.9 compatibility. The Assertor class is now a
6
+ subclass of BasicObject. This fixes an issues Assertor would had
7
+ applying to methods defined both in a class and Kernel.
8
+
9
+ Changes:
10
+
11
+ * Assertor is a subclass of BasicObject.
12
+ * Use custom BasicObject when using Ruby 1.8.
13
+ * Add #assert= which works like `assert ==`.
14
+ * Add #refute= which works like `refute ==`.
15
+
16
+
17
+ == 1.3.0 / 2010-06-17
18
+
19
+ New release of AE adds support for RSpec-style matchers. This means
20
+ it should be usable with Shoulda 3.0 and any other matchers library.
21
+ This release also cleans up the underlying code, which is now
22
+ extremely clean. Lastly a smal API change allows #asser to compare
23
+ it's argument to the return of it's block using #==, just as #expect
24
+ does using #===.
25
+
26
+ Changes:
27
+
28
+ * Add RSpec-style matchers support.
29
+ * Move #expect code to Assertor.
30
+ * #assert method can do equality camparison.
31
+
32
+
3
33
  == 1.2.3 / 2010-06-07
4
34
 
5
35
  This release is a quick fix, which adds a missing `require 'yaml'`.
6
36
 
37
+ Changes:
38
+
39
+ * Add missing require 'yaml'.
40
+
7
41
 
8
42
  == 1.2.2 / 2010-06-06
9
43
 
data/NOTICE ADDED
@@ -0,0 +1,14 @@
1
+ = COPYRIGHT NOTICES
2
+
3
+ == BasicObject
4
+
5
+ BasicObject is based on Jim Weirich's BlankSlate.
6
+
7
+ BlankSlate
8
+ Copyright 2004, 2006 by Jim Weirich (jim@weirichhouse.org).
9
+ All rights reserved.
10
+
11
+ Permission is granted for use, copying, modification, distribution,
12
+ and distribution of modified versions of this work as long as the
13
+ above copyright notice is included.
14
+
@@ -0,0 +1,10 @@
1
+ Feature: Cucumber SUpport
2
+ In order to please people who like Cucumber
3
+ As an AE user
4
+ I want to be able to use assert in my step definitions
5
+
6
+ Scenario: assert
7
+ Given x = 5
8
+ And y = 5
9
+ Then I can assert that x.assert == y
10
+
@@ -0,0 +1,11 @@
1
+
2
+ Given /^(\w+) = (\w+)$/ do |var, value|
3
+ instance_variable_set("@#{var}", value)
4
+ end
5
+
6
+ Then /^I can assert that (\w+).assert == (\w+)$/ do |var_a, var_b|
7
+ a = instance_variable_get("@#{var_a}")
8
+ b = instance_variable_get("@#{var_b}")
9
+ a.assert == b
10
+ end
11
+
@@ -0,0 +1 @@
1
+ require 'ae'
data/lib/ae.rb CHANGED
@@ -3,21 +3,15 @@ require 'yaml'
3
3
  module AE
4
4
  DIRECTORY = File.dirname(__FILE__) + '/ae'
5
5
 
6
- PROFILE = YAML.load(File.new(DIRECTORY + '/profile.yml')) rescue {}
7
- PACKAGE = YAML.load(File.new(DIRECTORY + '/package.yml')) rescue {}
6
+ PROFILE = YAML.load(File.new(DIRECTORY + '/meta/profile')) rescue {}
7
+ PACKAGE = YAML.load(File.new(DIRECTORY + '/meta/package')) rescue {}
8
8
 
9
- VERSION = PACKAGE.values_at('major','minor','patch','build').compact.join('.')
9
+ VERSION = PACKAGE['version']
10
10
 
11
11
  #
12
12
  def self.const_missing(name)
13
13
  key = name.to_s.downcase
14
- if PACKAGE.key?(key)
15
- PACKAGE[key]
16
- elsif PROFILE.key?(key)
17
- PROFILE[key]
18
- else
19
- super(name)
20
- end
14
+ PACAKGE[key] || PROFILE[key] || super(name)
21
15
  end
22
16
  end
23
17
 
@@ -28,29 +28,33 @@ module AE
28
28
 
29
29
  # Same as 'object.assert == other'.
30
30
  def assert=(cmp)
31
- Assertor.new(self, :backtrace=>caller).assert(*args, &block) == cmp
31
+ Assertor.new(self, :backtrace=>caller).assert == cmp
32
32
  end
33
33
 
34
34
  # Assert not an operational relationship.
35
35
  # Read it as "assert not".
36
36
  #
37
- # 4.assert! == 4
37
+ # 4.refute == 4 #=> Assertion Error
38
38
  #
39
39
  # See #assert.
40
- #
41
- # AUHTOR'S NOTE: This method would not be necessary if Ruby would allow
42
- # +!=+ to be define as a method, or at least +!+ as a unary method. This
43
- # may be possible in Ruby 1.9.
44
- #
45
- def assert!(*args, &block)
40
+ def refute(*args, &block)
46
41
  Assertor.new(self, :backtrace=>caller).not.assert(*args, &block)
47
42
  end
48
43
 
44
+ # Same as 'object.assert == other'.
45
+ def refute=(cmp)
46
+ Assertor.new(self, :backtrace=>caller).not.assert == cmp
47
+ end
48
+
49
49
  # Alias for #assert!.
50
50
  #
51
- # 4.refute == 4 #=> Assertion Error
51
+ # 4.assert! == 4
52
52
  #
53
- alias_method :refute, :assert!
53
+ # NOTE: This method would not be necessary if Ruby would allow
54
+ # +!=+ to be define as a method, or at least +!+ as a unary method.
55
+ # This may be possible in Ruby 1.9.
56
+ alias_method :assert!, :refute
57
+
54
58
  end
55
59
 
56
60
  end
@@ -1,4 +1,5 @@
1
1
  require 'ae/assertion'
2
+ require 'ae/basic_object'
2
3
 
3
4
  # = Assertor (Assertion Functor)
4
5
  #
@@ -10,13 +11,17 @@ require 'ae/assertion'
10
11
  # in most respects, but is conditioned on the operation applied,
11
12
  # rather then simply passing-off to an alternate reciever.
12
13
  #
13
- class Assertor
14
+ class Assertor < AE::BasicObject
14
15
 
15
16
  $assertions = 0
16
17
  $failures = 0
17
18
 
18
19
  #
19
- instance_methods.each{ |m| protected m unless /^__/ =~ m.to_s }
20
+ #instance_methods.each{ |m| protected m unless /^(__|object_id$)/ =~ m.to_s }
21
+
22
+ if ::RUBY_VERSION >= '1.9'
23
+ eval "private :==, :!, :!=" # using eval here b/c it's a syntax error in 1.8-
24
+ end
20
25
 
21
26
  # New Assertor.
22
27
  #
@@ -50,11 +55,11 @@ class Assertor
50
55
  # assert something, parameter
51
56
  #
52
57
  def assert(*args, &block)
53
- return self if args.empty? && !block_given?
58
+ return self if args.empty? && !block
54
59
 
55
60
  target = block || args.shift
56
61
 
57
- if Proc === target || target.respond_to?(:to_proc)
62
+ if ::Proc === target || target.respond_to?(:to_proc)
58
63
  block = target.to_proc
59
64
  match = args.shift
60
65
  result = block.arity > 0 ? block.call(@delegate) : block.call
@@ -86,15 +91,15 @@ class Assertor
86
91
  # TODO: respond_to?(:exception) && match = exception if Exception === match
87
92
  #++
88
93
  def expect(*args, &block)
89
- # same as #assert if no arguments of block given
90
- return self if args.empty? && !block_given?
94
+ return self if args.empty? && !block_given? # same as #assert
91
95
 
92
96
  target = block || args.shift
93
97
 
94
- if Proc === target || target.respond_to?(:to_proc)
98
+ if ::Proc === target || target.respond_to?(:to_proc)
95
99
  block = target.to_proc
96
100
  match = args.shift || @delegate
97
- if Exception === match || (Class===match && match.ancestors.include?(Exception))
101
+ if ::Exception === match || (::Class===match && match.ancestors.include?(::Exception))
102
+ $DEBUG, debug = false, $DEBUG # b/c it always spits-out a NameError
98
103
  begin
99
104
  block.arity > 0 ? block.call(@delegate) : block.call
100
105
  pass = false
@@ -105,6 +110,8 @@ class Assertor
105
110
  rescue Exception => error
106
111
  pass = false
107
112
  msg = "#{match} expected but #{error.class} was raised"
113
+ ensure
114
+ $DEBUG = debug
108
115
  end
109
116
  else
110
117
  result = block.arity > 0 ? block.call(@delegte) : block.call
@@ -126,7 +133,7 @@ class Assertor
126
133
  #
127
134
  def flunk(msg=nil)
128
135
  $failures += 1
129
- fail Assertion.new(msg || @message, :backtrace=>@backtrace)
136
+ fail ::Assertion.new(msg || @message, :backtrace=>@backtrace)
130
137
  end
131
138
 
132
139
  # Ruby seems to have a quark in it's implementation whereby
@@ -136,12 +143,18 @@ class Assertor
136
143
  method_missing(:"=~", match)
137
144
  end
138
145
 
146
+ #
147
+ def send(op, *a, &b)
148
+ method_missing(op, *a, &b)
149
+ end
150
+
139
151
  private
140
152
 
141
153
  # Converts a missing methods into an Assertion.
142
154
  #
143
155
  def method_missing(sym, *a, &b)
144
156
  pass = @delegate.__send__(sym, *a, &b)
157
+ #pass = @delegate.public_send(sym, *a, &b)
145
158
  __assert__(pass, @message || __msg__(sym, *a, &b))
146
159
  #Assertor.count += 1
147
160
  #if (@negated ? pass : !pass)
@@ -154,10 +167,11 @@ class Assertor
154
167
  # Puts together a suitable error message.
155
168
  #
156
169
  def __msg__(m, *a, &b)
170
+ inspection = @delegate.send(:inspect)
157
171
  if @negated
158
- "! #{@delegate.inspect} #{m} #{a.collect{|x| x.inspect}.join(',')}"
172
+ "! #{inspection} #{m} #{a.collect{|x| x.inspect}.join(',')}"
159
173
  else
160
- "#{@delegate.inspect} #{m} #{a.collect{|x| x.inspect}.join(',')}"
174
+ "#{inspection} #{m} #{a.collect{|x| x.inspect}.join(',')}"
161
175
  end
162
176
  #self.class.message(m)[@delegate, *a] )
163
177
  end
@@ -194,4 +208,10 @@ class Assertor
194
208
  #message(:==){ |*a| "Expected #{a[0].inspect} to be equal to #{a[1].inspect}" }
195
209
  end
196
210
 
211
+ # DO WE MAKE THESE EXCEPTIONS?
212
+ #class BasicObject
213
+ # def assert ;
214
+ # end
215
+ #end
216
+
197
217
  # Copyright (c) 2008,2009 Thomas Sawyer
@@ -0,0 +1,116 @@
1
+ #--
2
+ # Copyright 2004, 2006 by Jim Weirich (jim@weirichhouse.org).
3
+ # All rights reserved.
4
+ #
5
+ # Permission is granted for use, copying, modification, distribution,
6
+ # and distribution of modified versions of this work as long as the
7
+ # above copyright notice is included.
8
+ #++
9
+
10
+ if RUBY_VERSION >= '1.9'
11
+
12
+ module AE
13
+ BasicObject = ::BasicObject
14
+ end
15
+
16
+ else
17
+
18
+ module AE
19
+ # BasicObject provides an abstract base class with no predefined
20
+ # methods (except for <tt>\_\_send__</tt> and <tt>\_\_id__</tt>).
21
+ # BlankSlate is useful as a base class when writing classes that
22
+ # depend upon <tt>method_missing</tt> (e.g. dynamic proxies).
23
+ #
24
+ class BasicObject
25
+
26
+ # Hide the method named +name+ in the BlankSlate class. Don't
27
+ # hide +instance_eval+ or any method beginning with "__".
28
+ def self.hide(name)
29
+ name = name.to_s
30
+ if instance_methods.include?(name) and
31
+ name !~ /^(__|instance_eval|instance_exec)/
32
+ @hidden_methods ||= {}
33
+ @hidden_methods[name.to_sym] = instance_method(name)
34
+ undef_method name
35
+ end
36
+ end
37
+
38
+ def self.find_hidden_method(name)
39
+ @hidden_methods ||= {}
40
+ @hidden_methods[name.to_sym] || superclass.find_hidden_method(name)
41
+ end
42
+
43
+ # Redefine a previously hidden method so that it may be called on a blank
44
+ # slate object.
45
+ def self.reveal(name)
46
+ hidden_method = find_hidden_method(name)
47
+ fail "Don't know how to reveal method '#{name}'" unless hidden_method
48
+ define_method(name, hidden_method)
49
+ end
50
+
51
+ #
52
+ instance_methods.each { |m| hide(m) }
53
+ end
54
+ end
55
+
56
+ # Since Ruby is very dynamic, methods added to the ancestors of
57
+ # BlankSlate <em>after BlankSlate is defined</em> will show up in the
58
+ # list of available BlankSlate methods. We handle this by defining a
59
+ # hook in the Object and Kernel classes that will hide any method
60
+ # defined after BlankSlate has been loaded.
61
+ #
62
+ module Kernel
63
+ class << self
64
+ alias_method :basic_object_method_added, :method_added
65
+
66
+ # Detect method additions to Kernel and remove them in the
67
+ # BasicObject class.
68
+ def method_added(name)
69
+ result = basic_object_method_added(name)
70
+ return result if self != Kernel
71
+ AE::BasicObject.hide(name)
72
+ result
73
+ end
74
+ end
75
+ end
76
+
77
+ # Same as above, except in Object.
78
+ #
79
+ class Object
80
+ class << self
81
+ alias_method :basic_object_method_added, :method_added
82
+
83
+ # Detect method additions to Object and remove them in the
84
+ # BlankSlate class.
85
+ def method_added(name)
86
+ result = basic_object_method_added(name)
87
+ return result if self != Object
88
+ AE::BasicObject.hide(name)
89
+ result
90
+ end
91
+
92
+ def find_hidden_method(name)
93
+ nil
94
+ end
95
+ end
96
+ end
97
+
98
+ # Also, modules included into Object need to be scanned and have their
99
+ # instance methods removed from blank slate. In theory, modules
100
+ # included into Kernel would have to be removed as well, but a
101
+ # "feature" of Ruby prevents late includes into modules from being
102
+ # exposed in the first place.
103
+ #
104
+ class Module
105
+ alias basic_object_original_append_features append_features
106
+ def append_features(mod)
107
+ result = basic_object_original_append_features(mod)
108
+ return result if mod != Object
109
+ instance_methods.each do |name|
110
+ AE::BasicObject.hide(name)
111
+ end
112
+ result
113
+ end
114
+ end
115
+
116
+ end
@@ -68,7 +68,7 @@ module Kernel
68
68
  begin
69
69
  __send__(method, *args, &block)
70
70
  true
71
- rescue
71
+ rescue NoMethodError
72
72
  false
73
73
  end
74
74
  end
@@ -77,6 +77,14 @@ module Kernel
77
77
  #def returns?(value) #:yield:
78
78
  # value == yield
79
79
  #end
80
+
81
+ unless method_defined?(:public_send)
82
+ #
83
+ def public_send(m,*a,&b)
84
+ raise NoMethodError unless respond_to?(m)
85
+ __send__(m,*a,&b)
86
+ end
87
+ end
80
88
  end
81
89
 
82
90
 
@@ -198,4 +206,9 @@ class Exception
198
206
  end
199
207
  end
200
208
 
209
+ # We need BasicObject for Assertor.
210
+ unless defined?(BasicObject)
211
+ require 'ae/basic_object'
212
+ end
213
+
201
214
  # Copyright (c) 2008,2009 Thomas Sawyer
@@ -0,0 +1,21 @@
1
+ # Expiremental Concept
2
+
3
+ class TrueClass
4
+ def true
5
+ true
6
+ end
7
+ def false
8
+ fail Assertion.new('true', :backtrace=>caller)
9
+ #raise Assertion
10
+ end
11
+ end
12
+
13
+ class FalseClass
14
+ def true
15
+ fail Assertion.new('false', :backtrace=>caller)
16
+ end
17
+ def false
18
+ true
19
+ end
20
+ end
21
+
@@ -0,0 +1,29 @@
1
+ Object.__send__(:remove_const, :VERSION) if Object.const_defined?(:VERSION) # becuase Ruby 1.8~ gets in the way
2
+
3
+ module AE
4
+
5
+ def self.__DIR__
6
+ File.dirname(__FILE__)
7
+ end
8
+
9
+ def self.package
10
+ @package ||= (
11
+ require 'yaml'
12
+ YAML.load(File.new(__DIR__ + '/package'))
13
+ )
14
+ end
15
+
16
+ def self.profile
17
+ @profile ||= (
18
+ require 'yaml'
19
+ YAML.load(File.new(__DIR__ + '/profile'))
20
+ )
21
+ end
22
+
23
+ def self.const_missing(name)
24
+ key = name.to_s.downcase
25
+ package[key] || profile[key] || super(name)
26
+ end
27
+
28
+ end
29
+
@@ -0,0 +1,8 @@
1
+ name : ae
2
+ date : 2010-06-17
3
+ version : 1.4.0
4
+
5
+ requires:
6
+ - syckle (build)
7
+ - qed (test)
8
+
File without changes
@@ -0,0 +1,35 @@
1
+ require 'ae/basic_object'
2
+
3
+ module Kernel
4
+
5
+ $PRY_TABLE = {}
6
+
7
+ # Pry allows you to test private and protected methods,
8
+ # via a public-only interface.
9
+ #
10
+ # Generally one should avoid testing private and protected
11
+ # method directly, instead relying on tests of public methods to
12
+ # indirectly test them, because private and protected methods are
13
+ # considered implementation details. But sometimes is necessary
14
+ # to test them directly, or if you wish to achieve *absolute
15
+ # coverage*, say in mission critical systems.
16
+
17
+ def pry
18
+ $PRY_TABLE[self] ||= Pry.new do |op, *a, &b|
19
+ __send__(op, *a, &b)
20
+ end
21
+ end
22
+
23
+ # Pry Functor
24
+ class Pry < BasicObject
25
+ #instance_methods.each{ |m| private m unless m.to_s =~ /^__/ }
26
+ def initialize(&function)
27
+ @function = function
28
+ end
29
+ def method_missing(op, *a, &b)
30
+ @function.call(op, *a, &b)
31
+ end
32
+ end
33
+
34
+ end
35
+
@@ -20,7 +20,7 @@ module AE
20
20
  #
21
21
  def be(*args, &block)
22
22
  return self if args.empty? && !block
23
- block = args.shift if !block_given? && Proc === args.first
23
+ block = args.shift if !block_given? && ::Proc === args.first
24
24
  if block
25
25
  pass = block.arity > 0 ? block.call(@delegate) : block.call #@delegate.instance_eval(&block)
26
26
  msg = args.shift || @message || block.inspect
@@ -43,7 +43,7 @@ module AE
43
43
  #
44
44
  def a(*args, &block)
45
45
  return self if args.empty? && !block
46
- block = args.shift if !block_given? && Proc === args.first
46
+ block = args.shift if !block_given? && ::Proc === args.first
47
47
  if block
48
48
  pass = block.arity > 0 ? block.call(@delegate) : block.call #@delegate.instance_eval(&block)
49
49
  msg = args.shift || @message || block.inspect
@@ -60,7 +60,7 @@ module AE
60
60
  end#module AE
61
61
 
62
62
  class Assertor
63
- include AE::Subjunctive
63
+ include ::AE::Subjunctive
64
64
  end
65
65
 
66
66
  # Copyright (c) 2008,2009 Thomas Sawyer
@@ -11,7 +11,7 @@ module AE
11
11
  # THIS IS AN OPTIONAL LIBRARY.
12
12
  #
13
13
  module Should
14
- # The #must method is functionaly the same as #should.
14
+ # Make an assertion in subjunctive tense.
15
15
  #
16
16
  # 4.should == 3 #=> Assertion Error
17
17
  #
@@ -24,7 +24,7 @@ module AE
24
24
  end
25
25
 
26
26
  # Designate a negated expectation via a *functor*.
27
- # Read this as "must not".
27
+ # Read this as "should not".
28
28
  #
29
29
  # 4.should! == 4 #=> Assertion Error
30
30
  #
File without changes
File without changes
@@ -60,7 +60,7 @@ Another way to get the opposite inference, is to use +not+.
60
60
 
61
61
  == Matchers & Lambda Assertions
62
62
 
63
- Passing a Proc object or an objec that responds to :to_prco, will use it
63
+ Passing a Proc object or an objec that responds to :to_proc, will use it
64
64
  as if it were a block of the method. This allows for a simple way to quickly
65
65
  create reusable assertions.
66
66
 
@@ -72,6 +72,7 @@ Additionally is the object responds to #matches? then the receiver
72
72
  will be passed to this method to determine passage.
73
73
 
74
74
  palindrome = Object.new
75
+
75
76
  def palindrome.matches?(word)
76
77
  word == word.reverse
77
78
  end
@@ -81,7 +82,7 @@ will be passed to this method to determine passage.
81
82
 
82
83
  == Identity Assertions
83
84
 
84
- Rather then the general form:
85
+ Rather then the general form.
85
86
 
86
87
  x = 10
87
88
  x.assert.object_id == x.object_id
File without changes
File without changes
@@ -5,7 +5,7 @@ We can reset the count using the +recount+ class method.
5
5
 
6
6
  Assertion.recount
7
7
 
8
- For example if we one assertion fails and another fails:
8
+ For example if we one assertion fails and another fails.
9
9
 
10
10
  assert(true)
11
11
  assert(false)
@@ -0,0 +1,34 @@
1
+ = Matchers
2
+
3
+ Matchers are simply Procs or objects with the proper interface that can be
4
+ passed to #assert or #refute (or other Assertor) as an ecapsulated test.
5
+
6
+ == Proc or #to_proc
7
+
8
+ Passing a Proc object or an object that responds to :to_proc, will use it
9
+ as if it were a block of the method. This allows for a simple way to quickly
10
+ create reusable assertions.
11
+
12
+ palindrome = lambda{ |word| word == word.reverse }
13
+
14
+ "abracarba".assert palindrome
15
+
16
+ == #matches?
17
+
18
+ Additionally if an object responds to #matches? then the receiver
19
+ will be passed to this method to determine if the assertion passes.
20
+
21
+ palindrome = Object.new
22
+
23
+ def palindrome.matches?(word)
24
+ word == word.reverse
25
+ end
26
+
27
+ "abracarba".assert palindrome
28
+
29
+ == RSpec, Shoulda and other 3rd-Party Matchers
30
+
31
+ With tha addition of #matches?, AE supports the same interface for matchers
32
+ as RSpec. Any matcher library designed for use with RSpec should therefore
33
+ be usable with AE as well. This includes RSpecs own matchers and Shoulda's
34
+ excellent Rails matchers.
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ae
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
- - 3
8
+ - 4
9
9
  - 0
10
- version: 1.3.0
10
+ version: 1.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Thomas Sawyer
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-06-17 00:00:00 -04:00
18
+ date: 2010-09-02 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -55,36 +55,42 @@ extensions: []
55
55
  extra_rdoc_files:
56
56
  - README.rdoc
57
57
  files:
58
- - demo/01_overview.rdoc
59
- - demo/02_assertion.rdoc
60
- - demo/03_assert.rdoc
61
- - demo/04_subjunctive.rdoc
62
- - demo/05_expect.rdoc
63
- - demo/06_counts.rdoc
58
+ - expo/cucumber/features/cucumber.feature
59
+ - expo/cucumber/features/step_definitions/cucumber_steps.rb
60
+ - expo/cucumber/features/support/env.rb
61
+ - qed/01_overview.rdoc
62
+ - qed/02_assertion.rdoc
63
+ - qed/03_assert.rdoc
64
+ - qed/04_subjunctive.rdoc
65
+ - qed/05_expect.rdoc
66
+ - qed/06_counts.rdoc
67
+ - qed/07_matchers.rdoc
64
68
  - lib/ae/assert.rb
65
69
  - lib/ae/assertion.rb
66
70
  - lib/ae/assertor.rb
71
+ - lib/ae/basic_object.rb
67
72
  - lib/ae/core_ext.rb
73
+ - lib/ae/dot.rb
68
74
  - lib/ae/expect.rb
69
75
  - lib/ae/legacy.rb
76
+ - lib/ae/meta/data.rb
77
+ - lib/ae/meta/package
78
+ - lib/ae/meta/profile
70
79
  - lib/ae/must.rb
71
- - lib/ae/package.yml
72
- - lib/ae/profile.yml
80
+ - lib/ae/pry.rb
73
81
  - lib/ae/should.rb
74
82
  - lib/ae/subjunctive/must.rb
75
83
  - lib/ae/subjunctive/should.rb
76
84
  - lib/ae/subjunctive.rb
77
85
  - lib/ae.rb
78
- - PROFILE
79
- - PACKAGE
86
+ - HISTORY.rdoc
80
87
  - LICENSE
81
88
  - README.rdoc
82
- - HISTORY
83
- - REQUIRE
89
+ - NOTICE
84
90
  has_rdoc: true
85
91
  homepage: http://proutils.github.com/ae
86
- licenses: []
87
-
92
+ licenses:
93
+ - MIT
88
94
  post_install_message:
89
95
  rdoc_options:
90
96
  - --title
data/PACKAGE DELETED
@@ -1,5 +0,0 @@
1
- name : ae
2
- major: 1
3
- minor: 3
4
- patch: 0
5
- date : 2010-06-17
data/REQUIRE DELETED
@@ -1,5 +0,0 @@
1
- development:
2
- - syckle
3
-
4
- development/test:
5
- - qed
@@ -1,5 +0,0 @@
1
- name : ae
2
- major: 1
3
- minor: 3
4
- patch: 0
5
- date : 2010-06-17
@@ -1,18 +0,0 @@
1
- ---
2
- title : AE
3
- summary: Assertive Expressive
4
- suite : proutils
5
- contact: trans <transfire@gmail.com>
6
- created: 2008-08-17 09:00:06
7
- authors: Thomas Sawyer
8
- license: MIT
9
-
10
- description:
11
- Assertive Expressive is an assertions library intended for reuse
12
- by any TDD, BDD or the like system.
13
-
14
- resources:
15
- homepage: http://proutils.github.com/ae
16
- repository: git://github.com/proutils/ae.git
17
-
18
- copyright: Copyright (c) 2008 Thomas Sawyer