assert 2.18.0 → 2.19.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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +66 -37
  3. data/assert.gemspec +4 -3
  4. data/lib/assert/actual_value.rb +140 -0
  5. data/lib/assert/assertions.rb +80 -20
  6. data/lib/assert/context.rb +31 -37
  7. data/lib/assert/context/let_dsl.rb +13 -0
  8. data/lib/assert/context/method_missing.rb +19 -0
  9. data/lib/assert/context/subject_dsl.rb +23 -24
  10. data/lib/assert/macros/methods.rb +4 -4
  11. data/lib/assert/result.rb +5 -1
  12. data/lib/assert/stub.rb +16 -0
  13. data/lib/assert/suite.rb +7 -10
  14. data/lib/assert/test.rb +0 -8
  15. data/lib/assert/version.rb +1 -1
  16. data/test/helper.rb +23 -25
  17. data/test/support/factory.rb +15 -0
  18. data/test/system/stub_tests.rb +332 -333
  19. data/test/system/test_tests.rb +99 -109
  20. data/test/unit/actual_value_tests.rb +371 -0
  21. data/test/unit/assert_tests.rb +111 -43
  22. data/test/unit/assertions/assert_block_tests.rb +30 -31
  23. data/test/unit/assertions/assert_changes_tests.rb +97 -0
  24. data/test/unit/assertions/assert_empty_tests.rb +33 -32
  25. data/test/unit/assertions/assert_equal_tests.rb +94 -74
  26. data/test/unit/assertions/assert_file_exists_tests.rb +32 -33
  27. data/test/unit/assertions/assert_includes_tests.rb +38 -37
  28. data/test/unit/assertions/assert_instance_of_tests.rb +34 -33
  29. data/test/unit/assertions/assert_kind_of_tests.rb +34 -33
  30. data/test/unit/assertions/assert_match_tests.rb +34 -33
  31. data/test/unit/assertions/assert_nil_tests.rb +30 -31
  32. data/test/unit/assertions/assert_raises_tests.rb +55 -55
  33. data/test/unit/assertions/assert_respond_to_tests.rb +36 -35
  34. data/test/unit/assertions/assert_same_tests.rb +86 -81
  35. data/test/unit/assertions/assert_true_false_tests.rb +60 -60
  36. data/test/unit/assertions_tests.rb +26 -24
  37. data/test/unit/config_helpers_tests.rb +43 -38
  38. data/test/unit/config_tests.rb +38 -34
  39. data/test/unit/context/let_dsl_tests.rb +10 -0
  40. data/test/unit/context/setup_dsl_tests.rb +70 -81
  41. data/test/unit/context/subject_dsl_tests.rb +15 -43
  42. data/test/unit/context/suite_dsl_tests.rb +15 -16
  43. data/test/unit/context/test_dsl_tests.rb +50 -52
  44. data/test/unit/context_info_tests.rb +23 -15
  45. data/test/unit/context_tests.rb +184 -179
  46. data/test/unit/default_runner_tests.rb +2 -5
  47. data/test/unit/default_suite_tests.rb +57 -53
  48. data/test/unit/factory_tests.rb +5 -3
  49. data/test/unit/file_line_tests.rb +33 -35
  50. data/test/unit/macro_tests.rb +14 -10
  51. data/test/unit/result_tests.rb +159 -183
  52. data/test/unit/runner_tests.rb +64 -64
  53. data/test/unit/suite_tests.rb +56 -59
  54. data/test/unit/test_tests.rb +118 -139
  55. data/test/unit/utils_tests.rb +43 -45
  56. data/test/unit/view_helpers_tests.rb +54 -52
  57. data/test/unit/view_tests.rb +22 -23
  58. metadata +29 -7
@@ -10,23 +10,25 @@ require "assert/view"
10
10
  class Assert::Runner
11
11
  class UnitTests < Assert::Context
12
12
  desc "Assert::Runner"
13
- subject{ Assert::Runner }
13
+ subject { unit_class }
14
+
15
+ let(:unit_class) { Assert::Runner }
14
16
 
15
17
  should "include the config helpers" do
16
- assert_includes Assert::ConfigHelpers, subject
18
+ assert_that(subject).includes(Assert::ConfigHelpers)
17
19
  end
18
20
  end
19
21
 
20
22
  class InitTests < UnitTests
21
23
  desc "when init"
22
- setup do
23
- @config = Factory.modes_off_config
24
- @config.suite Assert::DefaultSuite.new(@config)
25
- @config.view Assert::View.new(@config, StringIO.new("", "w+"))
24
+ subject { unit_class.new(config1) }
26
25
 
27
- @runner = Assert::Runner.new(@config)
26
+ setup do
27
+ config1.suite Assert::DefaultSuite.new(config1)
28
+ config1.view Assert::View.new(config1, StringIO.new("", "w+"))
28
29
  end
29
- subject{ @runner }
30
+
31
+ let(:config1) { Factory.modes_off_config }
30
32
 
31
33
  should have_readers :config
32
34
  should have_imeths :runner, :run
@@ -35,116 +37,114 @@ class Assert::Runner
35
37
  should have_imeths :before_test, :after_test, :on_result
36
38
 
37
39
  should "know its config" do
