assert 2.17.0 → 2.18.4

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