ae 1.6.1 → 1.7.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.
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
+