38
- assert_equal @config, subject.config
40
+ assert_that(subject.config).equals(config1)
39
41
  end
40
42
 
41
43
  should "override the config helper's runner value with itself" do
42
- assert_equal subject, subject.runner
44
+ assert_that(subject.runner).equals(subject)
43
45
  end
44
46
  end
45
47
 
46
48
  class RunTests < InitTests
47
49
  desc "and run"
48
- setup do
49
- @runner_class = Class.new(Assert::Runner) do
50
- include CallbackMixin
51
- end
52
- suite_class = Class.new(Assert::DefaultSuite){ include CallbackMixin }
53
- view_class = Class.new(Assert::View){ include CallbackMixin }
50
+ subject { runner_class1.new(config1) }
54
51
 
52
+ setup do
55
53
  @view_output = ""
56
54
 
57
- @config.suite suite_class.new(@config)
58
- @config.view view_class.new(@config, StringIO.new(@view_output, "w+"))
55
+ suite_class = Class.new(Assert::DefaultSuite){ include CallbackMixin }
56
+ view_class = Class.new(Assert::View){ include CallbackMixin }
59
57
 
60
- @ci = Factory.context_info(Factory.modes_off_context_class)
61
- @test = Factory.test("should pass", @ci){ assert(1==1) }
62
- @config.suite.on_test(@test)
58
+ config1.suite suite_class.new(config1)
59
+ config1.view view_class.new(config1, StringIO.new(@view_output, "w+"))
60
+ config1.suite.on_test(test1)
63
61
 
64
- @runner = @runner_class.new(@config)
65
- @result = @runner.run
62
+ @result_count = subject.run
66
63
  end
67
64
 
65
+ let(:runner_class1) { Class.new(unit_class) { include CallbackMixin } }
66
+ let(:ci1) { Factory.context_info(Factory.modes_off_context_class) }
67
+ let(:test1) { Factory.test("should pass", ci1){ assert(1==1) } }
68
+
68
69
  should "return the fail+error result count as an integer exit code" do
69
- assert_equal 0, @result
70
+ assert_that(@result_count).equals(0)
70
71
 
71
72
  fail_count = Factory.integer
72
73
  error_count = Factory.integer
73
74
  Assert.stub(subject, :fail_result_count){ fail_count }
74
75
  Assert.stub(subject, :error_result_count){ error_count }
75
- Assert.stub(@test, :run){ } # no-op
76
- result = @runner.run
76
+ Assert.stub(test1, :run){ } # no-op
77
+ result_count = subject.run
77
78
 
78
- exp = fail_count + error_count
79
- assert_equal exp, result
79
+ assert_that(result_count).equals(fail_count + error_count)
80
80
  end
81
81
 
82
82
  should "run all callbacks on itself, the suite and the view" do
83
83
  # itself
84
- assert_true subject.on_start_called
85
- assert_equal [@test], subject.before_test_called
86
- assert_instance_of Assert::Result::Pass, subject.on_result_called.last
87
- assert_equal [@test], subject.after_test_called
88
- assert_true subject.on_finish_called
84
+ assert_that(subject.on_start_called).is_true
85
+ assert_that(subject.before_test_called).equals([test1])
86
+ assert_that(subject.on_result_called.last).is_instance_of(Assert::Result::Pass)
87
+ assert_that(subject.after_test_called).equals([test1])
88
+ assert_that(subject.on_finish_called).is_true
89
89
 
90
90
  # suite
91
- suite = @config.suite
92
- assert_true suite.on_start_called
93
- assert_equal [@test], suite.before_test_called
94
- assert_instance_of Assert::Result::Pass, suite.on_result_called.last
95
- assert_equal [@test], suite.after_test_called
96
- assert_true suite.on_finish_called
91
+ suite = config1.suite
92
+ assert_that(suite.on_start_called).is_true
93
+ assert_that(suite.before_test_called).equals([test1])
94
+ assert_that(suite.on_result_called.last).is_instance_of(Assert::Result::Pass)
95
+ assert_that(suite.after_test_called).equals([test1])
96
+ assert_that(suite.on_finish_called).is_true
97
97
 
98
98
  # view
99
- view = @config.view
100
- assert_true view.on_start_called
101
- assert_equal [@test], view.before_test_called
102
- assert_instance_of Assert::Result::Pass, view.on_result_called.last
103
- assert_equal [@test], view.after_test_called
104
- assert_true view.on_finish_called
99
+ view = config1.view
100
+ assert_that(view.on_start_called).is_true
101
+ assert_that(view.before_test_called).equals([test1])
102
+ assert_that(view.on_result_called.last).is_instance_of(Assert::Result::Pass)
103
+ assert_that(view.after_test_called).equals([test1])
104
+ assert_that(view.on_finish_called).is_true
105
105
  end
106
106
 
107
107
  should "describe running the tests in random order if there are tests" do
108
108
  exp = "Running tests in random order, " \
109
109
  "seeded with \"#{subject.runner_seed}\"\n"
110
- assert_includes exp, @view_output
110
+ assert_that(@view_output).includes(exp)
111
111
 
112
112
  @view_output.gsub!(/./, "")
113
- @config.suite.clear_tests_to_run
113
+ config1.suite.clear_tests_to_run
114
114
  subject.run
