ae 1.3.0 → 1.4.0

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.
@@ -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