assert 2.0.0.rc.1 → 2.0.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/Gemfile +1 -1
- data/{LICENSE → LICENSE.txt} +0 -0
- data/Rakefile +1 -3
- data/assert.gemspec +15 -15
- data/lib/assert.rb +1 -2
- data/lib/assert/assert_runner.rb +2 -1
- data/lib/assert/assertions.rb +153 -189
- data/lib/assert/version.rb +1 -1
- data/test/helper.rb +74 -51
- data/test/{fixtures → support}/inherited_stuff.rb +0 -0
- data/test/{test → system}/running_tests.rb +16 -43
- data/test/{assert_test.rb → unit/assert_tests.rb} +0 -0
- data/test/unit/assertions/assert_block_tests.rb +57 -0
- data/test/unit/assertions/assert_empty_tests.rb +58 -0
- data/test/unit/assertions/assert_equal_tests.rb +59 -0
- data/test/unit/assertions/assert_file_exists_tests.rb +59 -0
- data/test/unit/assertions/assert_includes_tests.rb +61 -0
- data/test/unit/assertions/assert_instance_of_tests.rb +61 -0
- data/test/unit/assertions/assert_kind_of_tests.rb +60 -0
- data/test/unit/assertions/assert_match_tests.rb +59 -0
- data/test/unit/assertions/assert_nil_tests.rb +59 -0
- data/test/unit/assertions/assert_raises_tests.rb +73 -0
- data/test/unit/assertions/assert_respond_to_tests.rb +63 -0
- data/test/unit/assertions/assert_same_tests.rb +65 -0
- data/test/unit/assertions_tests.rb +65 -0
- data/test/unit/context/basic_singleton_tests.rb +86 -0
- data/test/unit/context/setup_teardown_singleton_tests.rb +105 -0
- data/test/unit/context/test_should_singleton_tests.rb +134 -0
- data/test/{context_test.rb → unit/context_tests.rb} +53 -131
- data/test/{macro_test.rb → unit/macro_tests.rb} +15 -11
- data/test/{result_test.rb → unit/result_tests.rb} +27 -26
- data/test/{runner_test.rb → unit/runner_tests.rb} +1 -2
- data/test/{suite_test.rb → unit/suite_tests.rb} +63 -95
- data/test/{test_test.rb → unit/test_tests.rb} +45 -77
- data/test/{view/base_tests.rb → unit/view_tests.rb} +0 -1
- metadata +63 -104
- data/CHANGELOG.md +0 -33
- data/test/assertions/assert_block_test.rb +0 -39
- data/test/assertions/assert_empty_test.rb +0 -43
- data/test/assertions/assert_equal_test.rb +0 -43
- data/test/assertions/assert_file_exists_test.rb +0 -43
- data/test/assertions/assert_includes_test.rb +0 -44
- data/test/assertions/assert_instance_of_test.rb +0 -43
- data/test/assertions/assert_kind_of_test.rb +0 -43
- data/test/assertions/assert_match_test.rb +0 -43
- data/test/assertions/assert_nil_test.rb +0 -43
- data/test/assertions/assert_not_block_test.rb +0 -39
- data/test/assertions/assert_not_empty_test.rb +0 -43
- data/test/assertions/assert_not_equal_test.rb +0 -43
- data/test/assertions/assert_not_file_exists_test.rb +0 -43
- data/test/assertions/assert_not_included_test.rb +0 -44
- data/test/assertions/assert_not_instance_of_test.rb +0 -43
- data/test/assertions/assert_not_kind_of_test.rb +0 -43
- data/test/assertions/assert_not_match_test.rb +0 -43
- data/test/assertions/assert_not_nil_test.rb +0 -43
- data/test/assertions/assert_not_respond_to_test.rb +0 -43
- data/test/assertions/assert_not_same_test.rb +0 -45
- data/test/assertions/assert_nothing_raised_test.rb +0 -46
- data/test/assertions/assert_raises_test.rb +0 -49
- data/test/assertions/assert_respond_to_test.rb +0 -43
- data/test/assertions/assert_same_test.rb +0 -45
- data/test/assertions_test.rb +0 -60
- data/test/context/class_methods_test.rb +0 -531
- data/test/fixtures/sample_context.rb +0 -13
- data/test/fixtures/test_root/one_test.rb +0 -0
- data/test/fixtures/test_root/parent/area_one/area_test.rb +0 -0
- data/test/fixtures/test_root/shallow/deeply/nested_test.rb +0 -0
- data/test/fixtures/test_root/shallow/nested_test.rb +0 -0
- data/test/fixtures/test_root/shallow_test.rb +0 -0
- data/test/fixtures/test_root/two_test.rb +0 -0
- data/test/suite/context_info_test.rb +0 -42
@@ -1,43 +0,0 @@
|
|
1
|
-
require 'assert'
|
2
|
-
|
3
|
-
class Assert::Assertions::AssertNotMatchTest < Assert::Context
|
4
|
-
desc "the assert_not_match helper run in a test"
|
5
|
-
setup do
|
6
|
-
fail_desc = @fail_desc = "assert not match fail desc"
|
7
|
-
fail_args = @fail_args = [ /a/, "a string", fail_desc ]
|
8
|
-
@test = Factory.test do
|
9
|
-
assert_not_match(*fail_args) # fail
|
10
|
-
assert_not_match("not", "a string") # pass
|
11
|
-
end
|
12
|
-
@test.run
|
13
|
-
end
|
14
|
-
subject{ @test }
|
15
|
-
|
16
|
-
should "have 2 total results" do
|
17
|
-
assert_equal 2, subject.result_count
|
18
|
-
end
|
19
|
-
should "have 1 pass result" do
|
20
|
-
assert_equal 1, subject.result_count(:pass)
|
21
|
-
end
|
22
|
-
should "have 1 fail result" do
|
23
|
-
assert_equal 1, subject.result_count(:fail)
|
24
|
-
end
|
25
|
-
|
26
|
-
class FailMessageTest < AssertNotMatchTest
|
27
|
-
desc "with a failed result"
|
28
|
-
setup do
|
29
|
-
@expected = [
|
30
|
-
@fail_args[2],
|
31
|
-
"#{@fail_args[1].inspect} not expected to match #{@fail_args[0].inspect}.",
|
32
|
-
].join("\n")
|
33
|
-
@fail_message = @test.fail_results.first.message
|
34
|
-
end
|
35
|
-
subject{ @fail_message }
|
36
|
-
|
37
|
-
should "have a fail message with an explanation of what failed and my fail description" do
|
38
|
-
assert_equal @expected, subject
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require 'assert'
|
2
|
-
|
3
|
-
class Assert::Assertions::AssertNotNilTest < Assert::Context
|
4
|
-
desc "the assert_not_nil helper run in a test"
|
5
|
-
setup do
|
6
|
-
fail_desc = @fail_desc = "assert not nil empty fail desc"
|
7
|
-
fail_args = @fail_args = [ nil, fail_desc ]
|
8
|
-
@test = Factory.test do
|
9
|
-
assert_not_nil(1) # pass
|
10
|
-
assert_not_nil(*fail_args) # fail
|
11
|
-
end
|
12
|
-
@test.run
|
13
|
-
end
|
14
|
-
subject{ @test }
|
15
|
-
|
16
|
-
should "have 2 total results" do
|
17
|
-
assert_equal 2, subject.result_count
|
18
|
-
end
|
19
|
-
should "have 1 pass result" do
|
20
|
-
assert_equal 1, subject.result_count(:pass)
|
21
|
-
end
|
22
|
-
should "have 1 fail result" do
|
23
|
-
assert_equal 1, subject.result_count(:fail)
|
24
|
-
end
|
25
|
-
|
26
|
-
class FailMessageTest < AssertNotNilTest
|
27
|
-
desc "with a failed result"
|
28
|
-
setup do
|
29
|
-
@expected = [
|
30
|
-
@fail_args[1],
|
31
|
-
"Expected #{@fail_args[0].inspect} to not be nil.",
|
32
|
-
].join("\n")
|
33
|
-
@fail_message = @test.fail_results.first.message
|
34
|
-
end
|
35
|
-
subject{ @fail_message }
|
36
|
-
|
37
|
-
should "have a fail message with an explanation of what failed and my fail description" do
|
38
|
-
assert_equal @expected, subject
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require 'assert'
|
2
|
-
|
3
|
-
class Assert::Assertions::AssertNotRespondToTest < Assert::Context
|
4
|
-
desc "the assert_not_respond_to helper run in a test"
|
5
|
-
setup do
|
6
|
-
fail_desc = @fail_desc = "assert not respond to fail desc"
|
7
|
-
fail_args = @fail_args = [ :abs, 1, fail_desc ]
|
8
|
-
@test = Factory.test do
|
9
|
-
assert_not_respond_to(*fail_args) # fail
|
10
|
-
assert_not_respond_to(:abs, "1") # pass
|
11
|
-
end
|
12
|
-
@test.run
|
13
|
-
end
|
14
|
-
subject{ @test }
|
15
|
-
|
16
|
-
should "have 2 total results" do
|
17
|
-
assert_equal 2, subject.result_count
|
18
|
-
end
|
19
|
-
should "have 1 pass result" do
|
20
|
-
assert_equal 1, subject.result_count(:pass)
|
21
|
-
end
|
22
|
-
should "have 1 fail result" do
|
23
|
-
assert_equal 1, subject.result_count(:fail)
|
24
|
-
end
|
25
|
-
|
26
|
-
class FailMessageTest < AssertNotRespondToTest
|
27
|
-
desc "with a failed result"
|
28
|
-
setup do
|
29
|
-
@expected = [
|
30
|
-
@fail_args[2],
|
31
|
-
"#{@fail_args[1].inspect} (#{@fail_args[1].class}) not expected to respond to ##{@fail_args[0]}."
|
32
|
-
].join("\n")
|
33
|
-
@fail_message = @test.fail_results.first.message
|
34
|
-
end
|
35
|
-
subject{ @fail_message }
|
36
|
-
|
37
|
-
should "have a fail message with an explanation of what failed and my fail description" do
|
38
|
-
assert_equal @expected, subject
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'assert'
|
2
|
-
|
3
|
-
class Assert::Assertions::AssertNotSameTest < Assert::Context
|
4
|
-
desc "the assert_not_same helper run in a test"
|
5
|
-
setup do
|
6
|
-
klass = Class.new
|
7
|
-
object = klass.new
|
8
|
-
fail_desc = @fail_desc = "assert not same fail desc"
|
9
|
-
fail_args = @fail_args = [ object, object, fail_desc ]
|
10
|
-
@test = Factory.test do
|
11
|
-
assert_not_same(*fail_args) # fail
|
12
|
-
assert_not_same(object, klass.new) # pass
|
13
|
-
end
|
14
|
-
@test.run
|
15
|
-
end
|
16
|
-
subject{ @test }
|
17
|
-
|
18
|
-
should "have 2 total results" do
|
19
|
-
assert_equal 2, subject.result_count
|
20
|
-
end
|
21
|
-
should "have 1 pass result" do
|
22
|
-
assert_equal 1, subject.result_count(:pass)
|
23
|
-
end
|
24
|
-
should "have 1 fail result" do
|
25
|
-
assert_equal 1, subject.result_count(:fail)
|
26
|
-
end
|
27
|
-
|
28
|
-
class FailMessageTest < AssertNotSameTest
|
29
|
-
desc "with a failed result"
|
30
|
-
setup do
|
31
|
-
@expected = [
|
32
|
-
@fail_args[2],
|
33
|
-
"#{@fail_args[0].inspect} (#{@fail_args[0].object_id}) not expected to be the same as #{@fail_args[1].inspect} (#{@fail_args[1].object_id}).",
|
34
|
-
].join("\n")
|
35
|
-
@fail_message = @test.fail_results.first.message
|
36
|
-
end
|
37
|
-
subject{ @fail_message }
|
38
|
-
|
39
|
-
should "have a fail message with an explanation of what failed and my fail description" do
|
40
|
-
assert_equal @expected, subject
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'assert'
|
2
|
-
|
3
|
-
class Assert::Assertions::AssertNothingRaisedTest < Assert::Context
|
4
|
-
desc "the assert_nothing_raised helper run in a test"
|
5
|
-
setup do
|
6
|
-
fail_desc = @fail_desc = "assert nothing raised fail desc"
|
7
|
-
@test = Factory.test do
|
8
|
-
assert_nothing_raised(StandardError, RuntimeError, fail_desc){ raise(StandardError) } # fail
|
9
|
-
assert_nothing_raised(RuntimeError){ raise(StandardError) } # pass
|
10
|
-
assert_nothing_raised(fail_desc){ raise(RuntimeError) } # fail
|
11
|
-
assert_nothing_raised{ true } # pass
|
12
|
-
end
|
13
|
-
@test.run
|
14
|
-
end
|
15
|
-
subject{ @test }
|
16
|
-
|
17
|
-
should "have 4 total results" do
|
18
|
-
assert_equal 4, subject.result_count
|
19
|
-
end
|
20
|
-
should "have 2 pass result" do
|
21
|
-
assert_equal 2, subject.result_count(:pass)
|
22
|
-
end
|
23
|
-
should "have 2 fail result" do
|
24
|
-
assert_equal 2, subject.result_count(:fail)
|
25
|
-
end
|
26
|
-
|
27
|
-
class FailMessageTest < AssertNothingRaisedTest
|
28
|
-
desc "with a failed result"
|
29
|
-
setup do
|
30
|
-
@expected = [
|
31
|
-
"#{@fail_desc}\nStandardError or RuntimeError exception was not expected, but was raised:",
|
32
|
-
"#{@fail_desc}\nAn exception was not expected, but was raised:"
|
33
|
-
]
|
34
|
-
@fail_messages = @test.fail_results.collect(&:message)
|
35
|
-
end
|
36
|
-
subject{ @fail_messages }
|
37
|
-
|
38
|
-
should "have a fail message with an explanation of what failed and my fail description" do
|
39
|
-
subject.each_with_index do |message, n|
|
40
|
-
assert_match /^#{@expected[n]}/, message
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
require 'assert'
|
2
|
-
|
3
|
-
class Assert::Assertions::AssertRaisesTest < Assert::Context
|
4
|
-
desc "the assert_raises helper run in a test"
|
5
|
-
setup do
|
6
|
-
fail_desc = @fail_desc = "assert raises fail desc"
|
7
|
-
@test = Factory.test do
|
8
|
-
assert_raises(StandardError, RuntimeError){ raise(StandardError) } # pass
|
9
|
-
assert_raises(StandardError, RuntimeError, fail_desc){ raise(Exception) } # fail
|
10
|
-
assert_raises(RuntimeError, fail_desc){ raise(StandardError) } # fail
|
11
|
-
assert_raises(RuntimeError, fail_desc){ true } # fail
|
12
|
-
assert_raises(fail_desc){ true } # fail
|
13
|
-
end
|
14
|
-
@test.run
|
15
|
-
end
|
16
|
-
subject{ @test }
|
17
|
-
|
18
|
-
should "have 3 total results" do
|
19
|
-
assert_equal 5, subject.result_count
|
20
|
-
end
|
21
|
-
should "have 1 pass result" do
|
22
|
-
assert_equal 1, subject.result_count(:pass)
|
23
|
-
end
|
24
|
-
should "have 4 fail results" do
|
25
|
-
assert_equal 4, subject.result_count(:fail)
|
26
|
-
end
|
27
|
-
|
28
|
-
class FailMessageTest < AssertRaisesTest
|
29
|
-
desc "with a failed result"
|
30
|
-
setup do
|
31
|
-
@expected = [
|
32
|
-
"#{@fail_desc}\nStandardError or RuntimeError exception expected, not:",
|
33
|
-
"#{@fail_desc}\nRuntimeError exception expected, not:",
|
34
|
-
"#{@fail_desc}\nRuntimeError exception expected but nothing was raised.",
|
35
|
-
"#{@fail_desc}\nAn exception expected but nothing was raised."
|
36
|
-
]
|
37
|
-
@fail_messages = @test.fail_results.collect(&:message)
|
38
|
-
end
|
39
|
-
subject{ @fail_messages }
|
40
|
-
|
41
|
-
should "have a fail message with an explanation of what failed and my fail description" do
|
42
|
-
subject.each_with_index do |message, n|
|
43
|
-
assert_match /^#{@expected[n]}/, message
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require 'assert'
|
2
|
-
|
3
|
-
class Assert::Assertions::AssertRespondToTest < Assert::Context
|
4
|
-
desc "the assert_respond_to helper run in a test"
|
5
|
-
setup do
|
6
|
-
fail_desc = @fail_desc = "assert respond to fail desc"
|
7
|
-
fail_args = @fail_args = [ :abs, "1", fail_desc ]
|
8
|
-
@test = Factory.test do
|
9
|
-
assert_respond_to(:abs, 1) # pass
|
10
|
-
assert_respond_to(*fail_args) # fail
|
11
|
-
end
|
12
|
-
@test.run
|
13
|
-
end
|
14
|
-
subject{ @test }
|
15
|
-
|
16
|
-
should "have 2 total results" do
|
17
|
-
assert_equal 2, subject.result_count
|
18
|
-
end
|
19
|
-
should "have 1 pass result" do
|
20
|
-
assert_equal 1, subject.result_count(:pass)
|
21
|
-
end
|
22
|
-
should "have 1 fail result" do
|
23
|
-
assert_equal 1, subject.result_count(:fail)
|
24
|
-
end
|
25
|
-
|
26
|
-
class FailMessageTest < AssertRespondToTest
|
27
|
-
desc "with a failed result"
|
28
|
-
setup do
|
29
|
-
@expected = [
|
30
|
-
@fail_args[2],
|
31
|
-
"Expected #{@fail_args[1].inspect} (#{@fail_args[1].class}) to respond to ##{@fail_args[0]}."
|
32
|
-
].join("\n")
|
33
|
-
@fail_message = @test.fail_results.first.message
|
34
|
-
end
|
35
|
-
subject{ @fail_message }
|
36
|
-
|
37
|
-
should "have a fail message with an explanation of what failed and my fail description" do
|
38
|
-
assert_equal @expected, subject
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'assert'
|
2
|
-
|
3
|
-
class Assert::Assertions::AssertSameTest < Assert::Context
|
4
|
-
desc "the assert_same helper run in a test"
|
5
|
-
setup do
|
6
|
-
klass = Class.new
|
7
|
-
object = klass.new
|
8
|
-
fail_desc = @fail_desc = "assert same fail desc"
|
9
|
-
fail_args = @fail_args = [ object, klass.new, fail_desc ]
|
10
|
-
@test = Factory.test do
|
11
|
-
assert_same(object, object) # pass
|
12
|
-
assert_same(*fail_args) # fail
|
13
|
-
end
|
14
|
-
@test.run
|
15
|
-
end
|
16
|
-
subject{ @test }
|
17
|
-
|
18
|
-
should "have 2 total results" do
|
19
|
-
assert_equal 2, subject.result_count
|
20
|
-
end
|
21
|
-
should "have 1 pass result" do
|
22
|
-
assert_equal 1, subject.result_count(:pass)
|
23
|
-
end
|
24
|
-
should "have 1 fail result" do
|
25
|
-
assert_equal 1, subject.result_count(:fail)
|
26
|
-
end
|
27
|
-
|
28
|
-
class FailMessageTest < AssertSameTest
|
29
|
-
desc "with a failed result"
|
30
|
-
setup do
|
31
|
-
@expected = [
|
32
|
-
@fail_args[2],
|
33
|
-
"Expected #{@fail_args[0].inspect} (#{@fail_args[0].object_id}) to be the same as #{@fail_args[1].inspect} (#{@fail_args[1].object_id}).",
|
34
|
-
].join("\n")
|
35
|
-
@fail_message = @test.fail_results.first.message
|
36
|
-
end
|
37
|
-
subject{ @fail_message }
|
38
|
-
|
39
|
-
should "have a fail message with an explanation of what failed and my fail description" do
|
40
|
-
assert_equal @expected, subject
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
data/test/assertions_test.rb
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
require 'assert'
|
2
|
-
|
3
|
-
module Assert::Assertions
|
4
|
-
class BasicTest < Assert::Context
|
5
|
-
|
6
|
-
desc "An assert context"
|
7
|
-
setup do
|
8
|
-
@context_class = Factory.context_class
|
9
|
-
@context = @context_class.new
|
10
|
-
end
|
11
|
-
subject{ @context }
|
12
|
-
|
13
|
-
should have_instance_methods :assert_block, :assert_not_block, :refute_block
|
14
|
-
should have_instance_methods :assert_raises, :assert_raise, :assert_nothing_raised, :assert_not_raises, :assert_not_raise
|
15
|
-
should have_instance_methods :assert_kind_of, :assert_not_kind_of, :refute_kind_of
|
16
|
-
should have_instance_methods :assert_instance_of, :assert_not_instance_of, :refute_instance_of
|
17
|
-
should have_instance_methods :assert_respond_to, :assert_responds_to
|
18
|
-
should have_instance_methods :assert_not_respond_to, :assert_not_responds_to
|
19
|
-
should have_instance_methods :refute_respond_to, :refute_responds_to
|
20
|
-
should have_instance_methods :assert_same, :assert_not_same, :refute_same
|
21
|
-
should have_instance_methods :assert_equal, :assert_not_equal, :refute_equal
|
22
|
-
should have_instance_methods :assert_match, :assert_not_match, :assert_no_match, :refute_match
|
23
|
-
should have_instance_methods :assert_empty, :assert_not_empty, :refute_empty
|
24
|
-
should have_instance_methods :assert_includes, :assert_included
|
25
|
-
should have_instance_methods :assert_not_includes, :assert_not_included, :refute_includes, :refute_included
|
26
|
-
should have_instance_methods :assert_nil, :assert_not_nil, :refute_nil
|
27
|
-
should have_instance_methods :assert_file_exists, :assert_not_file_exists, :refute_file_exists
|
28
|
-
end
|
29
|
-
|
30
|
-
class IgnoredTest < BasicTest
|
31
|
-
desc "ignored assertions helpers"
|
32
|
-
setup do
|
33
|
-
@tests = Assert::Assertions::IGNORED_ASSERTION_HELPERS.collect do |helper|
|
34
|
-
Factory.test("ignored assertion helper #{helper}", Factory.context_info(@context_class)) do
|
35
|
-
self.send(helper, "doesn't matter")
|
36
|
-
end
|
37
|
-
end
|
38
|
-
@expected_messages = Assert::Assertions::IGNORED_ASSERTION_HELPERS.collect do |helper|
|
39
|
-
[ "The assertion helper '#{helper}' is not supported. Please use ",
|
40
|
-
"another helper or the basic assert."
|
41
|
-
].join
|
42
|
-
end
|
43
|
-
@results = @tests.collect(&:run).flatten
|
44
|
-
end
|
45
|
-
subject{ @results }
|
46
|
-
|
47
|
-
should "have an ignored result for each helper in the constant" do
|
48
|
-
subject.each do |result|
|
49
|
-
assert_kind_of Assert::Result::Ignore, result
|
50
|
-
end
|
51
|
-
assert_equal(Assert::Assertions::IGNORED_ASSERTION_HELPERS.size, subject.size)
|
52
|
-
end
|
53
|
-
|
54
|
-
should "have a custom ignore message for each helper in the constant" do
|
55
|
-
assert_equal(@expected_messages, subject.collect(&:message))
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
@@ -1,531 +0,0 @@
|
|
1
|
-
require 'assert'
|
2
|
-
|
3
|
-
class Assert::Context
|
4
|
-
|
5
|
-
class ClassMethodsTest < Assert::Context
|
6
|
-
desc "Assert context class"
|
7
|
-
setup do
|
8
|
-
@orig_assert_suite = Assert.suite
|
9
|
-
Assert.config.suite TEST_ASSERT_SUITE
|
10
|
-
@test = Factory.test
|
11
|
-
@context_class = @test.context_class
|
12
|
-
end
|
13
|
-
teardown do
|
14
|
-
TEST_ASSERT_SUITE.tests.clear
|
15
|
-
Assert.config.suite @orig_assert_suite
|
16
|
-
end
|
17
|
-
subject{ @context_class }
|
18
|
-
|
19
|
-
should have_instance_methods :setup_once, :before_once, :startup
|
20
|
-
should have_instance_methods :teardown_once, :after_once, :shutdown
|
21
|
-
should have_instance_methods :setup, :before, :setups
|
22
|
-
should have_instance_methods :teardown, :after, :teardowns
|
23
|
-
should have_instance_methods :description, :desc, :describe, :subject
|
24
|
-
should have_instance_methods :test, :test_eventually, :test_skip
|
25
|
-
should have_instance_methods :should, :should_eventually, :should_skip
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
class SetupOnceTest < ClassMethodsTest
|
31
|
-
desc "setup_once method"
|
32
|
-
setup do
|
33
|
-
setup_block = @setup_block = ::Proc.new{ something_once = true }
|
34
|
-
@context_class = Factory.context_class do
|
35
|
-
setup_once(&setup_block)
|
36
|
-
end
|
37
|
-
@setup_blocks = Assert.suite.send(:setups)
|
38
|
-
end
|
39
|
-
teardown do
|
40
|
-
Assert.suite.send(:setups).reject!{|b| b == @setup_block }
|
41
|
-
end
|
42
|
-
subject{ @setup_blocks }
|
43
|
-
|
44
|
-
should "add the block to the suite's collection of setup blocks" do
|
45
|
-
assert_includes @setup_block, subject
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
class TeardownOnceTest < ClassMethodsTest
|
53
|
-
desc "teardown_once method"
|
54
|
-
setup do
|
55
|
-
teardown_block = @teardown_block = ::Proc.new{ something_once = true }
|
56
|
-
@context_class = Factory.context_class do
|
57
|
-
teardown_once(&teardown_block)
|
58
|
-
end
|
59
|
-
@teardown_blocks = Assert.suite.send(:teardowns)
|
60
|
-
end
|
61
|
-
teardown do
|
62
|
-
Assert.suite.send(:teardowns).reject!{|b| b == @teardown_block }
|
63
|
-
end
|
64
|
-
subject{ @teardown_blocks }
|
65
|
-
|
66
|
-
should "add the block to the suite's collection of teardown blocks" do
|
67
|
-
assert_includes @teardown_block, subject
|
68
|
-
end
|
69
|
-
|
70
|
-
end
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
class SetupTest < ClassMethodsTest
|
75
|
-
desc "setup method"
|
76
|
-
setup do
|
77
|
-
setup_block = @setup_block = ::Proc.new{ @something = true }
|
78
|
-
@context_class = Factory.context_class do
|
79
|
-
setup(&setup_block)
|
80
|
-
end
|
81
|
-
@setup_blocks = @context_class.send(:setups)
|
82
|
-
end
|
83
|
-
subject{ @setup_blocks }
|
84
|
-
|
85
|
-
should "add the block to the context's collection of setup blocks" do
|
86
|
-
assert_includes @setup_block, subject
|
87
|
-
end
|
88
|
-
|
89
|
-
end
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
class SetupWithMethodNameTest < ClassMethodsTest
|
94
|
-
desc "setup with method name"
|
95
|
-
setup do
|
96
|
-
method_name = @method_name = :setup_something_amazing
|
97
|
-
@context_class = Factory.context_class do
|
98
|
-
setup(method_name)
|
99
|
-
end
|
100
|
-
@setups = @context_class.send(:setups)
|
101
|
-
end
|
102
|
-
subject{ @setups }
|
103
|
-
|
104
|
-
should "add the method name to the context setups" do
|
105
|
-
assert_includes @method_name, subject
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
|
110
|
-
class MultipleSetupsTest < ClassMethodsTest
|
111
|
-
desc "a context class with multiple setups"
|
112
|
-
setup do
|
113
|
-
method_name = :setup_something_amazing
|
114
|
-
klass = Class.new do
|
115
|
-
attr_accessor :status
|
116
|
-
|
117
|
-
define_method(method_name) do
|
118
|
-
self.status += " with something amazing"
|
119
|
-
end
|
120
|
-
end
|
121
|
-
@object = klass.new
|
122
|
-
setup_block = @setup_block = ::Proc.new{ self.status = "the setup" }
|
123
|
-
@parent_class = Factory.context_class do
|
124
|
-
setup(&setup_block)
|
125
|
-
end
|
126
|
-
setup_block = @setup_block = ::Proc.new{ self.status += " has been run" }
|
127
|
-
@context_class = Factory.context_class(@parent_class) do
|
128
|
-
setup(&setup_block)
|
129
|
-
setup(method_name)
|
130
|
-
end
|
131
|
-
@context_class.setup(@object)
|
132
|
-
@expected = "the setup has been run with something amazing"
|
133
|
-
end
|
134
|
-
subject{ @object }
|
135
|
-
|
136
|
-
should "run it's parent and it's own setup blocks in the correct order" do
|
137
|
-
assert_equal @expected, subject.status
|
138
|
-
end
|
139
|
-
|
140
|
-
end
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
class TeardownTest < ClassMethodsTest
|
145
|
-
desc "teardown method"
|
146
|
-
setup do
|
147
|
-
teardown_block = @teardown_block = ::Proc.new{ @something = false }
|
148
|
-
@context_class = Factory.context_class do
|
149
|
-
teardown(&teardown_block)
|
150
|
-
end
|
151
|
-
@teardown_blocks = @context_class.send(:teardowns)
|
152
|
-
end
|
153
|
-
subject{ @teardown_blocks }
|
154
|
-
|
155
|
-
should "add the block to the context's collection of teardown blocks" do
|
156
|
-
assert_includes @teardown_block, subject
|
157
|
-
end
|
158
|
-
|
159
|
-
end
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
class TeardownWithMethodNameTest < ClassMethodsTest
|
164
|
-
desc "teardown with method name"
|
165
|
-
setup do
|
166
|
-
method_name = @method_name = "teardown_something_amazing"
|
167
|
-
@context_class = Factory.context_class do
|
168
|
-
teardown(method_name)
|
169
|
-
end
|
170
|
-
@teardowns = @context_class.send(:teardowns)
|
171
|
-
end
|
172
|
-
subject{ @teardowns }
|
173
|
-
|
174
|
-
should "add the method name to the context teardowns" do
|
175
|
-
assert_includes @method_name, subject
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
class MultipleTeardownsTest < ClassMethodsTest
|
182
|
-
desc "a context class with multiple teardowns"
|
183
|
-
setup do
|
184
|
-
method_name = :teardown_something_amazing
|
185
|
-
klass = Class.new do
|
186
|
-
attr_accessor :status
|
187
|
-
|
188
|
-
define_method(method_name) do
|
189
|
-
self.status += " with something amazing"
|
190
|
-
end
|
191
|
-
end
|
192
|
-
@object = klass.new
|
193
|
-
teardown_block = @teardown_block = ::Proc.new{ self.status += " has been run" }
|
194
|
-
@parent_class = Factory.context_class do
|
195
|
-
teardown(&teardown_block)
|
196
|
-
teardown(method_name)
|
197
|
-
end
|
198
|
-
teardown_block = @teardown_block = ::Proc.new{ self.status = "the teardown" }
|
199
|
-
@context_class = Factory.context_class(@parent_class) do
|
200
|
-
teardown(&teardown_block)
|
201
|
-
end
|
202
|
-
@context_class.teardown(@object)
|
203
|
-
@expected = "the teardown has been run with something amazing"
|
204
|
-
end
|
205
|
-
subject{ @object }
|
206
|
-
|
207
|
-
should "run it's parent and it's own teardown blocks in the correct order" do
|
208
|
-
assert_equal @expected, subject.status
|
209
|
-
end
|
210
|
-
|
211
|
-
end
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
class DescTest < ClassMethodsTest
|
216
|
-
desc "desc method with an arg"
|
217
|
-
setup do
|
218
|
-
descs = @descs = [ "something amazing", "it really is" ]
|
219
|
-
@context_class = Factory.context_class do
|
220
|
-
descs.each do |text|
|
221
|
-
desc text
|
222
|
-
end
|
223
|
-
end
|
224
|
-
end
|
225
|
-
subject{ @context_class.send(:descriptions) }
|
226
|
-
|
227
|
-
should "return a collection containing any descriptions defined on the class" do
|
228
|
-
assert_kind_of Array, subject
|
229
|
-
@descs.each do |text|
|
230
|
-
assert_includes text, subject
|
231
|
-
end
|
232
|
-
end
|
233
|
-
|
234
|
-
end
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
class FullDescriptionTest < ClassMethodsTest
|
239
|
-
desc "description method without an arg"
|
240
|
-
setup do
|
241
|
-
parent_text = @parent_desc = "parent description"
|
242
|
-
@parent_class = Factory.context_class do
|
243
|
-
desc parent_text
|
244
|
-
end
|
245
|
-
text = @desc = "and the description for this context"
|
246
|
-
@context_class = Factory.context_class(@parent_class) do
|
247
|
-
desc text
|
248
|
-
end
|
249
|
-
@full_description = @context_class.description
|
250
|
-
end
|
251
|
-
subject{ @full_description }
|
252
|
-
|
253
|
-
should "return a string of all the inherited descriptions" do
|
254
|
-
assert_kind_of String, subject
|
255
|
-
assert_match @parent_desc, subject
|
256
|
-
assert_match @desc, subject
|
257
|
-
end
|
258
|
-
|
259
|
-
end
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
class SubjectFromLocalTest < ClassMethodsTest
|
264
|
-
desc "subject method using local context"
|
265
|
-
setup do
|
266
|
-
subject_block = @subject_block = ::Proc.new{ @something }
|
267
|
-
@context_class = Factory.context_class do
|
268
|
-
subject(&subject_block)
|
269
|
-
end
|
270
|
-
end
|
271
|
-
subject{ @subject_block }
|
272
|
-
|
273
|
-
should "set the subject block on the context class" do
|
274
|
-
assert_equal @context_class.subject, subject
|
275
|
-
end
|
276
|
-
|
277
|
-
end
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
class SubjectFromParentTest < ClassMethodsTest
|
282
|
-
desc "subject method using parent context"
|
283
|
-
setup do
|
284
|
-
parent_block = @parent_block = ::Proc.new{ @something }
|
285
|
-
@parent_class = Factory.context_class do
|
286
|
-
subject(&parent_block)
|
287
|
-
end
|
288
|
-
@context_class = Factory.context_class(@parent_class)
|
289
|
-
end
|
290
|
-
subject{ @parent_block }
|
291
|
-
|
292
|
-
should "default to it's parents subject block" do
|
293
|
-
assert_equal subject, @context_class.subject
|
294
|
-
end
|
295
|
-
end
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
class TestMethTest < ClassMethodsTest
|
300
|
-
desc "test method"
|
301
|
-
setup do
|
302
|
-
@test_count_before = Assert.suite.tests.size
|
303
|
-
|
304
|
-
@test_desc = "be true"
|
305
|
-
@test_block = ::Proc.new{ assert(true) }
|
306
|
-
@test_name = @test_desc
|
307
|
-
|
308
|
-
d, b = @test_desc, @test_block
|
309
|
-
@context_class = Factory.context_class { test(d, &b) }
|
310
|
-
@context = @context_class.new(Factory.test("something", Factory.context_info(@context_class)))
|
311
|
-
end
|
312
|
-
subject{ @context }
|
313
|
-
|
314
|
-
should "build a test with a given desc and code block" do
|
315
|
-
assert_equal @test_count_before+1, Assert.suite.tests.size
|
316
|
-
built_test = Assert.suite.tests.last
|
317
|
-
|
318
|
-
assert_kind_of Assert::Test, built_test
|
319
|
-
assert_equal @test_name, built_test.name
|
320
|
-
|
321
|
-
assert_equal @test_block, built_test.code
|
322
|
-
end
|
323
|
-
|
324
|
-
end
|
325
|
-
|
326
|
-
class TestMacroTest < TestMethTest
|
327
|
-
desc "on a macro"
|
328
|
-
setup do
|
329
|
-
@test_count_before = Assert.suite.tests.size
|
330
|
-
d, b = @test_desc, @test_block
|
331
|
-
m = Assert::Macro.new do
|
332
|
-
test(d, &b)
|
333
|
-
test(d, &b)
|
334
|
-
end
|
335
|
-
@context_class = Factory.context_class { test(m) }
|
336
|
-
@context = @context_class.new(Factory.test("something", Factory.context_info(@context_class)))
|
337
|
-
end
|
338
|
-
subject{ @context }
|
339
|
-
|
340
|
-
should "build tests from the macro" do
|
341
|
-
assert_equal @test_count_before+2, Assert.suite.tests.size
|
342
|
-
built_test = Assert.suite.tests.last
|
343
|
-
|
344
|
-
assert_kind_of Assert::Test, built_test
|
345
|
-
assert_equal @test_name, built_test.name
|
346
|
-
|
347
|
-
assert_equal @test_block, built_test.code
|
348
|
-
end
|
349
|
-
|
350
|
-
end
|
351
|
-
|
352
|
-
class NoBlockTestMethTest < TestMethTest
|
353
|
-
desc "called with no block"
|
354
|
-
setup do
|
355
|
-
@test_count_before = Assert.suite.tests.size
|
356
|
-
d = @test_desc
|
357
|
-
@context_class = Factory.context_class { test(d) }
|
358
|
-
@context = @context_class.new(Factory.test("something", Factory.context_info(@context_class)))
|
359
|
-
end
|
360
|
-
subject{ @context }
|
361
|
-
|
362
|
-
should "build a test that skips" do
|
363
|
-
assert_equal @test_count_before+1, Assert.suite.tests.size
|
364
|
-
assert_raises(Assert::Result::TestSkipped) do
|
365
|
-
subject.instance_eval(&Assert.suite.tests.last.code)
|
366
|
-
end
|
367
|
-
end
|
368
|
-
|
369
|
-
end
|
370
|
-
|
371
|
-
class TestEventuallyTest < TestMethTest
|
372
|
-
desc "called with '_eventually'"
|
373
|
-
setup do
|
374
|
-
@test_count_before = Assert.suite.tests.size
|
375
|
-
d, b = @test_desc, @test_block
|
376
|
-
@context_class = Factory.context_class do
|
377
|
-
test_eventually(d, &b)
|
378
|
-
end
|
379
|
-
@context = @context_class.new(Factory.test("something", Factory.context_info(@context_class)))
|
380
|
-
end
|
381
|
-
subject{ @context }
|
382
|
-
|
383
|
-
should "build a test that skips" do
|
384
|
-
assert_equal @test_count_before+1, Assert.suite.tests.size
|
385
|
-
assert_raises(Assert::Result::TestSkipped) do
|
386
|
-
subject.instance_eval(&Assert.suite.tests.last.code)
|
387
|
-
end
|
388
|
-
end
|
389
|
-
|
390
|
-
end
|
391
|
-
|
392
|
-
class TestEventuallyMacroTest < TestEventuallyTest
|
393
|
-
desc "on a macro"
|
394
|
-
setup do
|
395
|
-
@test_count_before = Assert.suite.tests.size
|
396
|
-
d, b = @test_desc, @test_block
|
397
|
-
m = Assert::Macro.new do
|
398
|
-
test(d, &b)
|
399
|
-
test(d, &b)
|
400
|
-
end
|
401
|
-
@context_class = Factory.context_class { test_eventually(m) }
|
402
|
-
@context = @context_class.new(Factory.test("something", Factory.context_info(@context_class)))
|
403
|
-
end
|
404
|
-
subject{ @context }
|
405
|
-
|
406
|
-
should "build a test that skips" do
|
407
|
-
assert_equal @test_count_before+1, Assert.suite.tests.size
|
408
|
-
assert_raises(Assert::Result::TestSkipped) do
|
409
|
-
subject.instance_eval(&Assert.suite.tests.last.code)
|
410
|
-
end
|
411
|
-
end
|
412
|
-
|
413
|
-
end
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
class ShouldTest < ClassMethodsTest
|
418
|
-
desc "'should' method"
|
419
|
-
setup do
|
420
|
-
@test_count_before = Assert.suite.tests.size
|
421
|
-
|
422
|
-
@should_desc = "be true"
|
423
|
-
@should_block = ::Proc.new{ assert(true) }
|
424
|
-
@test_name = "should #{@should_desc}"
|
425
|
-
|
426
|
-
d, b = @should_desc, @should_block
|
427
|
-
@context_class = Factory.context_class { should(d, &b) }
|
428
|
-
@context = @context_class.new(Factory.test("something", Factory.context_info(@context_class)))
|
429
|
-
end
|
430
|
-
subject{ @context }
|
431
|
-
|
432
|
-
should "build a test with a given should desc and code block" do
|
433
|
-
assert_equal @test_count_before+1, Assert.suite.tests.size
|
434
|
-
built_test = Assert.suite.tests.last
|
435
|
-
|
436
|
-
assert_kind_of Assert::Test, built_test
|
437
|
-
assert_equal @test_name, built_test.name
|
438
|
-
|
439
|
-
assert_equal @should_block, built_test.code
|
440
|
-
end
|
441
|
-
|
442
|
-
end
|
443
|
-
|
444
|
-
class ShouldMacroTest < ShouldTest
|
445
|
-
desc "on a macro"
|
446
|
-
setup do
|
447
|
-
@test_count_before = Assert.suite.tests.size
|
448
|
-
d, b = @should_desc, @should_block
|
449
|
-
m = Assert::Macro.new do
|
450
|
-
should(d, &b)
|
451
|
-
should(d, &b)
|
452
|
-
end
|
453
|
-
@context_class = Factory.context_class { should m }
|
454
|
-
@context = @context_class.new(Factory.test("something", Factory.context_info(@context_class)))
|
455
|
-
end
|
456
|
-
subject{ @context }
|
457
|
-
|
458
|
-
should "build tests from the macro" do
|
459
|
-
assert_equal @test_count_before+2, Assert.suite.tests.size
|
460
|
-
built_test = Assert.suite.tests.last
|
461
|
-
|
462
|
-
assert_kind_of Assert::Test, built_test
|
463
|
-
assert_equal @test_name, built_test.name
|
464
|
-
|
465
|
-
assert_equal @should_block, built_test.code
|
466
|
-
end
|
467
|
-
|
468
|
-
end
|
469
|
-
|
470
|
-
class NoBlockShouldTest < ShouldTest
|
471
|
-
desc "called with no block"
|
472
|
-
setup do
|
473
|
-
@test_count_before = Assert.suite.tests.size
|
474
|
-
d = @should_desc
|
475
|
-
@context_class = Factory.context_class { should(d) }
|
476
|
-
@context = @context_class.new(Factory.test("something", Factory.context_info(@context_class)))
|
477
|
-
end
|
478
|
-
subject{ @context }
|
479
|
-
|
480
|
-
should "build a test that skips" do
|
481
|
-
assert_equal @test_count_before+1, Assert.suite.tests.size
|
482
|
-
assert_raises(Assert::Result::TestSkipped) do
|
483
|
-
subject.instance_eval(&Assert.suite.tests.last.code)
|
484
|
-
end
|
485
|
-
end
|
486
|
-
|
487
|
-
end
|
488
|
-
|
489
|
-
class ShouldEventuallyTest < ShouldTest
|
490
|
-
desc "called with '_eventually'"
|
491
|
-
setup do
|
492
|
-
@test_count_before = Assert.suite.tests.size
|
493
|
-
d, b = @should_desc, @should_block
|
494
|
-
@context_class = Factory.context_class { should_eventually(d, &b) }
|
495
|
-
@context = @context_class.new(Factory.test("something", Factory.context_info(@context_class)))
|
496
|
-
end
|
497
|
-
subject{ @context }
|
498
|
-
|
499
|
-
should "build a test that skips" do
|
500
|
-
assert_equal @test_count_before+1, Assert.suite.tests.size
|
501
|
-
assert_raises(Assert::Result::TestSkipped) do
|
502
|
-
subject.instance_eval(&Assert.suite.tests.last.code)
|
503
|
-
end
|
504
|
-
end
|
505
|
-
|
506
|
-
end
|
507
|
-
|
508
|
-
class ShouldEventuallyMacroTest < ShouldEventuallyTest
|
509
|
-
desc "on a macro"
|
510
|
-
setup do
|
511
|
-
@test_count_before = Assert.suite.tests.size
|
512
|
-
d, b = @should_desc, @should_block
|
513
|
-
m = Assert::Macro.new do
|
514
|
-
should(d, &b)
|
515
|
-
should(d, &b)
|
516
|
-
end
|
517
|
-
@context_class = Factory.context_class { should_eventually(m) }
|
518
|
-
@context = @context_class.new(Factory.test("something", Factory.context_info(@context_class)))
|
519
|
-
end
|
520
|
-
subject{ @context }
|
521
|
-
|
522
|
-
should "build a test that skips" do
|
523
|
-
assert_equal @test_count_before+1, Assert.suite.tests.size
|
524
|
-
assert_raises(Assert::Result::TestSkipped) do
|
525
|
-
subject.instance_eval(&Assert.suite.tests.last.code)
|
526
|
-
end
|
527
|
-
end
|
528
|
-
|
529
|
-
end
|
530
|
-
|
531
|
-
end
|