115
- assert_not_includes exp, @view_output
115
+ assert_that(@view_output).does_not_include(exp)
116
116
  end
117
117
 
118
118
  should "run only a single test if a single test is configured" do
119
- test = Factory.test("should pass", @ci){ assert(1==1) }
120
- @config.suite.clear_tests_to_run
121
- @config.suite.on_test(test)
122
- @config.single_test test.file_line.to_s
119
+ test = Factory.test("should pass", ci1){ assert(1==1) }
120
+ config1.suite.clear_tests_to_run
121
+ config1.suite.on_test(test)
122
+ config1.single_test test.file_line.to_s
123
123
 
124
- runner = @runner_class.new(@config).tap(&:run)
125
- assert_equal [test], runner.before_test_called
124
+ runner = runner_class1.new(config1).tap(&:run)
125
+ assert_that(runner.before_test_called).equals([test])
126
126
  end
127
127
 
128
128
  should "not run any tests if a single test is configured but can't be found" do
129
- test = Factory.test("should pass", @ci){ assert(1==1) }
130
- @config.suite.clear_tests_to_run
131
- @config.suite.on_test(test)
132
- @config.single_test Factory.string
129
+ test = Factory.test("should pass", ci1){ assert(1==1) }
130
+ config1.suite.clear_tests_to_run
131
+ config1.suite.on_test(test)
132
+ config1.single_test Factory.string
133
133
 
134
- runner = @runner_class.new(@config).tap(&:run)
135
- assert_nil runner.before_test_called
134
+ runner = runner_class1.new(config1).tap(&:run)
135
+ assert_that(runner.before_test_called).is_nil
136
136
  end
137
137
 
138
138
  should "describe running only a single test if a single test is configured" do
139
- @config.suite.clear_tests_to_run
140
- @config.suite.on_test(@test)
141
- @config.single_test @test.file_line.to_s
139
+ config1.suite.clear_tests_to_run
140
+ config1.suite.on_test(test1)
141
+ config1.single_test test1.file_line.to_s
142
142
  @view_output.gsub!(/./, "")
143
143
  subject.run
144
144
 
145
145
  exp = "Running test: #{subject.single_test_file_line}, " \
146
146
  "seeded with \"#{subject.runner_seed}\"\n"
147
- assert_includes exp, @view_output
147
+ assert_that(@view_output).includes(exp)
148
148
  end
149
149
  end
150
150
 
@@ -6,30 +6,24 @@ require "assert/test"
6
6
  require "test/support/inherited_stuff"
7
7
 
8
8
  class Assert::Suite
9
-
10
9
  class UnitTests < Assert::Context
11
10
  desc "Assert::Suite"
12
- subject{ Assert::Suite }
11
+ subject { unit_class }
13
12
 
14
- should "include the config helpers" do
15
- assert_includes Assert::ConfigHelpers, subject
16
- end
13
+ let(:unit_class) { Assert::Suite }
17
14
 
18
- should "know its test method regex" do
19
- assert_match "test#{Factory.string}", subject::TEST_METHOD_REGEX
20
- assert_not_match "#{Factory.string}test", subject::TEST_METHOD_REGEX
15
+ should "include the config helpers" do
16
+ assert_that(subject).includes(Assert::ConfigHelpers)
21
17
  end
22
18
  end
23
19
 
24
20
  class InitTests < UnitTests
25
21
  desc "when init"
26
- setup do
27
- @config = Factory.modes_off_config
28
- @suite = Assert::Suite.new(@config)
29
- end
30
- subject{ @suite }
22
+ subject { unit_class.new(config1) }
31
23
 
32
- should have_readers :config, :test_methods, :setups, :teardowns
24
+ let(:config1) { Factory.modes_off_config }
25
+
26
+ should have_readers :config, :setups, :teardowns
33
27
  should have_accessors :start_time, :end_time
34
28
  should have_imeths :suite, :setup, :startup, :teardown, :shutdown
35
29
  should have_imeths :tests_to_run?, :tests_to_run_count, :clear_tests_to_run
@@ -43,34 +37,33 @@ class Assert::Suite
43
37
  should have_imeths :before_test, :after_test, :on_result
44
38
 
45
39
  should "know its config" do
46
- assert_equal @config, subject.config
40
+ assert_that(subject.config).equals(config1)
47
41
  end
48
42
 
49
43
  should "default its attrs" do
50
- assert_equal [], subject.test_methods
51
- assert_equal [], subject.setups
52
- assert_equal [], subject.teardowns
44
+ assert_that(subject.setups).equals([])
45
+ assert_that(subject.teardowns).equals([])
53
46
 
54
- assert_equal subject.start_time, subject.end_time
47
+ assert_that(subject.end_time).equals(subject.start_time)
55
48
  end
56
49
 
57
50
  should "override the config helper's suite value with itself" do
58
- assert_equal subject, subject.suite
51
+ assert_that(subject.suite).equals(subject)
59
52
  end
60
53
 
61
54
  should "not provide any test/result count implementations" do
