assert 2.18.2 → 2.19.2

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