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
@@ -4,15 +4,9 @@ require "assert/default_runner"
4
4
  require "assert/runner"
5
5
 
6
6
  class Assert::DefaultRunner
7
-
8
7
  class UnitTests < Assert::Context
9
8
  desc "Assert::DefaultRunner"
10
- setup do
11
- @config = Factory.modes_off_config
12
- @runner = Assert::DefaultRunner.new(@config)
13
- end
14
- subject{ @runner }
15
9
 
10
+ # This is tested implicitly by running Assert's test suite
16
11
  end
17
-
18
12
  end
@@ -4,94 +4,95 @@ require "assert/default_suite"
4
4
  require "assert/suite"
5
5
 
6
6
  class Assert::DefaultSuite
7
-
8
7
  class UnitTests < Assert::Context
9
8
  desc "Assert::DefaultSuite"
10
- setup do
11
- ci = Factory.context_info(Factory.modes_off_context_class)
12
- @test = Factory.test(Factory.string, ci){ }
9
+ subject { unit_class }
13
10
 
14
- @config = Factory.modes_off_config
15
- @suite = Assert::DefaultSuite.new(@config)
16
- end
17
- subject{ @suite }
11
+ let(:unit_class) { Assert::DefaultSuite }
12
+ end
13
+
14
+ class InitTests < UnitTests
15
+ desc "when init"
16
+ subject { unit_class.new(config1) }
17
+
18
+ let(:ci1) { Factory.context_info(Factory.modes_off_context_class) }
19
+ let(:test1) { Factory.test(Factory.string, ci1) { } }
20
+ let(:config1) { Factory.modes_off_config }
18
21
 
19
22
  should "be a Suite" do
20
- assert_kind_of Assert::Suite, subject
23
+ assert_that(subject).is_kind_of(Assert::Suite)
21
24
  end
22
25
 
23
26
  should "default its test/result counts" do
24
- assert_equal 0, subject.test_count
25
- assert_equal 0, subject.result_count
26
- assert_equal 0, subject.pass_result_count
27
- assert_equal 0, subject.fail_result_count
28
- assert_equal 0, subject.error_result_count
29
- assert_equal 0, subject.skip_result_count
30
- assert_equal 0, subject.ignore_result_count
27
+ assert_that(subject.test_count).equals(0)
28
+ assert_that(subject.result_count).equals(0)
29
+ assert_that(subject.pass_result_count).equals(0)
30
+ assert_that(subject.fail_result_count).equals(0)
31
+ assert_that(subject.error_result_count).equals(0)
32
+ assert_that(subject.skip_result_count).equals(0)
33
+ assert_that(subject.ignore_result_count).equals(0)
31
34
  end
32
35
 
33
36
  should "increment its test count on `before_test`" do
34
37
  subject.before_test(@test)
35
- assert_equal 1, subject.test_count
38
+ assert_that(subject.test_count).equals(1)
36
39
  end
37
40
 
38
41
  should "increment its result counts on `on_result`" do
39
42
  subject.on_result(Factory.pass_result)
40
- assert_equal 1, subject.result_count
41
- assert_equal 1, subject.pass_result_count
42
- assert_equal 0, subject.fail_result_count
43
- assert_equal 0, subject.error_result_count
44
- assert_equal 0, subject.skip_result_count
45
- assert_equal 0, subject.ignore_result_count
43
+ assert_that(subject.result_count).equals(1)
44
+ assert_that(subject.pass_result_count).equals(1)
45
+ assert_that(subject.fail_result_count).equals(0)
46
+ assert_that(subject.error_result_count).equals(0)
47
+ assert_that(subject.skip_result_count).equals(0)
48
+ assert_that(subject.ignore_result_count).equals(0)
46
49
 
47
50
  subject.on_result(Factory.fail_result)
48
- assert_equal 2, subject.result_count
49
- assert_equal 1, subject.pass_result_count
50
- assert_equal 1, subject.fail_result_count
51
- assert_equal 0, subject.error_result_count
52
- assert_equal 0, subject.skip_result_count
53
- assert_equal 0, subject.ignore_result_count
51
+ assert_that(subject.result_count).equals(2)
52
+ assert_that(subject.pass_result_count).equals(1)
53
+ assert_that(subject.fail_result_count).equals(1)
54
+ assert_that(subject.error_result_count).equals(0)
55
+ assert_that(subject.skip_result_count).equals(0)
56
+ assert_that(subject.ignore_result_count).equals(0)
54
57
 
55
58
  subject.on_result(Factory.error_result)
56
- assert_equal 3, subject.result_count
57
- assert_equal 1, subject.pass_result_count
58
- assert_equal 1, subject.fail_result_count
59
- assert_equal 1, subject.error_result_count
60
- assert_equal 0, subject.skip_result_count
61
- assert_equal 0, subject.ignore_result_count
59
+ assert_that(subject.result_count).equals(3)
60
+ assert_that(subject.pass_result_count).equals(1)
61
+ assert_that(subject.fail_result_count).equals(1)
62
+ assert_that(subject.error_result_count).equals(1)
63
+ assert_that(subject.skip_result_count).equals(0)
64
+ assert_that(subject.ignore_result_count).equals(0)
62
65
 
63
66
  subject.on_result(Factory.skip_result)