62
- assert_nil subject.test_count
63
- assert_nil subject.pass_result_count
64
- assert_nil subject.fail_result_count
65
- assert_nil subject.error_result_count
66
- assert_nil subject.skip_result_count
67
- assert_nil subject.ignore_result_count
55
+ assert_that(subject.test_count).is_nil
56
+ assert_that(subject.pass_result_count).is_nil
57
+ assert_that(subject.fail_result_count).is_nil
58
+ assert_that(subject.error_result_count).is_nil
59
+ assert_that(subject.skip_result_count).is_nil
60
+ assert_that(subject.ignore_result_count).is_nil
68
61
  end
69
62
 
70
63
  should "know its run time and rates" do
71
- assert_equal 0, subject.run_time
72
- assert_equal 0, subject.test_rate
73
- assert_equal 0, subject.result_rate
64
+ assert_that(subject.run_time).equals(0)
65
+ assert_that(subject.test_rate).equals(0)
66
+ assert_that(subject.result_rate).equals(0)
74
67
 
75
68
  time = Factory.integer(3).to_f
76
69
  subject.end_time = subject.start_time + time
@@ -78,67 +71,71 @@ class Assert::Suite
78
71
  Assert.stub(subject, :test_count){ count }
79
72
  Assert.stub(subject, :result_count){ count }
80
73
 
81
- assert_equal time, subject.run_time
82
- assert_equal (subject.test_count / subject.run_time), subject.test_rate
83
- assert_equal (subject.result_count / subject.run_time), subject.result_rate
74
+ assert_that(subject.run_time).equals(time)
75
+ assert_that(subject.test_rate).equals((subject.test_count / subject.run_time))
76
+ assert_that(subject.result_rate).equals((subject.result_count / subject.run_time))
84
77
  end
85
78
 
86
79
  should "add setup procs" do
87
80
  status = nil
88
- @suite.setup{ status = "setups" }
89
- @suite.startup{ status += " have been run" }
81
+ subject.setup{ status = "setups" }
82
+ subject.startup{ status += " have been run" }
90
83
 
91
- assert_equal 2, subject.setups.count
84
+ assert_that(subject.setups.count).equals(2)
92
85
  subject.setups.each(&:call)
93
- assert_equal "setups have been run", status
86
+ assert_that(status).equals("setups have been run")
94
87
  end
95
88
 
96
89
  should "add teardown procs" do
97
90
  status = nil
98
- @suite.teardown{ status = "teardowns" }
99
- @suite.shutdown{ status += " have been run" }
91
+ subject.teardown{ status = "teardowns" }
92
+ subject.shutdown{ status += " have been run" }
100
93
 
101
- assert_equal 2, subject.teardowns.count
94
+ assert_that(subject.teardowns.count).equals(2)
102
95
  subject.teardowns.each(&:call)
103
- assert_equal "teardowns have been run", status
96
+ assert_that(status).equals("teardowns have been run")
104
97
  end
105
98
  end
106
99
 
107
100
  class WithTestsLoadedTests < InitTests
108
101
  desc "with tests loaded"
102
+
109
103
  setup do
110
- ci = proc{ Factory.context_info(Factory.modes_off_context_class) }
111
- @tests = [
112
- Factory.test("should nothing", ci.call){ },
113
- Factory.test("should pass", ci.call){ assert(1==1); refute(1==0) },
114
- Factory.test("should fail", ci.call){ ignore; assert(1==0); refute(1==1) },
115
- Factory.test("should ignore", ci.call){ ignore },
116
- Factory.test("should skip", ci.call){ skip; ignore; assert(1==1) },
117
- Factory.test("should error", ci.call){ raise Exception; ignore; assert(1==1) }
118
- ]
119
- @tests.each{ |test| @suite.on_test(test) }
104
+ tests1.each{ |test| subject.on_test(test) }
120
105
  end
121
106
 
107
+ let(:ci1) { proc{ Factory.context_info(Factory.modes_off_context_class) } }
108
+ let(:tests1) {
109
+ [
110
+ Factory.test("should nothing", ci1.call){ },
111
+ Factory.test("should pass", ci1.call){ assert(1==1); refute(1==0) },
112
+ Factory.test("should fail", ci1.call){ ignore; assert(1==0); refute(1==1) },
113
+ Factory.test("should ignore", ci1.call){ ignore },
114
+ Factory.test("should skip", ci1.call){ skip; ignore; assert(1==1) },
115
+ Factory.test("should error", ci1.call){ raise Exception; ignore; assert(1==1) }
116
+ ]
117
+ }
118
+
122
119
  should "know its tests-to-run attrs" do
123
- assert_equal @tests.size, subject.tests_to_run_count
124
- assert_true subject.tests_to_run?
120
+ assert_that(subject.tests_to_run_count).equals(tests1.size)
121
+ assert_that(subject.tests_to_run?).is_true
125
122
 
126
123
  subject.clear_tests_to_run
127
124
 
128
- assert_equal 0, subject.tests_to_run_count
129
- assert_false subject.tests_to_run?
125
+ assert_that(subject.tests_to_run_count).equals(0)
126
+ assert_that(subject.tests_to_run?).is_false
130
127
  end
131
128
 
132
129
  should "find a test to run given a file line" do
133
- test = @tests.sample
134
- assert_same test, subject.find_test_to_run(test.file_line)
130
+ test = tests1.sample
131
+ assert_that(subject.find_test_to_run(test.file_line)).is(test)
135
132
  end
136
133
 
