ae 1.6.1 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
data/.ruby ADDED
@@ -0,0 +1,33 @@
1
+ ---
2
+ spec_version: 1.0.0
3
+ name: ae
4
+ title: AE
5
+ engine_check:
6
+ - ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]
7
+ contact: trans <transfire@gmail.com>
8
+ resources:
9
+ repo: git://github.com/rubyworks/ae.git
10
+ code: http://github.com/rubyworks/ae
11
+ mail: http://groups.google.com/group/rubyworks-mailinglist
12
+ docs: http://wiki.github.com/rubyworks/ae/docs/qed
13
+ bugs: http://github.com/rubyworks/ae/issues
14
+ wiki: http://wiki.github.com/rubyworks/ae
15
+ home: http://rubyworks.github.com/ae
16
+ requires:
17
+ - group:
18
+ - build
19
+ name: syckle
20
+ version: 0+
21
+ - group:
22
+ - test
23
+ name: qed
24
+ version: 0+
25
+ suite: rubyworks
26
+ manifest: Manifest.txt
27
+ version: 1.7.0
28
+ copyright: Copyright (c) 2008 Thomas Sawyer
29
+ description: Assertive Expressive is an assertions library specifically designed for reuse by other test frameworks.
30
+ authors:
31
+ - Thomas Sawyer
32
+ summary: Assertive Expressive
33
+ created: 2008-08-17
@@ -1,4 +1,6 @@
1
- .
1
+ AE is open-source software distributed under the terms of the following license:
2
+
3
+
2
4
  Apache License
3
5
  Version 2.0, January 2004
4
6
  http://www.apache.org/licenses/
@@ -1,5 +1,23 @@
1
1
  = RELEASE HISTORY
2
2
 
3
+ == 1.7.0 / 2011-04-28
4
+
5
+ AE now uses proper namespace for all classes. In particular, the `Assertor`
6
+ class has become `AE::Assertor`. Only the `Assertion` class remains outside
7
+ the `AE` namespace, as it is now used to map to the current exception class
8
+ for raising assertions as defined by current test framwework. In addition,
9
+ AE's Kernel extensions, which are used to adapt AE for use with any given
10
+ test framework have been moved to the AE and AE::Assertor classes as
11
+ class methods along with AE's assertion count methods.
12
+
13
+ Changes:
14
+
15
+ * All AE classes use proper namespace.
16
+ * Framework methods moved to AE::Assertor class.
17
+ * Assertion count tracking methods moved to AE::Assertor class.
18
+ * AE::Assertion class simplified to a simple sublcass of Exception.
19
+
20
+
3
21
  == 1.6.1 / 2010-11-05
4
22
 
5
23
  This release has test passing for Ruby 1.9.2. Ruby 1.9.2 doesn't appear
data/NOTICE.rdoc ADDED
@@ -0,0 +1,30 @@
1
+ = COPYRIGHT NOTICES
2
+
3
+ == AE
4
+
5
+ Copyright (c) 2008,2011 Thomas Sawyer
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ http://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+
19
+
20
+ == BlankSlate
21
+
22
+ AE::BasicObject is based on Jim Weirich's BlankSlate class.
23
+
24
+ Copyright 2004, 2006 by Jim Weirich (jim@weirichhouse.org).
25
+ All rights reserved.
26
+
27
+ Permission is granted for use, copying, modification, distribution,
28
+ and distribution of modified versions of this work as long as the
29
+ above copyright notice is included.
30
+
data/README.rdoc CHANGED
@@ -1,16 +1,12 @@
1
1
  = Assertive Expressive
2
2
 
3
- * home: http://rubyworks.github.com/ae/
4
- * code: http://github.com/rubyworks/ae/
5
-
6
-
7
3
  == DESCRIPTION
8
4
 
9
5
  Assertive Expressive (AE) is an assertions framework
10
6
  intended for reuse by any TDD, BDD or similar system.
11
7
 
12
8
 
13
- == FEATURES/ISSUES
9
+ == FEATURES
14
10
 