64
- assert_equal 4, subject.result_count
65
- assert_equal 1, subject.pass_result_count
66
- assert_equal 1, subject.fail_result_count
67
- assert_equal 1, subject.error_result_count
68
- assert_equal 1, subject.skip_result_count
69
- assert_equal 0, subject.ignore_result_count
67
+ assert_that(subject.result_count).equals(4)
68
+ assert_that(subject.pass_result_count).equals(1)
69
+ assert_that(subject.fail_result_count).equals(1)
70
+ assert_that(subject.error_result_count).equals(1)
71
+ assert_that(subject.skip_result_count).equals(1)
72
+ assert_that(subject.ignore_result_count).equals(0)
70
73
 
71
74
  subject.on_result(Factory.ignore_result)
72
- assert_equal 5, subject.result_count
73
- assert_equal 1, subject.pass_result_count
74
- assert_equal 1, subject.fail_result_count
75
- assert_equal 1, subject.error_result_count
76
- assert_equal 1, subject.skip_result_count
77
- assert_equal 1, subject.ignore_result_count
75
+ assert_that(subject.result_count).equals(5)
76
+ assert_that(subject.pass_result_count).equals(1)
77
+ assert_that(subject.fail_result_count).equals(1)
78
+ assert_that(subject.error_result_count).equals(1)
79
+ assert_that(subject.skip_result_count).equals(1)
80
+ assert_that(subject.ignore_result_count).equals(1)
78
81
  end
79
82
 
80
83
  should "clear the run data on `on_start`" do
81
- subject.before_test(@test)
84
+ subject.before_test(test1)
82
85
  subject.on_result(Factory.pass_result)
83
86
 
84
- assert_equal 1, subject.test_count
85
- assert_equal 1, subject.result_count
86
- assert_equal 1, subject.pass_result_count
87
+ assert_that(subject.test_count).equals(1)
88
+ assert_that(subject.result_count).equals(1)
89
+ assert_that(subject.pass_result_count).equals(1)
87
90
 
88
91
  subject.on_start
89
92
 
90
- assert_equal 0, subject.test_count
91
- assert_equal 0, subject.result_count
92
- assert_equal 0, subject.pass_result_count
93
+ assert_that(subject.test_count).equals(0)
94
+ assert_that(subject.result_count).equals(0)
95
+ assert_that(subject.pass_result_count).equals(0)
93
96
  end
94
-
95
97
  end
96
-
97
98
  end
@@ -4,16 +4,17 @@ require "assert/factory"
4
4
  require "much-factory"
5
5
 
6
6
  module Assert::Factory
7
-
8
7
  class UnitTests < Assert::Context
9
8
  desc "Assert::Factory"
10
- subject{ Assert::Factory }
9
+ subject { unit_class }
10
+
11
+ let(:unit_class) { Assert::Factory }
11
12
 
12
13
  should "include and extend MuchFactory" do
13
- assert_includes MuchFactory, subject
14
+ assert_that(subject).includes(MuchFactory)
14
15
 
15
16
  # https://stackoverflow.com/questions/5197166/ruby-get-a-list-of-extended-modules
16
- assert_includes MuchFactory, subject_metaclass.included_modules
17
+ assert_that(subject_metaclass.included_modules).includes(MuchFactory)
17
18
  end
18
19
 
19
20
  private
@@ -23,7 +24,5 @@ module Assert::Factory
23
24
  self
24
25
  end
25
26
  end
26
-
27
27
  end
28
-
29
28
  end
@@ -2,82 +2,76 @@ require "assert"
2
2
  require "assert/file_line"
3
3
 
4
4
  class Assert::FileLine
5
-
6
5
  class UnitTests < Assert::Context
7
6
  desc "Assert::FileLine"
8
- setup do
9
- @file = "#{Factory.path}_tests.rb"
10
- @line = Factory.integer.to_s
11
- end
12
- subject{ Assert::FileLine }
7
+ subject { unit_class }
8
+
9
+ let(:unit_class) { Assert::FileLine }
10
+
11
+ let(:file1) { "#{Factory.path}_tests.rb" }
12
+ let(:line1) { Factory.integer.to_s }
13
13
 
14
14
  should have_imeths :parse
15
15
 
16
16
  should "know how to parse and init from a file line path string" do
17
17
  file_line_path = [
18
- "#{@file}:#{@line}",
19
- "#{@file}:#{@line} #{Factory.string}"
18
+ "#{file1}:#{line1}",
19
+ "#{file1}:#{line1} #{Factory.string}"
20
20
  ].sample
21
21
  file_line = subject.parse(file_line_path)
22
22
 
23
- assert_equal @file, file_line.file
24
- assert_equal @line, file_line.line
23
+ assert_that(file_line.file).equals(file1)
24
+ assert_that(file_line.line).equals(line1)
25
25
  end
26
26
 
27
27
  should "handle parsing bad data gracefully" do
28
- file_line = subject.parse(@file)
29
- assert_equal @file, file_line.file
30
- assert_equal "", file_line.line
28
+ file_line = subject.parse(file1)
29
+ assert_that(file_line.file).equals(file1)
30
+ assert_that(file_line.line).equals("")
31
31
 
32
- file_line = subject.parse(@line)
33
- assert_equal @line, file_line.file
34
- assert_equal "", file_line.line
32
+ file_line = subject.parse(line1)
33
+ assert_that(file_line.file).equals(line1)
34
+ assert_that(file_line.line).equals("")
35
35
 