137
134
  should "know its sorted tests to run" do
138
135
  sorted_tests = subject.sorted_tests_to_run{ 1 }
139
- assert_equal @tests.size, sorted_tests.size
140
- assert_kind_of Assert::Test, sorted_tests.first
141
- assert_same sorted_tests.first, subject.sorted_tests_to_run{ 1 }.first
136
+ assert_that(sorted_tests.size).equals(tests1.size)
137
+ assert_that(sorted_tests.first).is_kind_of(Assert::Test)
138
+ assert_that(subject.sorted_tests_to_run{ 1 }.first).is(sorted_tests.first)
142
139
  end
143
140
  end
144
141
  end
@@ -8,121 +8,100 @@ require "assert/result"
8
8
  class Assert::Test
9
9
  class UnitTests < Assert::Context
10
10
  desc "Assert::Test"
11
- setup do
12
- @context_class = Factory.modes_off_context_class{ desc "context class" }
13
- @context_info = Factory.context_info(@context_class)
14
- @config = Factory.modes_off_config
15
- @test_code = proc{ assert(true) }
16
- end
17
- subject{ Assert::Test }
11
+ subject { unit_class }
12
+
13
+ let(:unit_class) { Assert::Test }
14
+
15
+ let(:context_class1) { Factory.modes_off_context_class { desc "context class" } }
16
+ let(:context_info1) { Factory.context_info(context_class1) }
17
+ let(:config1) { Factory.modes_off_config }
18
+ let(:test_code1) { proc { assert(true) } }
18
19
 
19
- should have_imeths :name_file_line_context_data, :for_block, :for_method
20
+ should have_imeths :name_file_line_context_data, :for_block
20
21
 
21
22
  should "know how to build the name and file line given context" do
22
23
  test_name = Factory.string
23
- data = subject.name_file_line_context_data(@context_info, test_name)
24
+ data = subject.name_file_line_context_data(context_info1, test_name)
24
25
 
25
- exp = @context_info.test_name(test_name)
26
- assert_equal exp, data[:name]
26
+ exp = context_info1.test_name(test_name)
27
+ assert_that(data[:name]).equals(exp)
27
28
 
28
- exp = @context_info.called_from
29
- assert_equal exp, data[:file_line]
29
+ exp = context_info1.called_from
30
+ assert_that(data[:file_line]).equals(exp)
30
31
  end
31
32
 
32
33
  should "build tests for a block" do
33
34
  name = Factory.string
34
- test = subject.for_block(name, @context_info, @config, &@test_code)
35
+ test = subject.for_block(name, context_info1, config1, &test_code1)
35
36
 
36
- exp = Assert::FileLine.parse(@context_info.called_from)
37
- assert_equal exp, test.file_line
37
+ exp = Assert::FileLine.parse(context_info1.called_from)
38
+ assert_that(test.file_line).equals(exp)
38
39
 
39
- exp = @context_info.test_name(name)
40
- assert_equal exp, test.name
40
+ exp = context_info1.test_name(name)
41
+ assert_that(test.name).equals(exp)
41
42
 
42
- assert_equal @context_info, test.context_info
43
- assert_equal @config, test.config
44
- assert_equal @test_code, test.code
45
- end
46
-
47
- should "build tests for a method" do
48
- meth = "a_test_method"
49
- test = subject.for_method(meth, @context_info, @config)
50
-
51
- exp = Assert::FileLine.parse(@context_info.called_from)
52
- assert_equal exp, test.file_line
53
-
54
- exp = @context_info.test_name(meth)
55
- assert_equal exp, test.name
56
-
57
- assert_equal @context_info, test.context_info
58
- assert_equal @config, test.config
59
-
60
- assert_kind_of Proc, test.code
61
- self.instance_eval(&test.code)
62
- assert_true @a_test_method_called
63
- end
64
-
65
- def a_test_method
66
- @a_test_method_called = true
43
+ assert_that(test.context_info).equals(context_info1)
44
+ assert_that(test.config).equals(config1)
45
+ assert_that(test.code).equals(test_code1)
67
46
  end
68
47
  end
69
48
 
70
49
  class InitWithDataTests < UnitTests
71
50
  desc "when init with data"