15
11
  * Clear, simple and concise syntax.
16
12
  * Uses higher-order functions and fluid notation.
@@ -21,15 +17,16 @@ intended for reuse by any TDD, BDD or similar system.
21
17
  * Eats it's own dog food.
22
18
 
23
19
 
24
- == RELEASE NOTES
20
+ == RESOURCES
25
21
 
26
- Please see HISTORY file.
22
+ * home: http://rubyworks.github.com/ae/
23
+ * code: http://github.com/rubyworks/ae/
27
24
 
28
25
 
29
26
  == SYNOPSIS
30
27
 
31
28
  AE defines the method +assert+. It's is compatible with the method
32
- as defined by Test::Unit and minitest, which verifies truth of a
29
+ as defined by Test::Unit and MiniTest, which verifies truth of a
33
30
  single argument (and can accept an optional failure message).
34
31
 
35
32
  assert(true)
@@ -64,7 +61,32 @@ to make an assertion. Eg.
64
61
 
65
62
  "Daffy Duck".assert.daffy?
66
63
 
67
- Please have a look at the QEDocs and RDocs to learn more.
64
+ When an assertion fails an Assertion exception is raised. Any test
65
+ framework can catch this exception and process it accordingly.
66
+ Technically the framework should check to see that the exception
67
+ object responds affirmatively to the #assertion? method. This way any
68
+ type of exception can be used as a means of assertion, not just AE's
69
+ Assertion class.
70
+
71
+ Please have a look at the QED and API documentation to learn more.
72
+
73
+
74
+ == INTEGRATION
75
+
76
+ Generally speaking, AE can be used with any test framework simply by putting
77
+ <code>require 'ae'</code> in a test helper script. However to fully
78
+ integrate with a test framework and ensure the test framework recognizes
79
+ AE assertions (as more than just exceptions) and to ensure assertion
80
+ counts are correct, a little extra interfacing code may be necessary.
81
+
82
+ Lucky for you AE has already done the leg work for the most common
83
+ test frameworks:
84
+
85
+ * require 'ae/adapters/testunit'
86
+ * require 'ae/adapters/minitest'
87
+ * require 'ae/adapters/rspec'
88
+
89
+ Note that Cucumber does not need an adapter.
68
90
 
69
91
 
70
92
  == HOW TO INSTALL
@@ -99,9 +121,14 @@ Windows users use 'ruby setup.rb all'.
99
121
 
100
122
  == COPYRIGHTS & LICENSE
101
123
 
124
+ (Apache 2.0 License)
125
+
102
126
  Copyright (c) 2008,2010 Thomas Sawyer
103
127
 
104
128
  Unless otherwise provided for by the originating author, this
105
- program is distributed under the terms of the Apache 2 license.
129
+ program is distributed under the terms of the Apache 2.0 license.
130
+ See the Apache2.txt for details.
131
+
132
+ Protions of this program may be copyrighted by others. See the
133
+ NOTICE.rdoc file for details.
106
134
 
