assert 2.18.0 → 2.19.0

Sign up to get free protection for your applications and to get access to all the features.
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