36
36
  file_line = subject.parse("")
37
- assert_equal "", file_line.file
38
- assert_equal "", file_line.line
37
+ assert_that(file_line.file).equals("")
38
+ assert_that(file_line.line).equals("")
39
39
 
40
40
  file_line = subject.parse(nil)
41
- assert_equal "", file_line.file
42
- assert_equal "", file_line.line
41
+ assert_that(file_line.file).equals("")
42
+ assert_that(file_line.line).equals("")
43
43
  end
44
-
45
44
  end
46
45
 
47
46
  class InitTests < UnitTests
48
47
  desc "when init"
49
- setup do
50
- @file_line = Assert::FileLine.new(@file, @line)
51
- end
52
- subject{ @file_line }
48
+ subject { unit_class.new(file1, line1) }
53
49
 
54
50
  should have_readers :file, :line
55
51
 
56
52
  should "know its file and line" do
57
- assert_equal @file, subject.file
58
- assert_equal @line, subject.line
53
+ assert_that(subject.file).equals(file1)
54
+ assert_that(subject.line).equals(line1)
59
55
 
60
- file_line = Assert::FileLine.new(@file)
61
- assert_equal @file, file_line.file
62
- assert_equal "", file_line.line
56
+ file_line = unit_class.new(file1)
57
+ assert_that(file_line.file).equals(file1)
58
+ assert_that(file_line.line).equals("")
63
59
 
64
- file_line = Assert::FileLine.new
65
- assert_equal "", file_line.file
66
- assert_equal "", file_line.line
60
+ file_line = unit_class.new
61
+ assert_that(file_line.file).equals("")
62
+ assert_that(file_line.line).equals("")
67
63
  end
68
64
 
69
65
  should "know its string representation" do
70
- assert_equal "#{subject.file}:#{subject.line}", subject.to_s
66
+ assert_that(subject.to_s).equals("#{subject.file}:#{subject.line}")
71
67
  end
72
68
 
73
69
  should "know if it is equal to another file line" do
74
- yes = Assert::FileLine.new(@file, @line)
75
- no = Assert::FileLine.new("#{Factory.path}_tests.rb", Factory.integer.to_s)
70
+ yes = unit_class.new(file1, line1)
71
+ no = unit_class.new("#{Factory.path}_tests.rb", Factory.integer.to_s)
76
72
 
77
- assert_equal yes, subject
73
+ assert_that(subject).equals(yes)
78
74
  assert_not_equal no, subject
79
75
  end
80
-
81
76
  end
82
-
83
77
  end
@@ -2,35 +2,37 @@ require "assert"
2
2
  require "assert/macro"
3
3
 
4
4
  class Assert::Macro
5
-
6
5
  class UnitTests < Assert::Context
7
6
  desc "Assert::Macro"
8
- setup do
9
- @macro = Assert::Macro.new {}
10
- end
11
- subject { @macro }
7
+ subject { unit_class }
8
+
9
+ let(:unit_class) { Assert::Macro }
10
+ end
11
+
12
+ class InitTests < UnitTests
13
+ desc "when init"
14
+ subject { unit_class.new {} }
12
15
 
13
16
  should "have an accessor for its (optional) name" do
14
- assert_respond_to :name, subject
15
- assert_respond_to :name=, subject
17
+ assert_that(subject).responds_to(:name)
18
+ assert_that(subject).responds_to(:name=)
16
19
  end
17
20
 
18
21
  should "default its name if no given" do
19
- assert_equal "run this macro", (Assert::Macro.new {}).name
22
+ assert_that((unit_class.new {}).name).equals("run this macro")
20
23
  end
21
24
 
22
25
  should "initialize with a given name" do
23
- assert_equal "test", (Assert::Macro.new("test") {}).name
26
+ assert_that((unit_class.new("test") {}).name).equals("test")
24
27
  end
25
28
 
26
29
  should "be a Proc" do
27
- assert_kind_of ::Proc, subject
30
+ assert_that(subject).is_kind_of(::Proc)
28
31
  end
29
32
 
30
33
  should "complain if you create a macro without a block" do
31
- assert_raises(ArgumentError) { Assert::Macro.new }
34
+ assert_that(-> { unit_class.new }).raises(ArgumentError)
32
35
  end
33
-
34
36
  end
35
37
 
36
38
  class InstanceMethodsTests < Assert::Context
@@ -51,7 +53,6 @@ class Assert::Macro
51
53
  should not_have_instance_methods :method_8, :method_9
52
54
  should not_have_imeth :method_10
53
55
  should not_have_imeths :method_11, :method_12
54
-
55
56
  end
56
57
 
57
58
  class ClassMethodsTests < Assert::Context
@@ -74,7 +75,6 @@ class Assert::Macro
74
75
  should not_have_class_methods :method_8, :method_9
75
76
  should not_have_cmeth :method_10
76
77
  should not_have_cmeths :method_11, :method_12
77
-
78
78
  end
79
79
 
80
80
  class ReadersTests < Assert::Context
@@ -95,7 +95,6 @@ class Assert::Macro
95
95
  should not_have_reader :method_8, :method_9
96
96
  should not_have_readers :method_10
97
97
  should not_have_readers :method_11, :method_12
98
-
99
98
  end
100
99
 
101
100
  class WritersTests < Assert::Context
