assert 2.17.0 → 2.18.4

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