ae 1.5.0 → 1.6.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/HISTORY.rdoc +15 -1
- data/lib/ae/assertion.rb +2 -0
- data/lib/ae/assertor.rb +1 -1
- data/lib/ae/check.rb +23 -0
- data/lib/ae/detest.rb +68 -0
- data/lib/ae/dot.rb +31 -7
- data/lib/ae/legacy.rb +4 -3
- data/lib/ae/meta/package +2 -2
- data/lib/ae/meta/profile +10 -5
- data/qed/06_counts.rdoc +29 -0
- metadata +9 -10
- data/demo/cucumber/features/cucumber.feature +0 -10
- data/demo/cucumber/features/step_definitions/cucumber_steps.rb +0 -11
- data/demo/cucumber/features/support/env.rb +0 -1
- data/demo/minitest/example.rb +0 -34
- data/demo/testunit/example.rb +0 -34
data/HISTORY.rdoc
CHANGED
@@ -1,9 +1,23 @@
|
|
1
1
|
= RELEASE HISTORY
|
2
2
|
|
3
|
+
== 1.6.0 / 2010-11-04
|
4
|
+
|
5
|
+
Support libraries defining toplevel methods, such as `legacy.rb`, now place
|
6
|
+
their methods in AE::World module instead of Object. AE::World needs to
|
7
|
+
to be included in the context desired for the testing framework used. This
|
8
|
+
is important to prevent polution of the the Object namespace.
|
9
|
+
|
10
|
+
Changes:
|
11
|
+
|
12
|
+
* Toplevel extras are defined in AE::World instead of Object.
|
13
|
+
* In dot.rb #true/#false methods renamed to `#true!`/`#false!`.
|
14
|
+
* In dot.rb `#true!`/`#false!` methods can take an error or error message.
|
15
|
+
|
16
|
+
|
3
17
|
== 1.5.0 / 2010-09-06
|
4
18
|
|
5
19
|
This release adds adapters for TestUnit, MiniTest and RSpec. AE worked with
|
6
|
-
them previously but AE assertions were seen as errors rather than
|
20
|
+
them previously but AE assertions were seen as errors rather than nice
|
7
21
|
assertions. Likewise assertion counts were off in the final tally. These
|
8
22
|
adapters insert AE's counts so the the tally's are correct.
|
9
23
|
|
data/lib/ae/assertion.rb
CHANGED
@@ -11,6 +11,7 @@ require 'ae/core_ext'
|
|
11
11
|
#
|
12
12
|
class Assertion < Exception
|
13
13
|
|
14
|
+
# TODO: This doesn't seem to cut it anymore!
|
14
15
|
@count = 0
|
15
16
|
@fails = 0
|
16
17
|
|
@@ -44,6 +45,7 @@ class Assertion < Exception
|
|
44
45
|
# is increased. If +pass+ if false then both +@count+ and +@fails+
|
45
46
|
# are incremented.
|
46
47
|
def increment(pass)
|
48
|
+
recount unless instance_variable_defined?('@count') # TODO: Come on, there has to be a better way!
|
47
49
|
@count += 1
|
48
50
|
@fails += 1 unless pass
|
49
51
|
end
|
data/lib/ae/assertor.rb
CHANGED
@@ -102,7 +102,7 @@ class Assertor < AE::BasicObject
|
|
102
102
|
rescue match => error
|
103
103
|
pass = true
|
104
104
|
msg = "#{match} raised"
|
105
|
-
rescue Exception => error
|
105
|
+
rescue ::Exception => error
|
106
106
|
pass = false
|
107
107
|
msg = "#{match} expected but #{error.class} was raised"
|
108
108
|
ensure
|
data/lib/ae/check.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
module AE
|
2
|
+
|
3
|
+
module CheckOK
|
4
|
+
def check(&block)
|
5
|
+
@_check = block
|
6
|
+
end
|
7
|
+
|
8
|
+
def ok(*args)
|
9
|
+
@_check.call(*args)
|
10
|
+
end
|
11
|
+
|
12
|
+
#def no(*args)
|
13
|
+
# @_check.call(*args)
|
14
|
+
#end
|
15
|
+
end
|
16
|
+
|
17
|
+
module World
|
18
|
+
include CheckOK
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
|
data/lib/ae/detest.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'ae/assertion'
|
2
|
+
|
3
|
+
class AE
|
4
|
+
# Given that x is "tom" then we can assert it
|
5
|
+
# is using an asseretion pipe.
|
6
|
+
#
|
7
|
+
# x = "tom"
|
8
|
+
#
|
9
|
+
# T x == "tom"
|
10
|
+
#
|
11
|
+
# We can assert the opposite using F.
|
12
|
+
#
|
13
|
+
# F x == "tom"
|
14
|
+
#
|
15
|
+
# These can be used at any point of return.
|
16
|
+
#
|
17
|
+
# T case x
|
18
|
+
# when 'tom' then true
|
19
|
+
# else false
|
20
|
+
# end
|
21
|
+
#
|
22
|
+
module Detest
|
23
|
+
|
24
|
+
# Test for true.
|
25
|
+
#
|
26
|
+
# T 1 == 1
|
27
|
+
#
|
28
|
+
def T(x=nil, &b)
|
29
|
+
Assertion.test(x || b.call, :backtrace=>caller)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Test for not.
|
33
|
+
#
|
34
|
+
# F 1 == 2
|
35
|
+
#
|
36
|
+
def F(x=nil, &b)
|
37
|
+
Assertion.test(!(x || b.call), :backtrace=>caller)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Test for nil?.
|
41
|
+
#
|
42
|
+
# N nil
|
43
|
+
#
|
44
|
+
def N(x=nil,&b)
|
45
|
+
Assertion.test(nil == (x || b.call), :backtrace=>caller)
|
46
|
+
end
|
47
|
+
|
48
|
+
# Expect and error.
|
49
|
+
#
|
50
|
+
# E { raise }
|
51
|
+
#
|
52
|
+
# Unless #T, #F and #N, the #E method only supports block notation.
|
53
|
+
def E(&b)
|
54
|
+
expect(Exception, &b)
|
55
|
+
end
|
56
|
+
|
57
|
+
# Catch a symbol.
|
58
|
+
#def C
|
59
|
+
#end
|
60
|
+
end
|
61
|
+
|
62
|
+
module World
|
63
|
+
include AE::Detest
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
|
data/lib/ae/dot.rb
CHANGED
@@ -1,20 +1,44 @@
|
|
1
1
|
# Expiremental Concept
|
2
2
|
|
3
|
+
#
|
3
4
|
class TrueClass
|
4
|
-
|
5
|
+
# Assert true.
|
6
|
+
#
|
7
|
+
# (x == y).true!
|
8
|
+
#
|
9
|
+
def true!(msg=nil)
|
5
10
|
true
|
6
11
|
end
|
7
|
-
|
8
|
-
|
9
|
-
|
12
|
+
# Assert false.
|
13
|
+
#
|
14
|
+
# (x == y).false!
|
15
|
+
#
|
16
|
+
def false!(err="not false")
|
17
|
+
if Exception === err
|
18
|
+
fail err
|
19
|
+
else
|
20
|
+
fail Assertion.new(err.to_s, :backtrace=>caller)
|
21
|
+
end
|
10
22
|
end
|
11
23
|
end
|
12
24
|
|
13
25
|
class FalseClass
|
14
|
-
|
15
|
-
|
26
|
+
# Assert true.
|
27
|
+
#
|
28
|
+
# (x == y).true!
|
29
|
+
#
|
30
|
+
def true!(err="not true")
|
31
|
+
if Exception === err
|
32
|
+
fail err
|
33
|
+
else
|
34
|
+
fail Assertion.new(err.to_s, :backtrace=>caller)
|
35
|
+
end
|
16
36
|
end
|
17
|
-
|
37
|
+
# Assert false.
|
38
|
+
#
|
39
|
+
# (x == y).false!
|
40
|
+
#
|
41
|
+
def false!(msg=nil)
|
18
42
|
true
|
19
43
|
end
|
20
44
|
end
|
data/lib/ae/legacy.rb
CHANGED
data/lib/ae/meta/package
CHANGED
data/lib/ae/meta/profile
CHANGED
@@ -3,16 +3,21 @@ title : AE
|
|
3
3
|
summary: Assertive Expressive
|
4
4
|
suite : proutils
|
5
5
|
contact: trans <transfire@gmail.com>
|
6
|
-
created: 2008-08-17
|
6
|
+
created: 2008-08-17
|
7
7
|
authors: Thomas Sawyer
|
8
8
|
license: MIT
|
9
9
|
|
10
10
|
description:
|
11
|
-
Assertive Expressive is an assertions library
|
12
|
-
|
11
|
+
Assertive Expressive is an assertions library specifically
|
12
|
+
designed for reuse by other test frameworks.
|
13
13
|
|
14
14
|
resources:
|
15
|
-
|
16
|
-
|
15
|
+
home: http://proutils.github.com/ae
|
16
|
+
code: http://github.com/proutils/ae
|
17
|
+
docs: http://wiki.github.com/proutils/ae/docs/qed
|
18
|
+
wiki: http://wiki.github.com/proutils/ae
|
19
|
+
bugs: http://github.com/proutils/ae/issues
|
20
|
+
mail: http://groups.google.com/group/rubyworks-mailinglist
|
21
|
+
repo: git://github.com/proutils/ae.git
|
17
22
|
|
18
23
|
copyright: Copyright (c) 2008 Thomas Sawyer
|
data/qed/06_counts.rdoc
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
= Assertion Counts
|
2
|
+
|
3
|
+
AE tracks the number of assertions made and the number that failed to pass.
|
4
|
+
We can reset the count using the +recount+ class method.
|
5
|
+
|
6
|
+
fails, total = Assertion.recount
|
7
|
+
|
8
|
+
For example if we one assertion fails and another fails.
|
9
|
+
|
10
|
+
assert(true)
|
11
|
+
|
12
|
+
expect Assertion do
|
13
|
+
assert(false)
|
14
|
+
end
|
15
|
+
|
16
|
+
We will see that AE counted three assertions and one failure.
|
17
|
+
|
18
|
+
Assertion.count.assert == 3
|
19
|
+
Assertion.fails.assert == 1
|
20
|
+
|
21
|
+
The #expect call is an assertion too, which is why the count is 3
|
22
|
+
rather than 2.
|
23
|
+
|
24
|
+
Now that we are done checking counts we will restore them so that
|
25
|
+
any other demos being run with this will tally correctly.
|
26
|
+
|
27
|
+
Assertion.fails = fails
|
28
|
+
Assertion.count = total + 3
|
29
|
+
|
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:
|
4
|
+
hash: 15
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
8
|
+
- 6
|
9
9
|
- 0
|
10
|
-
version: 1.
|
10
|
+
version: 1.6.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-
|
18
|
+
date: 2010-11-05 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -46,7 +46,7 @@ dependencies:
|
|
46
46
|
version: "0"
|
47
47
|
type: :development
|
48
48
|
version_requirements: *id002
|
49
|
-
description: Assertive Expressive is an assertions library
|
49
|
+
description: Assertive Expressive is an assertions library specifically designed for reuse by other test frameworks.
|
50
50
|
email: transfire@gmail.com
|
51
51
|
executables: []
|
52
52
|
|
@@ -55,16 +55,12 @@ extensions: []
|
|
55
55
|
extra_rdoc_files:
|
56
56
|
- README.rdoc
|
57
57
|
files:
|
58
|
-
- demo/cucumber/features/cucumber.feature
|
59
|
-
- demo/cucumber/features/step_definitions/cucumber_steps.rb
|
60
|
-
- demo/cucumber/features/support/env.rb
|
61
|
-
- demo/minitest/example.rb
|
62
|
-
- demo/testunit/example.rb
|
63
58
|
- qed/01_overview.rdoc
|
64
59
|
- qed/02_assertion.rdoc
|
65
60
|
- qed/03_assert.rdoc
|
66
61
|
- qed/04_subjunctive.rdoc
|
67
62
|
- qed/05_expect.rdoc
|
63
|
+
- qed/06_counts.rdoc
|
68
64
|
- qed/07_matchers.rdoc
|
69
65
|
- lib/ae/adapter.rb
|
70
66
|
- lib/ae/adapters/minitest.rb
|
@@ -74,7 +70,9 @@ files:
|
|
74
70
|
- lib/ae/assertion.rb
|
75
71
|
- lib/ae/assertor.rb
|
76
72
|
- lib/ae/basic_object.rb
|
73
|
+
- lib/ae/check.rb
|
77
74
|
- lib/ae/core_ext.rb
|
75
|
+
- lib/ae/detest.rb
|
78
76
|
- lib/ae/dot.rb
|
79
77
|
- lib/ae/expect.rb
|
80
78
|
- lib/ae/legacy.rb
|
@@ -130,3 +128,4 @@ summary: Assertive Expressive
|
|
130
128
|
test_files:
|
131
129
|
- lib/ae/adapters/minitest.rb
|
132
130
|
- lib/ae/adapters/testunit.rb
|
131
|
+
- lib/ae/detest.rb
|
@@ -1,11 +0,0 @@
|
|
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
|
-
|
@@ -1 +0,0 @@
|
|
1
|
-
require 'ae'
|
data/demo/minitest/example.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'ae/adapters/minitest'
|
3
|
-
|
4
|
-
class MiniTestSupport < MiniTest::Unit::TestCase
|
5
|
-
|
6
|
-
def test_assert_pass
|
7
|
-
x = 5
|
8
|
-
y = 5
|
9
|
-
x.assert == y
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_assert_fail
|
13
|
-
x = 5
|
14
|
-
y = 6
|
15
|
-
x.assert == y
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_assert_fail_original
|
19
|
-
x = 5
|
20
|
-
y = 6
|
21
|
-
assert_equal(x, y)
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_assert_pass_original
|
25
|
-
x = 5
|
26
|
-
y = 5
|
27
|
-
assert_equal(x, y)
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_exception
|
31
|
-
raise
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
data/demo/testunit/example.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'ae/adapters/testunit'
|
3
|
-
|
4
|
-
class TestUnitSupport < Test::Unit::TestCase
|
5
|
-
|
6
|
-
def test_assert_pass
|
7
|
-
x = 5
|
8
|
-
y = 5
|
9
|
-
x.assert == y
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_assert_fail
|
13
|
-
x = 5
|
14
|
-
y = 6
|
15
|
-
x.assert == y
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_assert_fail_original
|
19
|
-
x = 5
|
20
|
-
y = 6
|
21
|
-
assert_equal(x, y)
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_assert_pass_original
|
25
|
-
x = 5
|
26
|
-
y = 5
|
27
|
-
assert_equal(x, y)
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_exception
|
31
|
-
raise
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|