72
- setup do
73
- @file_line = Assert::FileLine.new(Factory.string, Factory.integer.to_s)
74
- @meta_data = {
75
- :file_line => @file_line.to_s,
51
+ subject { unit_class.new(meta_data1.merge(run_data1)) }
52
+
53
+ let(:file_line1) { Assert::FileLine.new(Factory.string, Factory.integer.to_s) }
54
+ let(:meta_data1) {
55
+ {
56
+ :file_line => file_line1.to_s,
76
57
  :name => Factory.string,
77
58
  :output => Factory.string,
78
59
  :run_time => Factory.float(1.0),
79
60
  }
80
-
81
- @run_data = {
82
- :context_info => @context_info,
83
- :config => @config,
84
- :code => @test_code
61
+ }
62
+ let(:run_data1) {
63
+ {
64
+ :context_info => context_info1,
65
+ :config => config1,
66
+ :code => test_code1
85
67
  }
86
-
87
- @test = Assert::Test.new(@meta_data.merge(@run_data))
88
- end
89
- subject{ @test }
68
+ }
90
69
 
91
70
  should have_imeths :file_line, :file_name, :line_num
92
71
  should have_imeths :name, :output, :run_time
93
72
  should have_imeths :context_info, :context_class, :config, :code, :run
94
73
 
95
74
  should "use any given attrs" do
96
- assert_equal @file_line, subject.file_line
97
- assert_equal @meta_data[:name], subject.name
98
- assert_equal @meta_data[:output], subject.output
99
- assert_equal @meta_data[:run_time], subject.run_time
75
+ assert_that(subject.file_line).equals(file_line1)
76
+ assert_that(subject.name).equals(meta_data1[:name])
77
+ assert_that(subject.output).equals(meta_data1[:output])
78
+ assert_that(subject.run_time).equals(meta_data1[:run_time])
100
79
 
101
- assert_equal @context_info, subject.context_info
102
- assert_equal @config, subject.config
103
- assert_equal @test_code, subject.code
80
+ assert_that(subject.context_info).equals(context_info1)
81
+ assert_that(subject.config).equals(config1)
82
+ assert_that(subject.code).equals(test_code1)
104
83
  end
105
84
 
106
85
  should "default its attrs" do
107
- test = Assert::Test.new
86
+ test = unit_class.new
108
87
 
109
- assert_equal Assert::FileLine.parse(""), test.file_line
110
- assert_equal "", test.name
111
- assert_equal "", test.output
112
- assert_equal 0, test.run_time
88
+ assert_that(test.file_line).equals(Assert::FileLine.parse(""))
89
+ assert_that(test.name).equals("")
90
+ assert_that(test.output).equals("")
91
+ assert_that(test.run_time).equals(0)
113
92
 
114
- assert_nil test.context_info
115
- assert_nil test.config
116
- assert_nil test.code
93
+ assert_that(test.context_info).is_nil
94
+ assert_that(test.config).is_nil
95
+ assert_that(test.code).is_nil
117
96
  end
118
97
 
119
98
  should "know its context class" do
120
- assert_equal @context_class, subject.context_class
99
+ assert_that(subject.context_class).equals(context_class1)
121
100
  end
122
101
 
123
102
  should "know its file line attrs" do
124
- assert_equal subject.file_line.file, subject.file_name
125
- assert_equal subject.file_line.line.to_i, subject.line_num
103
+ assert_that(subject.file_name).equals(subject.file_line.file)
104
+ assert_that(subject.line_num).equals(subject.file_line.line.to_i)
126
105
  end
127
106
 
128
107
  should "have a custom inspect that only shows limited attributes" do
@@ -130,58 +109,60 @@ class Assert::Test
130
109
  "@#{method}=#{subject.send(method).inspect}"
131
110
  end.join(" ")
132
111
  exp = "#<#{subject.class}:#{"0x0%x" % (subject.object_id << 1)} #{attrs}>"
133
- assert_equal exp, subject.inspect
112
+ assert_that(subject.inspect).equals(exp)
134
113
  end
135
114
  end
136
115
 
137
116
  class PassFailIgnoreHandlingTests < UnitTests
138
117
  include Assert::Test::TestHelpers
139
118
 
140
- setup do
141
- @test = Factory.test("pass fail ignore test", @context_info) do
119
+ subject {
120
+ Factory.test("pass fail ignore test", context_info1) do
142
121
  ignore("something")
143
122
  assert(true)
144
123
  assert(false)
145
124
  end
146
- @test.context_class.setup do
125
+ }
126
+
127
+ setup do
128
+ subject.context_class.setup do
147
129
  ignore("something")
148
130
  assert(true)
149
131
  assert(false)
150
132
  end
151
- @test.context_class.teardown do
133
+ subject.context_class.teardown do
152
134
  ignore("something")
153
135
  assert(true)
154
136
  assert(false)
155
137
  end
156
- @test.run(&test_run_callback)
138
+ subject.run(&test_run_callback)
157
139
  end
158
- subject{ @test }
159
140
 
160
141
  should "capture results in the test and any setups/teardowns" do
161
- assert_equal 9, test_run_results.size
142
+ assert_that(test_run_results.size).equals(9)
162
143
  test_run_results.each do |result|
163
- assert_kind_of Assert::Result::Base, result
144
+ assert_that(result).is_kind_of(Assert::Result::Base)
164
145
  end
165
146
  end
166
147
 
167
148
  should "capture pass results in the test and any setups/teardowns" do
168
- assert_equal 3, test_run_results(:pass).size
149
+ assert_that(test_run_results(:pass).size).equals(3)
169
150
  test_run_results(:pass).each do |result|
170
- assert_kind_of Assert::Result::Pass, result
151
+ assert_that(result).is_kind_of(Assert::Result::Pass)
171
152
  end
172
153
  end
173
154
 
174
155
  should "capture fail results in the test and any setups/teardowns" do
175
- assert_equal 3, test_run_results(:fail).size
156
+ assert_that(test_run_results(:fail).size).equals(3)
176
157
  test_run_results(:fail).each do |result|
177
- assert_kind_of Assert::Result::Fail, result
158
+ assert_that(result).is_kind_of(Assert::Result::Fail)
178
159
  end
179
160
  end
180
161
 
181
162
  should "capture ignore results in the test and any setups/teardowns" do
182
- assert_equal 3, test_run_results(:ignore).size
163
+ assert_that(test_run_results(:ignore).size).equals(3)
183
164
  test_run_results(:ignore).each do |result|
184
- assert_kind_of Assert::Result::Ignore, result
165
+ assert_that(result).is_kind_of(Assert::Result::Ignore)
185
166
  end
186
167
  end
187
168
  end
@@ -192,7 +173,7 @@ class Assert::Test
192
173
  desc "when in halt-on-fail mode"
193
174
 
194
175
  should "capture fail results" do
195
- test = Factory.test("halt-on-fail test", @context_info) do
176
+ test = Factory.test("halt-on-fail test", context_info1) do
196
177
  raise Assert::Result::TestFailure
197
178
  end
198
179
  test.run(&test_run_callback)
@@ -201,7 +182,7 @@ class Assert::Test
201
182
  end
202
183
 
203
184
  should "capture fails in the context setup" do
204
- test = Factory.test("setup halt-on-fail test", @context_info){ }
185
+ test = Factory.test("setup halt-on-fail test", context_info1){ }
205
186
  test.context_class.setup{ raise Assert::Result::TestFailure }
206
187
  test.run(&test_run_callback)
207
188
 
@@ -209,7 +190,7 @@ class Assert::Test
209
190
  end
210
191
 
211
192
  should "capture fails in the context teardown" do
212
- test = Factory.test("teardown halt-on-fail test", @context_info){ }
193
+ test = Factory.test("teardown halt-on-fail test", context_info1){ }
213
194
  test.context_class.teardown{ raise Assert::Result::TestFailure }
214
195
  test.run(&test_run_callback)
215
196
 
@@ -220,9 +201,9 @@ class Assert::Test
220
201
 
221
202
  def assert_failed(test)
222
203
  with_backtrace(caller) do
223
- assert_equal 1, test_run_result_count, "too many/few fail results"
204
+ assert_that(test_run_result_count).equals(1, "too many/few fail results")
224
205
  test_run_results.each do |result|
225
- assert_kind_of Assert::Result::Fail, result, "not a fail result"
206
+ assert_that(result).is_kind_of(Assert::Result::Fail, "not a fail result")
226
207
  end
227
208
  end
228
209
  end
@@ -232,14 +213,14 @@ class Assert::Test
232
213
  include Assert::Test::TestHelpers
233
214
 
234
215
  should "capture skip results" do
235
- test = Factory.test("skip test", @context_info){ skip }
216
+ test = Factory.test("skip test", context_info1){ skip }
236
217
  test.run(&test_run_callback)
237
218
 
238
219
  assert_skipped(test)
239
220
  end
240
221
 
241
222
  should "capture skips in the context setup" do
242
- test = Factory.test("setup skip test", @context_info){ }
223
+ test = Factory.test("setup skip test", context_info1){ }
243
224
  test.context_class.setup{ skip }
244
225
  test.run(&test_run_callback)
245
226
 
@@ -247,7 +228,7 @@ class Assert::Test
247
228
  end
248
229
 
249
230
  should "capture skips in the context teardown" do
250
- test = Factory.test("teardown skip test", @context_info){ }
231
+ test = Factory.test("teardown skip test", context_info1){ }
251
232
  test.context_class.teardown{ skip }
252
233
  test.run(&test_run_callback)
253
234
 
@@ -258,9 +239,9 @@ class Assert::Test
258
239
 
259
240
  def assert_skipped(test)
260
241
  with_backtrace(caller) do
261
- assert_equal 1, test_run_result_count, "too many/few skip results"
242
+ assert_that(test_run_result_count).equals(1, "too many/few skip results")
262
243
  test_run_results.each do |result|
263
- assert_kind_of Assert::Result::Skip, result, "not a skip result"
244
+ assert_that(result).is_kind_of(Assert::Result::Skip, "not a skip result")
264
245
  end
265
246
  end
266
247
  end
@@ -270,7 +251,7 @@ class Assert::Test
270
251
  include Assert::Test::TestHelpers
271
252
 
272
253
  should "capture error results" do
273
- test = Factory.test("error test", @context_info) do
254
+ test = Factory.test("error test", context_info1) do
274
255
  raise StandardError, "WHAT"
275
256
  end
276
257
  test.run(&test_run_callback)
@@ -279,7 +260,7 @@ class Assert::Test
279
260
  end
280
261
 
281
262
  should "capture errors in the context setup" do
282
- test = Factory.test("setup error test", @context_info){ }
263
+ test = Factory.test("setup error test", context_info1){ }
283
264
  test.context_class.setup{ raise "an error" }
284
265
  test.run(&test_run_callback)
285
266
 
@@ -287,7 +268,7 @@ class Assert::Test
287
268
  end
288
269
 
289
270
  should "capture errors in the context teardown" do
290
- test = Factory.test("teardown error test", @context_info){ }
271
+ test = Factory.test("teardown error test", context_info1){ }
291
272
  test.context_class.teardown{ raise "an error" }
292
273
  test.run(&test_run_callback)
293
274
 
@@ -298,100 +279,98 @@ class Assert::Test
298
279
 
299
280
  def assert_errored(test)
300
281
  with_backtrace(caller) do
301
- assert_equal 1, test_run_result_count, "too many/few error results"
282
+ assert_that(test_run_result_count).equals(1, "too many/few error results")
302
283
  test_run_results.each do |result|
303
- assert_kind_of Assert::Result::Error, result, "not an error result"
284
+ assert_that(result).is_kind_of(Assert::Result::Error, "not an error result")
304
285
  end
305
286
  end
306
287
  end
307
288
  end
308
289
 
309
290
  class SignalExceptionHandlingTests < UnitTests
310
-
311
291
  should "raise any signal exceptions and not capture as an error" do
312
- test = Factory.test("signal test", @context_info) do
292
+ test = Factory.test("signal test", context_info1) do
313
293
  raise SignalException, "USR1"
314
294
  end
315
295
 
316
- assert_raises(SignalException){ test.run }
296
+ assert_that { test.run }.raises(SignalException)
317
297
  end
318
298
 
319
299
  should "raises signal exceptions in the context setup" do
320
- test = Factory.test("setup signal test", @context_info){ }
300
+ test = Factory.test("setup signal test", context_info1){ }
321
301
  test.context_class.setup{ raise SignalException, "INT" }
322
302
 
323
- assert_raises(SignalException){ test.run }
303
+ assert_that { test.run }.raises(SignalException)
324
304
  end
325
305
 
326
306
  should "raises signal exceptions in the context teardown" do
327
- test = Factory.test("teardown signal test", @context_info){ }
307
+ test = Factory.test("teardown signal test", context_info1){ }
328
308
  test.context_class.teardown{ raise SignalException, "TERM" }
329
309
 
330
- assert_raises(SignalException){ test.run }
310
+ assert_that { test.run }.raises(SignalException)
331
311
  end
332
312
  end
333
313
 
334
314
  class ComparingTests < UnitTests
335
315
  desc "<=> another test"
336
- setup do
337
- @test = Factory.test("mmm")
338
- end
339
- subject{ @test }
316
+ subject { Factory.test("mmm") }
340
317
 
341
318
  should "return 1 with a test named 'aaa' (greater than it)" do
342
- result = @test <=> Factory.test("aaa")
343
- assert_equal(1, result)
319
+ assert_that(subject <=> Factory.test("aaa")).equals(1)
344
320
  end
345
321
 
346
322
  should "return 0 with a test named the same" do
347
- result = @test <=> Factory.test(@test.name)
348
- assert_equal(0, result)
323
+ assert_that(subject <=> Factory.test(subject.name)).equals(0)
349
324
  end
350
325
 
351
326
  should "return -1 with a test named 'zzz' (less than it)" do
352
- result = @test <=> Factory.test("zzz")
353
- assert_equal(-1, result)
327
+ assert_that(subject <=> Factory.test("zzz")).equals(-1)
354
328
  end
355
329
  end
356
330
 
357
331
  class CaptureOutTests < UnitTests
358
332
  desc "when capturing std out"
359
- setup do
360
- @capture_config = Assert::Config.new(:capture_output => true)
361
- @test = Factory.test("stdout", @capture_config) do
333
+ subject {
334
+ Factory.test("stdout", capture_config1) do
362
335
  puts "std out from the test"
363
336
  assert true
364
337
  end
365
- end
338
+ }
339
+
340
+ let(:capture_config1) { Assert::Config.new(:capture_output => true) }
366
341
 
367
342
  should "capture any io from the test" do
368
- @test.run
369
- assert_equal "std out from the test\n", @test.output
343
+ subject.run
344
+ assert_that(subject.output).equals("std out from the test\n")
370
345
  end
371
346
  end
372
347
 
373
348
  class FullCaptureOutTests < CaptureOutTests
374
349
  desc "across setup, teardown, and meth calls"
375
- setup do
376
- @test = Factory.test("fullstdouttest", @capture_config) do
350
+ subject {
351
+ Factory.test("fullstdouttest", capture_config1) do
377
352
  puts "std out from the test"
378
353
  assert a_method_an_assert_calls
379
354
  end
380
- @test.context_class.setup{ puts "std out from the setup" }
381
- @test.context_class.teardown{ puts "std out from the teardown" }
382
- @test.context_class.send(:define_method, "a_method_an_assert_calls") do
355
+ }
356
+
357
+ setup do
358
+ subject.context_class.setup{ puts "std out from the setup" }
359
+ subject.context_class.teardown{ puts "std out from the teardown" }
360
+ subject.context_class.send(:define_method, "a_method_an_assert_calls") do
383
361
  puts "std out from a method an assert called"
384
362
  end
385
363
  end
386
364
 
387
365
  should "collect all stdout in the output accessor" do
388
- @test.run
389
-
390
- exp_out = "std out from the setup\n"\
391
- "std out from the test\n"\
392
- "std out from a method an assert called\n"\
393
- "std out from the teardown\n"
394
- assert_equal(exp_out, @test.output)
366
+ subject.run
367
+
368
+ exp_out =
369
+ "std out from the setup\n"\
370
+ "std out from the test\n"\
371
+ "std out from a method an assert called\n"\
372
+ "std out from the teardown\n"
373
+ assert_that(subject.output).equals(exp_out)
395
374
  end
396
375
  end
397
376
  end