107
- See LICENSE file for details.
data/Syckfile ADDED
@@ -0,0 +1,82 @@
1
+ ---
2
+ gem:
3
+ service: Gem
4
+ active : true
5
+
6
+ dnote:
7
+ service : DNote
8
+ loadpath : ~
9
+ labels : ~
10
+ output : ~
11
+ format : ~
12
+ active : true
13
+
14
+ stats:
15
+ service : Stats
16
+ title : ~
17
+ loadpath : ~
18
+ exclude : ~
19
+ output : ~
20
+ active : true
21
+
22
+ rdoc:
23
+ service : rdoc
24
+ format : redfish
25
+ exclude : [Syckfile, Profile, Manifest.txt]
26
+ output : site/doc/api
27
+
28
+ ridoc:
29
+ service: RIDoc
30
+ include: ~
31
+ exclude: ~
32
+ output : .ri
33
+ active : true
34
+
35
+ qedoc:
36
+ service: custom
37
+ cycle: main
38
+ document: |
39
+ puts `qedoc -o site/doc/qed -t "AE Demonstrandum" qed`
40
+
41
+ testrb:
42
+ service : testrb
43
+ tests : ~
44
+ exclude : ~
45
+ loadpath : ~
46
+ requires : ~
47
+ live : false
48
+ active : false
49
+
50
+ grancher:
51
+ service: Grancher
52
+ active: true
53
+ #sitemap:
54
+ # - site
55
+ # - [doc/rdoc, rdoc]
56
+ # - [doc/qedoc, qedoc]
57
+
58
+ gemcutter:
59
+ active: true
60
+
61
+ email:
62
+ service : Email
63
+ file : ~
64
+ subject : ~
65
+ mailto : ruby-talk@ruby-lang.org
66
+ # from : transfire@gmail.com
67
+ # server : <%= ENV['EMAIL_SERVER'] %>
68
+ # port : <%= ENV['EMAIL_PORT'] %>
69
+ # account : <%= ENV['EMAIL_ACCOUNT'] %>
70
+ # domain : <%= ENV['EMAIL_DOMAIN'] %>
71
+ # login : <%= ENV['EMAIL_LOGIN'] %>
72
+ # secure : <%= ENV['EMAIL_SECURE'] %>
73
+ active : true
74
+
75
+ vclog:
76
+ service : VClog
77
+ format : html # xml, txt
78
+ layout : rel # gnu
79
+ typed : false
80
+ output : ~
81
+ active : false
82
+
data/lib/ae.rb CHANGED
@@ -1,29 +1,32 @@
1
- Object.__send__(:remove_const, :VERSION) if Object.const_defined?(:VERSION) # becuase Ruby 1.8~ gets in the way
1
+ # Copyright (c) 2008,2011 Thomas Sawyer
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
2
14
 
15
+ # AE's namespace.
3
16
  module AE
4
- DIRECTORY = File.dirname(__FILE__)
5
17
 
6
- def self.package
7
- @package ||= (
8
- require 'yaml'
9
- YAML.load(File.new(DIRECTORY + '/package'))
10
- )
18
+ # Set Assertion class. This is a convenience method
19
+ # for framework adapters, used to set the exception class
20
+ # that a framework uses to raise an assertion error.
21
+ def self.assertion_error=(exception_class)
22
+ verbose, $VERBOSE = $VERBOSE, nil
23
+ Object.const_set(:Assertion, exception_class)
24
+ $VERBOSE = verbose
11
25
  end
12
26
 
13
- def self.profile
14
- @profile ||= (
15
- require 'yaml'
16
- YAML.load(File.new(DIRECTORY + '/profile'))
17
- )
18
- end
19
-
20
- def self.const_missing(name)
21
- key = name.to_s.downcase
22
- package[key] || profile[key] || super(name)
23
- end
24
27
  end
25
28
 
29
+ require 'ae/version'
26
30
  require 'ae/assert'
27
31
  require 'ae/expect'
28
32
 
29
- # Copyright (c) 2008, 2010 Thomas Sawyer
data/lib/ae.yml ADDED
@@ -0,0 +1,33 @@
1
+ ---
2
+ spec_version: 1.0.0
3
+ name: ae
4
+ title: AE
5
+ engine_check:
6
+ - ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]
7
+ contact: trans <transfire@gmail.com>
8
+ resources:
9
+ repo: git://github.com/rubyworks/ae.git
10
+ code: http://github.com/rubyworks/ae
11
+ mail: http://groups.google.com/group/rubyworks-mailinglist
12
+ docs: http://wiki.github.com/rubyworks/ae/docs/qed
13
+ bugs: http://github.com/rubyworks/ae/issues
14
+ wiki: http://wiki.github.com/rubyworks/ae
15
+ home: http://rubyworks.github.com/ae
16
+ requires:
17
+ - group:
18
+ - build
19
+ name: syckle
20
+ version: 0+
21
+ - group:
22
+ - test
23
+ name: qed
24
+ version: 0+
25
+ suite: rubyworks
26
+ manifest: Manifest.txt
27
+ version: 1.7.0
28
+ copyright: Copyright (c) 2008 Thomas Sawyer
29
+ description: Assertive Expressive is an assertions library specifically designed for reuse by other test frameworks.
30
+ authors:
31
+ - Thomas Sawyer
32
+ summary: Assertive Expressive
33
+ created: 2008-08-17
@@ -1,24 +1,17 @@
1
+ require 'ae'
2
+
3
+ AE.assertion_error = ::MiniTest::Assertion
4
+
5
+ # MiniTest tracks assertion counts internally in it's Unit class via the
6
+ # +assertion_count+ attribute. To work with AE we need add in AE's assertion
7
+ # total by overriding the +assertion_count+ method.
8
+
1
9
  module MiniTest #:nodoc:
2
10
  class Unit #:nodoc:
3
- def status io = @@out
4
- ae_count = ::Assertion.count
5
- format = "%d tests, %d assertions, %d failures, %d errors, %d skips"
6
- io.puts format % [test_count, assertion_count + ae_count, failures, errors, skips]
11
+ def assertion_count
12
+ @assertion_count + AE::Assertor.counts[:total]
7
13
  end
8
14
  end
9
15
  end
10
16
 
11
- require 'ae'
12
-
13
- class Assertion #:nodoc:
14
-
15
- def self.framework_flunk(options)
16
- message = options.delete(:message)
17
- backtrace = options.delete(:backtrace)
18
17
 
19
- err = MiniTest::Assertion.new(message)
20
- err.set_backtrace(backtrace) if backtrace
21
- fail err
22
- end
23
-
24
- end
@@ -1,14 +1,4 @@
1
1
  require 'ae'
2
2
 
3
- class Assertion
3
+ AE.assertion_error = ::RSpec::Expectations::ExpectationNotMetError
4
4
 
5
- def self.framework_flunk(options)
6
- message = options.delete(:message)
7
- backtrace = options.delete(:backtrace)
8
-
9
- err = Spec::Expectations::ExpectationNotMetError.new(message)
10
- err.set_backtrace(options[:backtrace]) if options[:backtrace]
11
- fail err
12
- end
13
-
14
- end
@@ -1,33 +1,34 @@
1
+ require 'ae'
2
+
3
+ AE.assertion_error = ::Test::Unit::AssertionFailedError
4
+
5
+ # TestUnit uses #add_assertion on it's +result+ object to track counts.
6
+ # We capture the result object by overriding the TestCase#run method,
7
+ # store it in a global variable and then use it when AE increments
8
+ # assertion counts.
9
+
1
10
  module Test #:nodoc:
2
11
  module Unit #:nodoc:
3
12
  class TestCase #:nodoc:
4
13
  alias_method :_run, :run
5
14
  def run(result, &block)
6
- $_result = result
15
+ $_test_unit_result = result
7
16
  _run(result, &block)
8
17
  end
9
18
  end
10
19
  end
11
20
  end
12
21
 
13
- require 'ae'
14
-
15
- class Assertion #:nodoc:
16
-
17
- def self.increment(pass)
18
- @count += 1
19
- @fails += 1 unless pass
20
-
21
- $_result.add_assertion if $_result
22
- end
23
-
24
- def self.framework_flunk(options)
25
- message = options.delete(:message)
26
- backtrace = options.delete(:backtrace)
27
-
28
- err = Test::Unit::AssertionFailedError.new(message)
29
- err.set_backtrace(backtrace) if backtrace
30
- fail err
22
+ class AE::Assertor #:nodoc:
23
+ def self.increment_counts(pass)
24
+ $_test_unit_result.add_assertion if $_test_unit_result
25
+ counts[:total] += 1
26
+ if pass
27
+ counts[:pass] += 1
28
+ else
29
+ counts[:fail] += 1
30
+ end
31
+ return counts
31
32
  end
32
-
33
33
  end
34
+