@@ -116,7 +115,6 @@ class Assert::Macro
116
115
  should not_have_writer :method_8, :method_9
117
116
  should not_have_writers :method_10
118
117
  should not_have_writers :method_11, :method_12
119
-
120
118
  end
121
119
 
122
120
  class AccessorsTests < Assert::Context
@@ -137,7 +135,5 @@ class Assert::Macro
137
135
  should not_have_accessor :method_8, :method_9
138
136
  should not_have_accessors :method_10
139
137
  should not_have_accessors :method_11, :method_12
140
-
141
138
  end
142
-
143
139
  end
@@ -4,13 +4,13 @@ require "assert/result"
4
4
  require "assert/file_line"
5
5
 
6
6
  module Assert::Result
7
-
8
7
  class UnitTests < Assert::Context
9
8
  desc "Assert::Result"
10
- setup do
11
- @test = Factory.test("a test name")
12
- end
13
- subject{ Assert::Result }
9
+ subject { unit_class }
10
+
11
+ let(:unit_class) { Assert::Result }
12
+
13
+ let(:test1) { Factory.test("a test name") }
14
14
 
15
15
  should have_imeths :types, :new
16
16
 
@@ -22,41 +22,33 @@ module Assert::Result
22
22
  :skip => Skip,
23
23
  :error => Error
24
24
  }
25
- assert_equal exp, subject.types
25
+ assert_that(subject.types).equals(exp)
26
26
 
27
- assert_equal Base, subject.types[Factory.string]
27
+ assert_that(subject.types[Factory.string]).equals(Base)
28
28
  end
29
29
 
30
30
  should "create results from data hashes" do
31
31
  type = Assert::Result.types.keys.sample
32
32
  exp = Assert::Result.types[type].new(:type => type)
33
- assert_equal exp, Assert::Result.new(:type => type)
34
- end
35
-
36
- private
37
-
38
- def build_backtrace
39
- assert_lib_path = File.join(ROOT_PATH, "lib/#{Factory.string}:#{Factory.integer}")
40
- (Factory.integer(3).times.map{ Factory.string } + [assert_lib_path]).shuffle
33
+ assert_that(Assert::Result.new(:type => type)).equals(exp)
41
34
  end
42
-
43
35
  end
44
36
 
45
- class BaseTests < UnitTests
46
- desc "Base"
47
- setup do
48
- @given_data = {
37
+ class InitBaseTests < UnitTests
38
+ desc "Base when init"
39
+ subject { Base.new(given_data1) }
40
+
41
+ let(:given_data1) {
42
+ {
49
43
  :type => Factory.string,
50
44
  :name => Factory.string,
51
45
  :test_name => Factory.string,
52
46
  :test_file_line => Assert::FileLine.new(Factory.string, Factory.integer),
53
47
  :message => Factory.string,
54
48
  :output => Factory.text,
55
- :backtrace => Backtrace.new(build_backtrace)
49
+ :backtrace => Backtrace.new(Factory.backtrace)
56
50
  }
57
- @result = Base.new(@given_data)
58
- end
59
- subject{ @result }
51
+ }
60
52
 
61
53
  should have_cmeths :type, :name, :for_test
62
54
  should have_imeths :type, :name, :test_name, :test_file_line
@@ -65,69 +57,69 @@ module Assert::Result
65
57
  should have_imeths :backtrace, :trace
66
58
  should have_imeths :set_backtrace, :set_with_bt, :with_bt_set?
67
59
  should have_imeths :src_line, :file_line, :file_name, :line_num
68
- should have_imeths *Assert::Result.types.keys.map{ |k| "#{k}?" }
60
+ should have_imeths(*Assert::Result.types.keys.map{ |k| "#{k}?" })
69
61
  should have_imeths :to_sym, :to_s
70
62
 
71
63
  should "know its class-level type/name" do
72
- assert_equal :unknown, subject.class.type
73
- assert_equal "", subject.class.name
64
+ assert_that(subject.class.type).equals(:unknown)
65
+ assert_that(subject.class.name).equals("")
74
66
  end
75
67
 
76
68
  should "know how to build a result for a given test" do
77
69
  message = Factory.text
78
70
  bt = Factory.integer(3).times.map{ Factory.string }
79
- result = Base.for_test(@test, message, bt)
71
+ result = Base.for_test(test1, message, bt)
80
72
 
81
73
  exp_backtrace = Backtrace.new(bt)
82
74
  exp_trace = exp_backtrace.filtered.first.to_s
83
75
 
84
- assert_equal @test.name, result.test_name
85
- assert_equal @test.file_line.to_s, result.test_id
76
+ assert_that(result.test_name).equals(test1.name)
77
+ assert_that(result.test_id).equals(test1.file_line.to_s)
86
78
 
87
- assert_equal message, result.message
88
- assert_equal exp_backtrace, result.backtrace
89
- assert_equal exp_trace, result.trace
79
+ assert_that(result.message).equals(message)
80
+ assert_that(result.backtrace).equals(exp_backtrace)
81
+ assert_that(result.trace).equals(exp_trace)
90
82
 
91
- assert_false result.with_bt_set?
83
+ assert_that(result.with_bt_set?).is_false
92
84
  end
93
85
 
94
86
  should "use any given attrs" do
95
- assert_equal @given_data[:type].to_sym, subject.type
96
- assert_equal @given_data[:name], subject.name
97
- assert_equal @given_data[:test_name], subject.test_name
98
- assert_equal @given_data[:test_file_line], subject.test_file_line
99
- assert_equal @given_data[:message], subject.message
100
- assert_equal @given_data[:output], subject.output
101
- assert_equal @given_data[:backtrace], subject.backtrace
87
+ assert_that(subject.type).equals(given_data1[:type].to_sym)
88
+ assert_that(subject.name).equals(given_data1[:name])
89
+ assert_that(subject.test_name).equals(given_data1[:test_name])
90
+ assert_that(subject.test_file_line).equals(given_data1[:test_file_line])
91
+ assert_that(subject.message).equals(given_data1[:message])
92
+ assert_that(subject.output).equals(given_data1[:output])
93
+ assert_that(subject.backtrace).equals(given_data1[:backtrace])
102
94
  end
103
95
 
104
96
  should "default its attrs" do
105
97
  result = Base.new({})
106
98
 
107
- assert_equal :unknown, result.type
108
- assert_equal "", result.name
109
- assert_equal "", result.test_name
110
- assert_equal Assert::FileLine.parse(""), result.test_file_line
111
- assert_equal "", result.message
112
- assert_equal "", result.output
113
- assert_equal Backtrace.new([]), result.backtrace
114
- assert_equal "", result.trace
99
+ assert_that(result.type).equals(:unknown)
100
+ assert_that(result.name).equals("")
101
+ assert_that(result.test_name).equals("")
102
+ assert_that(result.test_file_line).equals(Assert::FileLine.parse(""))
103
+ assert_that(result.message).equals("")
104
+ assert_that(result.output).equals("")
105
+ assert_that(result.backtrace).equals(Backtrace.new([]))
106
+ assert_that(result.trace).equals("")
115
107
  end
116
108
 
117
109
  should "know its test file line attrs" do
118
- exp = @given_data[:test_file_line]
119
- assert_equal exp.file, subject.test_file_name
120
- assert_equal exp.line.to_i, subject.test_line_num
121
- assert_equal exp.to_s, subject.test_id
110
+ exp = given_data1[:test_file_line]
111
+ assert_that(subject.test_file_name).equals(exp.file)
112
+ assert_that(subject.test_line_num).equals(exp.line.to_i)
113
+ assert_that(subject.test_id).equals(exp.to_s)
122
114
  end
123
115
 
124
116
  should "allow setting a new backtrace" do
125
- new_bt = build_backtrace
117
+ new_bt = Factory.backtrace
126
118
  exp_backtrace = Backtrace.new(new_bt)
127
119
  exp_trace = exp_backtrace.filtered.first.to_s
128
120
  subject.set_backtrace(new_bt)
129
- assert_equal exp_backtrace, subject.backtrace
130
- assert_equal exp_trace, subject.trace
121
+ assert_that(subject.backtrace).equals(exp_backtrace)
122
+ assert_that(subject.trace).equals(exp_trace)
131
123
 
132
124
  # test that the first bt line is used if filtered is empty
133
125
  assert_lib_path = File.join(ROOT_PATH, "lib/#{Factory.string}:#{Factory.integer}")
@@ -135,46 +127,46 @@ module Assert::Result
135
127
  exp_backtrace = Backtrace.new(new_bt)
136
128
  exp_trace = exp_backtrace.first.to_s
137
129
  subject.set_backtrace(new_bt)
138
- assert_equal exp_backtrace, subject.backtrace
139
- assert_equal exp_trace, subject.trace
130
+ assert_that(subject.backtrace).equals(exp_backtrace)
131
+ assert_that(subject.trace).equals(exp_trace)
140
132
  end
141
133
 
142
134
  should "allow setting a with bt backtrace and know if one has been set" do
143
- assert_false subject.with_bt_set?
135
+ assert_that(subject.with_bt_set?).is_false
144
136
 
145
137
  orig_backtrace = subject.backtrace
146
- with_bt = build_backtrace
138
+ with_bt = Factory.backtrace
147
139
 
148
140
  subject.set_with_bt(with_bt)
149
141
 
150
- assert_true subject.with_bt_set?
151
- assert_equal orig_backtrace, subject.backtrace
152
- assert_equal with_bt.first, subject.src_line
142
+ assert_that(subject.with_bt_set?).is_true
143
+ assert_that(subject.backtrace).equals(orig_backtrace)
144
+ assert_that(subject.src_line).equals(with_bt.first)
153
145
 
154
146
  exp = Backtrace.to_s(with_bt + [orig_backtrace.filtered.first])
155
- assert_equal exp, subject.trace
147
+ assert_that(subject.trace).equals(exp)
156
148
  end
157
149
 
158
150
  should "know its src/file line attrs" do
159
- new_bt = build_backtrace
151
+ new_bt = Factory.backtrace
160
152
  subject.set_backtrace(new_bt)
161
153
 
162
154
  exp = Backtrace.new(new_bt).filtered.first.to_s
163
- assert_equal exp, subject.src_line
155
+ assert_that(subject.src_line).equals(exp)
164
156
 
165
157
  exp = Assert::FileLine.parse(subject.src_line)
166
- assert_equal exp, subject.file_line
167
- assert_equal exp.file, subject.file_name
168
- assert_equal exp.line.to_i, subject.line_num
158
+ assert_that(subject.file_line).equals(exp)
159
+ assert_that(subject.file_name).equals(exp.file)
160
+ assert_that(subject.line_num).equals(exp.line.to_i)
169
161
 
170
162
  # test you get the same file line attrs using `set_with_bt`
171
163
  subject.set_with_bt(new_bt)
172
- assert_equal new_bt.first.to_s, subject.src_line
164
+ assert_that(subject.src_line).equals(new_bt.first.to_s)
173
165
 
174
166
  exp = Assert::FileLine.parse(subject.src_line)
175
- assert_equal exp, subject.file_line
176
- assert_equal exp.file, subject.file_name
177
- assert_equal exp.line.to_i, subject.line_num
167
+ assert_that(subject.file_line).equals(exp)
168
+ assert_that(subject.file_name).equals(exp.file)
169
+ assert_that(subject.line_num).equals(exp.line.to_i)
178
170
 
179
171
  # test that the first bt line is used if filtered is empty
180
172
  assert_lib_path = File.join(ROOT_PATH, "lib/#{Factory.string}:#{Factory.integer}")
@@ -182,45 +174,45 @@ module Assert::Result
182
174
  subject.set_backtrace(new_bt)
183
175
 
184
176
  exp = new_bt.first.to_s
185
- assert_equal exp, subject.src_line
177
+ assert_that(subject.src_line).equals(exp)
186
178
 
187
179
  exp = Assert::FileLine.parse(subject.src_line)
188
- assert_equal exp, subject.file_line
189
- assert_equal exp.file, subject.file_name
190
- assert_equal exp.line.to_i, subject.line_num
180
+ assert_that(subject.file_line).equals(exp)
181
+ assert_that(subject.file_name).equals(exp.file)
182
+ assert_that(subject.line_num).equals(exp.line.to_i)
191
183
  end
192
184
 
193
185
  should "know if it is a certain type of result" do
194
186
  Assert::Result.types.keys.each do |type|
195
- assert_false subject.send("#{type}?")
187
+ assert_that(subject.send("#{type}?")).is_false
196
188
  Assert.stub(subject, :type){ type }
197
- assert_true subject.send("#{type}?")
189
+ assert_that(subject.send("#{type}?")).is_true
198
190
  end
199
191
  end
200
192
 
201
193
  should "know its symbol representation" do
202
- assert_equal subject.type, subject.to_sym
194
+ assert_that(subject.to_sym).equals(subject.type)
203
195
  end
204
196
 
205
197
  should "know its string representation" do
206
198
  str = subject.to_s
207
199
 
208
- assert_includes subject.name.upcase, str
209
- assert_includes subject.test_name, str
210
- assert_includes subject.message, str
211
- assert_includes subject.trace, str
200
+ assert_that(str).includes(subject.name.upcase)
201
+ assert_that(str).includes(subject.test_name)
202
+ assert_that(str).includes(subject.message)
203
+ assert_that(str).includes(subject.trace)
212
204
 
213
- assert_equal 3, str.split("\n").count
205
+ assert_that(str.split("\n").count).equals(3)
214
206
 
215
207
  Assert.stub(subject, :message){ "" }
216
208
  Assert.stub(subject, :trace){ "" }
217
209
 
218
- assert_equal 1, subject.to_s.split("\n").count
210
+ assert_that(subject.to_s.split("\n").count).equals(1)
219
211
  end
220
212
 
221
213
  should "know if it is equal to another result" do
222
- other = Assert::Result::Base.new(@given_data)
223
- assert_equal other, subject
214
+ other = Assert::Result::Base.new(given_data1)
215
+ assert_that(subject).equals(other)
224
216
 
225
217
  Assert.stub(other, [:type, :message].sample){ Factory.string }
226
218
  assert_not_equal other, subject
@@ -231,220 +223,191 @@ module Assert::Result
231
223
  "@message=#{subject.message.inspect} "\
232
224
  "@file_line=#{subject.file_line.to_s.inspect} "\
233
225
  "@test_file_line=#{subject.test_file_line.to_s.inspect}>"
234
- assert_equal exp, subject.inspect
226
+ assert_that(subject.inspect).equals(exp)
235
227
  end
236
-
237
228
  end
238
229
 
239
- class PassTests < UnitTests
240
- desc "Pass"
241
- setup do
242
- @result = Pass.new({})
243
- end
244
- subject { @result }
230
+ class InitPassTests < UnitTests
231
+ desc "Pass when init"
232
+ subject { Pass.new({}) }
245
233
 
246
234
  should "know its type/name" do
247
- assert_equal :pass, subject.type
248
- assert_equal :pass, subject.class.type
249
- assert_equal "Pass", subject.class.name
235
+ assert_that(subject.type).equals(:pass)
236
+ assert_that(subject.class.type).equals(:pass)
237
+ assert_that(subject.class.name).equals("Pass")
250
238
  end
251
-
252
239
  end
253
240
 
254
- class IgnoreTests < UnitTests
255
- desc "Ignore"
256
- setup do
257
- @result = Ignore.new({})
258
- end
259
- subject { @result }
241
+ class InitIgnoreTests < UnitTests
242
+ desc "Ignore when init"
243
+ subject { Ignore.new({}) }
260
244
 
261
245
  should "know its type/name" do
262
- assert_equal :ignore, subject.type
263
- assert_equal :ignore, subject.class.type
264
- assert_equal "Ignore", subject.class.name
246
+ assert_that(subject.type).equals(:ignore)
247
+ assert_that(subject.class.type).equals(:ignore)
248
+ assert_that(subject.class.name).equals("Ignore")
265
249
  end
266
-
267
250
  end
268
251
 
269
- class HaltingTestResultErrorTests < UnitTests
270
- desc "HaltingTestResultError"
271
- subject{ HaltingTestResultError.new }
252
+ class InitHaltingTestResultErrorTests < UnitTests
253
+ desc "HaltingTestResultError when init"
254
+ subject { HaltingTestResultError.new }
272
255
 
273
256
  should have_accessors :assert_with_bt
274
257
 
275
258
  should "be a runtime error" do
276
- assert_kind_of RuntimeError, subject
259
+ assert_that(subject).is_kind_of(RuntimeError)
277
260
  end
278
-
279
261
  end
280
262
 
281
- class TestFailureTests < UnitTests
282
- desc "TestFailure"
283
- subject{ TestFailure }
263
+ class InitTestFailureTests < UnitTests
264
+ desc "TestFailure when init"
265
+ subject { TestFailure.new }
284
266
 
285
267
  should "be a halting test result error" do
286
- assert_kind_of HaltingTestResultError, subject.new
268
+ assert_that(subject).is_kind_of(HaltingTestResultError)
287
269
  end
288
-
289
270
  end
290
271
 
291
- class FailTests < UnitTests
292
- desc "Fail"
293
- setup do
294
- @result = Fail.new({})
295
- end
296
- subject { @result }
272
+ class InitFailTests < UnitTests
273
+ desc "Fail when init"
274
+ subject { Fail.new({}) }
297
275
 
298
276
  should "know its type/name" do
299
- assert_equal :fail, subject.type
300
- assert_equal :fail, subject.class.type
301
- assert_equal "Fail", subject.class.name
277
+ assert_that(subject.type).equals(:fail)
278
+ assert_that(subject.class.type).equals(:fail)
279
+ assert_that(subject.class.name).equals("Fail")
302
280
  end
303
281
 
304
282
  should "allow creating for a test with TestFailure exceptions" do
305
283
  err = TestFailure.new
306
- err.set_backtrace(build_backtrace)
307
- result = Fail.for_test(@test, err)
284
+ err.set_backtrace(Factory.backtrace)
285
+ result = Fail.for_test(test1, err)
308
286
 
309
- assert_equal err.message, result.message
287
+ assert_that(result.message).equals(err.message)
310
288
 
311
289
  err_backtrace = Backtrace.new(err.backtrace)
312
- assert_equal err_backtrace, result.backtrace
290
+ assert_that(result.backtrace).equals(err_backtrace)
313
291
 
314
292
  # test assert with bt errors
315
- err.assert_with_bt = build_backtrace
316
- result = Fail.for_test(@test, err)
293
+ err.assert_with_bt = Factory.backtrace
294
+ result = Fail.for_test(test1, err)
317
295
 
318
- assert_equal err.message, result.message
319
- assert_equal err.backtrace, result.backtrace
320
- assert_equal err.assert_with_bt.first, result.src_line
296
+ assert_that(result.message).equals(err.message)
297
+ assert_that(result.backtrace).equals(err.backtrace)
298
+ assert_that(result.src_line).equals(err.assert_with_bt.first)
321
299
 
322
300
  exp = Backtrace.to_s(err.assert_with_bt + [err_backtrace.filtered.first])
323
- assert_equal exp, result.trace
301
+ assert_that(result.trace).equals(exp)
324
302
  end
325
303
 
326
304
  should "not allow creating for a test with non-TestFailure exceptions" do
327
- assert_raises(ArgumentError){ Fail.for_test(@test, RuntimeError.new) }
305
+ assert_that(-> { Fail.for_test(test1, RuntimeError.new) }).raises(ArgumentError)
328
306
  end
329
-
330
307
  end
331
308
 
332
- class TestSkippedTests < UnitTests
333
- desc "TestSkipped"
334
- subject{ TestSkipped }
309
+ class InitTestSkippedTests < UnitTests
310
+ desc "TestSkipped when init"
311
+ subject { TestSkipped.new }
335
312
 
336
313
  should "be a halting test result error" do
337
- assert_kind_of HaltingTestResultError, subject.new
314
+ assert_that(subject).is_kind_of(HaltingTestResultError)
338
315
  end
339
-
340
316
  end
341
317
 
342
- class SkipTests < UnitTests
343
- desc "Skip"
344
- setup do
345
- @result = Skip.new({})
346
- end
347
- subject { @result }
318
+ class InitSkipTests < UnitTests
319
+ desc "Skip when init"
320
+ subject { Skip.new({}) }
348
321
 
349
322
  should "know its type/name" do
350
- assert_equal :skip, subject.type
351
- assert_equal :skip, subject.class.type
352
- assert_equal "Skip", subject.class.name
323
+ assert_that(subject.type).equals(:skip)
324
+ assert_that(subject.class.type).equals(:skip)
325
+ assert_that(subject.class.name).equals("Skip")
353
326
  end
354
327
 
355
328
  should "allow creating for a test with TestSkipped exceptions" do
356
329
  err = TestSkipped.new
357
- err.set_backtrace(build_backtrace)
358
- result = Skip.for_test(@test, err)
330
+ err.set_backtrace(Factory.backtrace)
331
+ result = Skip.for_test(test1, err)
359
332
 
360
- assert_equal err.message, result.message
333
+ assert_that(result.message).equals(err.message)
361
334
 
362
335
  err_backtrace = Backtrace.new(err.backtrace)
363
- assert_equal err_backtrace, result.backtrace
336
+ assert_that(result.backtrace).equals(err_backtrace)
364
337
 
365
338
  # test assert with bt errors
366
- err.assert_with_bt = build_backtrace
367
- result = Skip.for_test(@test, err)
339
+ err.assert_with_bt = Factory.backtrace
340
+ result = Skip.for_test(test1, err)
368
341
 
369
- assert_equal err.message, result.message
370
- assert_equal err.backtrace, result.backtrace
371
- assert_equal err.assert_with_bt.first, result.src_line
342
+ assert_that(result.message).equals(err.message)
343
+ assert_that(result.backtrace).equals(err.backtrace)
344
+ assert_that(result.src_line).equals(err.assert_with_bt.first)
372
345
 
373
346
  exp = Backtrace.to_s(err.assert_with_bt + [err_backtrace.filtered.first])
374
- assert_equal exp, result.trace
347
+ assert_that(result.trace).equals(exp)
375
348
  end
376
349
 
377
350
  should "not allow creating for a test with non-TestSkipped exceptions" do
378
- assert_raises(ArgumentError){ Skip.for_test(@test, RuntimeError.new) }
351
+ assert_that(-> { Skip.for_test(test1, RuntimeError.new) }).raises(ArgumentError)
379
352
  end
380
-
381
353
  end
382
354
 
383
- class ErrorTests < UnitTests
384
- desc "Error"
385
- setup do
386
- @result = Error.new({})
387
- end
388
- subject { @result }
355
+ class InitErrorTests < UnitTests
356
+ desc "Error when init"
357
+ subject { Error.new({}) }
389
358
 
390
359
  should "know its class-level type/name" do
391
- assert_equal :error, subject.class.type
392
- assert_equal "Error", subject.class.name
360
+ assert_that(subject.class.type).equals(:error)
361
+ assert_that(subject.class.name).equals("Error")
393
362
  end
394
363
 
395
364
  should "allow creating for a test with exceptions" do
396
365
  err = Exception.new
397
- err.set_backtrace(build_backtrace)
398
- result = Error.for_test(@test, err)
366
+ err.set_backtrace(Factory.backtrace)
367
+ result = Error.for_test(test1, err)
399
368
 
400
369
  exp_msg = "#{err.message} (#{err.class.name})"
401
- assert_equal exp_msg, result.message
370
+ assert_that(result.message).equals(exp_msg)
402
371
 
403
372
  exp_bt = Backtrace.new(err.backtrace)
404
- assert_equal exp_bt, result.backtrace
405
- assert_equal Backtrace.to_s(exp_bt), result.trace
373
+ assert_that(result.backtrace).equals(exp_bt)
374
+ assert_that(result.trace).equals(Backtrace.to_s(exp_bt))
406
375
  end
407
376
 
408
377
  should "not allow creating for a test without an exception" do
409
- assert_raises(ArgumentError){ Error.for_test(@test, Factory.string) }
378
+ assert_that(-> { Error.for_test(test1, Factory.string) }).raises(ArgumentError)
410
379
  end
411
-
412
380
  end
413
381
 
414
- class BacktraceTests < UnitTests
415
- desc "Backtrace"
416
- setup do
417
- @backtrace = Backtrace.new(build_backtrace)
418
- end
419
- subject { @backtrace }
382
+ class InitBacktraceTests < UnitTests
383
+ desc "Backtrace when init"
384
+ subject { Backtrace.new(Factory.backtrace) }
420
385
 
421
386
  should have_cmeths :parse, :to_s
422
387
  should have_imeths :filtered
423
388
 
424
389
  should "be parseable from its string representation" do
425
- assert_equal subject, Backtrace.parse(Backtrace.to_s(subject))
390
+ assert_that(Backtrace.parse(Backtrace.to_s(subject))).equals(subject)
426
391
  end
427
392
 
428
393
  should "render as a string by joining on the newline" do
429
- assert_equal subject.join(Backtrace::DELIM), Backtrace.to_s(subject)
394
+ assert_that(Backtrace.to_s(subject)).equals(subject.join(Backtrace::DELIM))
430
395
  end
431
396
 
432
397
  should "be an Array" do
433
- assert_kind_of ::Array, subject
398
+ assert_that(subject).is_kind_of(::Array)
434
399
  end
435
400
 
436
401
  should "know its DELIM" do
437
- assert_equal "\n", Backtrace::DELIM
402
+ assert_that(Backtrace::DELIM).equals("\n")
438
403
  end
439
404
 
440
405
  should "another backtrace when filtered" do
441
- assert_kind_of Backtrace, subject
406
+ assert_that(subject).is_kind_of(Backtrace)
442
407
  end
443
408
 
444
409
  should "default itself when created from nil" do
445
- assert_equal ["No backtrace"], Backtrace.new
410
+ assert_that(Backtrace.new).equals(["No backtrace"])
446
411
  end
447
-
448
412
  end
449
-
450
413
  end