colorcode_convert_rgb 0.1.0

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 (158) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +7 -0
  3. data/Gemfile.lock +23 -0
  4. data/LICENSE.txt +21 -0
  5. data/README.md +40 -0
  6. data/Rakefile +10 -0
  7. data/bin/console +14 -0
  8. data/bin/setup +8 -0
  9. data/colorcode_convert_rgb.gemspec +30 -0
  10. data/exe/colorcode_convert_rgb +4 -0
  11. data/lib/colorcode_convert_rgb.rb +7 -0
  12. data/lib/colorcode_convert_rgb/cli.rb +13 -0
  13. data/lib/colorcode_convert_rgb/version.rb +3 -0
  14. data/vendor/bundle/ruby/2.5.0/bin/colorcode_convert_rgb +27 -0
  15. data/vendor/bundle/ruby/2.5.0/bin/rake +27 -0
  16. data/vendor/bundle/ruby/2.5.0/bin/thor +27 -0
  17. data/vendor/bundle/ruby/2.5.0/cache/minitest-5.14.2.gem +0 -0
  18. data/vendor/bundle/ruby/2.5.0/cache/rake-12.3.3.gem +0 -0
  19. data/vendor/bundle/ruby/2.5.0/cache/thor-1.0.1.gem +0 -0
  20. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/.autotest +34 -0
  21. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/History.rdoc +1397 -0
  22. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/Manifest.txt +27 -0
  23. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/README.rdoc +764 -0
  24. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/Rakefile +74 -0
  25. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/design_rationale.rb +52 -0
  26. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/lib/hoe/minitest.rb +32 -0
  27. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/lib/minitest.rb +1056 -0
  28. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/lib/minitest/assertions.rb +807 -0
  29. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/lib/minitest/autorun.rb +13 -0
  30. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/lib/minitest/benchmark.rb +455 -0
  31. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/lib/minitest/expectations.rb +303 -0
  32. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/lib/minitest/hell.rb +11 -0
  33. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/lib/minitest/mock.rb +240 -0
  34. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/lib/minitest/parallel.rb +70 -0
  35. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/lib/minitest/pride.rb +4 -0
  36. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/lib/minitest/pride_plugin.rb +142 -0
  37. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/lib/minitest/spec.rb +342 -0
  38. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/lib/minitest/test.rb +220 -0
  39. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/lib/minitest/unit.rb +45 -0
  40. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/test/minitest/metametameta.rb +136 -0
  41. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/test/minitest/test_minitest_assertions.rb +1575 -0
  42. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/test/minitest/test_minitest_benchmark.rb +137 -0
  43. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/test/minitest/test_minitest_mock.rb +872 -0
  44. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/test/minitest/test_minitest_reporter.rb +299 -0
  45. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/test/minitest/test_minitest_spec.rb +1061 -0
  46. data/vendor/bundle/ruby/2.5.0/gems/minitest-5.14.2/test/minitest/test_minitest_test.rb +1084 -0
  47. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/CONTRIBUTING.rdoc +43 -0
  48. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/Gemfile +3 -0
  49. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/History.rdoc +2344 -0
  50. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/MIT-LICENSE +21 -0
  51. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/README.rdoc +156 -0
  52. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/Rakefile +41 -0
  53. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/azure-pipelines.yml +11 -0
  54. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/bin/bundle +105 -0
  55. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/bin/console +7 -0
  56. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/bin/rake +29 -0
  57. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/bin/rdoc +29 -0
  58. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/bin/rubocop +29 -0
  59. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/bin/setup +6 -0
  60. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/command_line_usage.rdoc +158 -0
  61. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/example/Rakefile1 +38 -0
  62. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/example/Rakefile2 +35 -0
  63. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/example/a.c +6 -0
  64. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/example/b.c +6 -0
  65. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/example/main.c +11 -0
  66. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/glossary.rdoc +42 -0
  67. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/jamis.rb +592 -0
  68. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/proto_rake.rdoc +127 -0
  69. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/rake.1 +156 -0
  70. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/rakefile.rdoc +622 -0
  71. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/doc/rational.rdoc +151 -0
  72. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/exe/rake +27 -0
  73. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake.rb +71 -0
  74. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/application.rb +824 -0
  75. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/backtrace.rb +24 -0
  76. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/clean.rb +78 -0
  77. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/cloneable.rb +17 -0
  78. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/cpu_counter.rb +107 -0
  79. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/default_loader.rb +15 -0
  80. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/dsl_definition.rb +195 -0
  81. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/early_time.rb +22 -0
  82. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/ext/core.rb +26 -0
  83. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/ext/string.rb +176 -0
  84. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/file_creation_task.rb +25 -0
  85. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/file_list.rb +435 -0
  86. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/file_task.rb +54 -0
  87. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/file_utils.rb +137 -0
  88. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/file_utils_ext.rb +145 -0
  89. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/invocation_chain.rb +57 -0
  90. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/invocation_exception_mixin.rb +17 -0
  91. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/late_time.rb +18 -0
  92. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/linked_list.rb +112 -0
  93. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/loaders/makefile.rb +54 -0
  94. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/multi_task.rb +14 -0
  95. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/name_space.rb +38 -0
  96. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/packagetask.rb +207 -0
  97. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/phony.rb +16 -0
  98. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/private_reader.rb +21 -0
  99. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/promise.rb +100 -0
  100. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/pseudo_status.rb +30 -0
  101. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_module.rb +67 -0
  102. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_test_loader.rb +27 -0
  103. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/rule_recursion_overflow_error.rb +20 -0
  104. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/scope.rb +43 -0
  105. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/task.rb +413 -0
  106. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/task_argument_error.rb +8 -0
  107. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/task_arguments.rb +109 -0
  108. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/task_manager.rb +324 -0
  109. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/tasklib.rb +12 -0
  110. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/testtask.rb +224 -0
  111. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/thread_history_display.rb +49 -0
  112. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/thread_pool.rb +163 -0
  113. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/trace_output.rb +23 -0
  114. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/version.rb +10 -0
  115. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/lib/rake/win32.rb +51 -0
  116. data/vendor/bundle/ruby/2.5.0/gems/rake-12.3.3/rake.gemspec +42 -0
  117. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/.document +5 -0
  118. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/CHANGELOG.md +220 -0
  119. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/CONTRIBUTING.md +15 -0
  120. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/LICENSE.md +20 -0
  121. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/README.md +51 -0
  122. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/bin/thor +6 -0
  123. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor.rb +517 -0
  124. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/actions.rb +336 -0
  125. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/actions/create_file.rb +104 -0
  126. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/actions/create_link.rb +61 -0
  127. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/actions/directory.rb +108 -0
  128. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/actions/empty_directory.rb +143 -0
  129. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/actions/file_manipulation.rb +373 -0
  130. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/actions/inject_into_file.rb +120 -0
  131. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/base.rb +699 -0
  132. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/command.rb +142 -0
  133. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/core_ext/hash_with_indifferent_access.rb +97 -0
  134. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/error.rb +110 -0
  135. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/group.rb +281 -0
  136. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/invocation.rb +178 -0
  137. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/line_editor.rb +17 -0
  138. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/line_editor/basic.rb +37 -0
  139. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/line_editor/readline.rb +88 -0
  140. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/nested_context.rb +29 -0
  141. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/parser.rb +4 -0
  142. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/parser/argument.rb +70 -0
  143. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/parser/arguments.rb +175 -0
  144. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/parser/option.rb +159 -0
  145. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/parser/options.rb +236 -0
  146. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/rake_compat.rb +72 -0
  147. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/runner.rb +325 -0
  148. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/shell.rb +81 -0
  149. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/shell/basic.rb +491 -0
  150. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/shell/color.rb +153 -0
  151. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/shell/html.rb +126 -0
  152. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/util.rb +284 -0
  153. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/lib/thor/version.rb +3 -0
  154. data/vendor/bundle/ruby/2.5.0/gems/thor-1.0.1/thor.gemspec +28 -0
  155. data/vendor/bundle/ruby/2.5.0/specifications/minitest-5.14.2.gemspec +38 -0
  156. data/vendor/bundle/ruby/2.5.0/specifications/rake-12.3.3.gemspec +43 -0
  157. data/vendor/bundle/ruby/2.5.0/specifications/thor-1.0.1.gemspec +34 -0
  158. metadata +214 -0
@@ -0,0 +1,1084 @@
1
+ # encoding: UTF-8
2
+
3
+ require "pathname"
4
+ require "minitest/metametameta"
5
+
6
+ if defined? Encoding then
7
+ e = Encoding.default_external
8
+ if e != Encoding::UTF_8 then
9
+ warn ""
10
+ warn ""
11
+ warn "NOTE: External encoding #{e} is not UTF-8. Tests WILL fail."
12
+ warn " Run tests with `RUBYOPT=-Eutf-8 rake` to avoid errors."
13
+ warn ""
14
+ warn ""
15
+ end
16
+ end
17
+
18
+ class Minitest::Runnable
19
+ def whatever # faked for testing
20
+ assert true
21
+ end
22
+ end
23
+
24
+ class TestMinitestUnit < MetaMetaMetaTestCase
25
+ parallelize_me!
26
+
27
+ pwd = Pathname.new File.expand_path Dir.pwd
28
+ basedir = Pathname.new(File.expand_path "lib/minitest") + "mini"
29
+ basedir = basedir.relative_path_from(pwd).to_s
30
+ MINITEST_BASE_DIR = basedir[/\A\./] ? basedir : "./#{basedir}"
31
+ BT_MIDDLE = ["#{MINITEST_BASE_DIR}/test.rb:161:in `each'",
32
+ "#{MINITEST_BASE_DIR}/test.rb:158:in `each'",
33
+ "#{MINITEST_BASE_DIR}/test.rb:139:in `run'",
34
+ "#{MINITEST_BASE_DIR}/test.rb:106:in `run'"]
35
+
36
+ def test_filter_backtrace
37
+ # this is a semi-lame mix of relative paths.
38
+ # I cheated by making the autotest parts not have ./
39
+ bt = (["lib/autotest.rb:571:in `add_exception'",
40
+ "test/test_autotest.rb:62:in `test_add_exception'",
41
+ "#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
42
+ BT_MIDDLE +
43
+ ["#{MINITEST_BASE_DIR}/test.rb:29",
44
+ "test/test_autotest.rb:422"])
45
+ bt = util_expand_bt bt
46
+
47
+ ex = ["lib/autotest.rb:571:in `add_exception'",
48
+ "test/test_autotest.rb:62:in `test_add_exception'"]
49
+ ex = util_expand_bt ex
50
+
51
+ fu = Minitest.filter_backtrace(bt)
52
+
53
+ assert_equal ex, fu
54
+ end
55
+
56
+ def test_filter_backtrace_all_unit
57
+ bt = (["#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
58
+ BT_MIDDLE +
59
+ ["#{MINITEST_BASE_DIR}/test.rb:29"])
60
+ ex = bt.clone
61
+ fu = Minitest.filter_backtrace(bt)
62
+ assert_equal ex, fu
63
+ end
64
+
65
+ def test_filter_backtrace_unit_starts
66
+ bt = (["#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
67
+ BT_MIDDLE +
68
+ ["#{MINITEST_BASE_DIR}/mini/test.rb:29",
69
+ "-e:1"])
70
+
71
+ bt = util_expand_bt bt
72
+
73
+ ex = ["-e:1"]
74
+ fu = Minitest.filter_backtrace bt
75
+ assert_equal ex, fu
76
+ end
77
+
78
+ def test_filter_backtrace__empty
79
+ with_empty_backtrace_filter do
80
+ bt = %w[first second third]
81
+ fu = Minitest.filter_backtrace bt.dup
82
+ assert_equal bt, fu
83
+ end
84
+ end
85
+
86
+ def test_infectious_binary_encoding
87
+ @tu = Class.new FakeNamedTest do
88
+ def test_this_is_not_ascii_assertion
89
+ assert_equal "ЁЁЁ", "ёёё"
90
+ end
91
+
92
+ def test_this_is_non_ascii_failure_message
93
+ fail 'ЁЁЁ'.force_encoding('ASCII-8BIT')
94
+ end
95
+ end
96
+
97
+ expected = clean <<-EOM
98
+ EF
99
+
100
+ Finished in 0.00
101
+
102
+ 1) Error:
103
+ FakeNamedTestXX#test_this_is_non_ascii_failure_message:
104
+ RuntimeError: ЁЁЁ
105
+ FILE:LINE:in `test_this_is_non_ascii_failure_message'
106
+
107
+ 2) Failure:
108
+ FakeNamedTestXX#test_this_is_not_ascii_assertion [FILE:LINE]:
109
+ Expected: \"ЁЁЁ\"
110
+ Actual: \"ёёё\"
111
+
112
+ 2 runs, 1 assertions, 1 failures, 1 errors, 0 skips
113
+ EOM
114
+
115
+ assert_report expected
116
+ end
117
+
118
+ def test_passed_eh_teardown_good
119
+ test_class = Class.new FakeNamedTest do
120
+ def teardown; assert true; end
121
+ def test_omg; assert true; end
122
+ end
123
+
124
+ test = test_class.new :test_omg
125
+ test.run
126
+
127
+ refute_predicate test, :error?
128
+ assert_predicate test, :passed?
129
+ refute_predicate test, :skipped?
130
+ end
131
+
132
+ def test_passed_eh_teardown_skipped
133
+ test_class = Class.new FakeNamedTest do
134
+ def teardown; assert true; end
135
+ def test_omg; skip "bork"; end
136
+ end
137
+
138
+ test = test_class.new :test_omg
139
+ test.run
140
+
141
+ refute_predicate test, :error?
142
+ refute_predicate test, :passed?
143
+ assert_predicate test, :skipped?
144
+ end
145
+
146
+ def test_passed_eh_teardown_flunked
147
+ test_class = Class.new FakeNamedTest do
148
+ def teardown; flunk; end
149
+ def test_omg; assert true; end
150
+ end
151
+
152
+ test = test_class.new :test_omg
153
+ test.run
154
+
155
+ refute_predicate test, :error?
156
+ refute_predicate test, :passed?
157
+ refute_predicate test, :skipped?
158
+ end
159
+
160
+ def util_expand_bt bt
161
+ if RUBY_VERSION >= "1.9.0" then
162
+ bt.map { |f| (f =~ /^\./) ? File.expand_path(f) : f }
163
+ else
164
+ bt
165
+ end
166
+ end
167
+ end
168
+
169
+ class TestMinitestUnitInherited < MetaMetaMetaTestCase
170
+ def with_overridden_include
171
+ Class.class_eval do
172
+ def inherited_with_hacks _klass
173
+ throw :inherited_hook
174
+ end
175
+
176
+ alias inherited_without_hacks inherited
177
+ alias inherited inherited_with_hacks
178
+ alias IGNORE_ME! inherited # 1.8 bug. god I love venture bros
179
+ end
180
+
181
+ yield
182
+ ensure
183
+ Class.class_eval do
184
+ alias inherited inherited_without_hacks
185
+
186
+ undef_method :inherited_with_hacks
187
+ undef_method :inherited_without_hacks
188
+ end
189
+
190
+ refute_respond_to Class, :inherited_with_hacks
191
+ refute_respond_to Class, :inherited_without_hacks
192
+ end
193
+
194
+ def test_inherited_hook_plays_nice_with_others
195
+ with_overridden_include do
196
+ assert_throws :inherited_hook do
197
+ Class.new FakeNamedTest
198
+ end
199
+ end
200
+ end
201
+ end
202
+
203
+ class TestMinitestRunner < MetaMetaMetaTestCase
204
+ # do not parallelize this suite... it just can't handle it.
205
+
206
+ def test_class_runnables
207
+ @assertion_count = 0
208
+
209
+ tc = Class.new(Minitest::Test)
210
+
211
+ assert_equal 1, Minitest::Test.runnables.size
212
+ assert_equal [tc], Minitest::Test.runnables
213
+ end
214
+
215
+ def test_run_test
216
+ @tu =
217
+ Class.new FakeNamedTest do
218
+ attr_reader :foo
219
+
220
+ def run
221
+ @foo = "hi mom!"
222
+ r = super
223
+ @foo = "okay"
224
+
225
+ r
226
+ end
227
+
228
+ def test_something
229
+ assert_equal "hi mom!", foo
230
+ end
231
+ end
232
+
233
+ expected = clean <<-EOM
234
+ .
235
+
236
+ Finished in 0.00
237
+
238
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
239
+ EOM
240
+
241
+ assert_report expected
242
+ end
243
+
244
+ def test_run_error
245
+ @tu =
246
+ Class.new FakeNamedTest do
247
+ def test_something
248
+ assert true
249
+ end
250
+
251
+ def test_error
252
+ raise "unhandled exception"
253
+ end
254
+ end
255
+
256
+ expected = clean <<-EOM
257
+ E.
258
+
259
+ Finished in 0.00
260
+
261
+ 1) Error:
262
+ FakeNamedTestXX#test_error:
263
+ RuntimeError: unhandled exception
264
+ FILE:LINE:in \`test_error\'
265
+
266
+ 2 runs, 1 assertions, 0 failures, 1 errors, 0 skips
267
+ EOM
268
+
269
+ assert_report expected
270
+ end
271
+
272
+ def test_run_error_teardown
273
+ @tu =
274
+ Class.new FakeNamedTest do
275
+ def test_something
276
+ assert true
277
+ end
278
+
279
+ def teardown
280
+ raise "unhandled exception"
281
+ end
282
+ end
283
+
284
+ expected = clean <<-EOM
285
+ E
286
+
287
+ Finished in 0.00
288
+
289
+ 1) Error:
290
+ FakeNamedTestXX#test_something:
291
+ RuntimeError: unhandled exception
292
+ FILE:LINE:in \`teardown\'
293
+
294
+ 1 runs, 1 assertions, 0 failures, 1 errors, 0 skips
295
+ EOM
296
+
297
+ assert_report expected
298
+ end
299
+
300
+ def test_run_failing
301
+ setup_basic_tu
302
+
303
+ expected = clean <<-EOM
304
+ F.
305
+
306
+ Finished in 0.00
307
+
308
+ 1) Failure:
309
+ FakeNamedTestXX#test_failure [FILE:LINE]:
310
+ Expected false to be truthy.
311
+
312
+ 2 runs, 2 assertions, 1 failures, 0 errors, 0 skips
313
+ EOM
314
+
315
+ assert_report expected
316
+ end
317
+
318
+ def setup_basic_tu
319
+ @tu =
320
+ Class.new FakeNamedTest do
321
+ def test_something
322
+ assert true
323
+ end
324
+
325
+ def test_failure
326
+ assert false
327
+ end
328
+ end
329
+ end
330
+
331
+ def test_run_failing_filtered
332
+ setup_basic_tu
333
+
334
+ expected = clean <<-EOM
335
+ .
336
+
337
+ Finished in 0.00
338
+
339
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
340
+ EOM
341
+
342
+ assert_report expected, %w[--name /some|thing/ --seed 42]
343
+ end
344
+
345
+ def assert_filtering filter, name, expected, a = false
346
+ args = %W[--#{filter} #{name} --seed 42]
347
+
348
+ alpha = Class.new FakeNamedTest do
349
+ define_method :test_something do
350
+ assert a
351
+ end
352
+ end
353
+ Object.const_set(:Alpha, alpha)
354
+
355
+ beta = Class.new FakeNamedTest do
356
+ define_method :test_something do
357
+ assert true
358
+ end
359
+ end
360
+ Object.const_set(:Beta, beta)
361
+
362
+ @tus = [alpha, beta]
363
+
364
+ assert_report expected, args
365
+ ensure
366
+ Object.send :remove_const, :Alpha
367
+ Object.send :remove_const, :Beta
368
+ end
369
+
370
+ def test_run_filtered_including_suite_name
371
+ expected = clean <<-EOM
372
+ .
373
+
374
+ Finished in 0.00
375
+
376
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
377
+ EOM
378
+
379
+ assert_filtering "name", "/Beta#test_something/", expected
380
+ end
381
+
382
+ def test_run_filtered_including_suite_name_string
383
+ expected = clean <<-EOM
384
+ .
385
+
386
+ Finished in 0.00
387
+
388
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
389
+ EOM
390
+
391
+ assert_filtering "name", "Beta#test_something", expected
392
+ end
393
+
394
+ def test_run_filtered_string_method_only
395
+ expected = clean <<-EOM
396
+ ..
397
+
398
+ Finished in 0.00
399
+
400
+ 2 runs, 2 assertions, 0 failures, 0 errors, 0 skips
401
+ EOM
402
+
403
+ assert_filtering "name", "test_something", expected, :pass
404
+ end
405
+
406
+ def test_run_failing_excluded
407
+ setup_basic_tu
408
+
409
+ expected = clean <<-EOM
410
+ .
411
+
412
+ Finished in 0.00
413
+
414
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
415
+ EOM
416
+
417
+ assert_report expected, %w[--exclude /failure/ --seed 42]
418
+ end
419
+
420
+ def test_run_filtered_excluding_suite_name
421
+ expected = clean <<-EOM
422
+ .
423
+
424
+ Finished in 0.00
425
+
426
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
427
+ EOM
428
+
429
+ assert_filtering "exclude", "/Alpha#test_something/", expected
430
+ end
431
+
432
+ def test_run_filtered_excluding_suite_name_string
433
+ expected = clean <<-EOM
434
+ .
435
+
436
+ Finished in 0.00
437
+
438
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
439
+ EOM
440
+
441
+ assert_filtering "exclude", "Alpha#test_something", expected
442
+ end
443
+
444
+ def test_run_filtered_excluding_string_method_only
445
+ expected = clean <<-EOM
446
+
447
+
448
+ Finished in 0.00
449
+
450
+ 0 runs, 0 assertions, 0 failures, 0 errors, 0 skips
451
+ EOM
452
+
453
+ assert_filtering "exclude", "test_something", expected, :pass
454
+ end
455
+
456
+ def test_run_passing
457
+ @tu =
458
+ Class.new FakeNamedTest do
459
+ def test_something
460
+ assert true
461
+ end
462
+ end
463
+
464
+ expected = clean <<-EOM
465
+ .
466
+
467
+ Finished in 0.00
468
+
469
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
470
+ EOM
471
+
472
+ assert_report expected
473
+ end
474
+
475
+ def test_run_skip
476
+ @tu =
477
+ Class.new FakeNamedTest do
478
+ def test_something
479
+ assert true
480
+ end
481
+
482
+ def test_skip
483
+ skip "not yet"
484
+ end
485
+ end
486
+
487
+ expected = clean <<-EOM
488
+ S.
489
+
490
+ Finished in 0.00
491
+
492
+ 2 runs, 1 assertions, 0 failures, 0 errors, 1 skips
493
+
494
+ You have skipped tests. Run with --verbose for details.
495
+ EOM
496
+
497
+ restore_env do
498
+ assert_report expected
499
+ end
500
+ end
501
+
502
+ def test_run_skip_verbose
503
+ @tu =
504
+ Class.new FakeNamedTest do
505
+ def test_something
506
+ assert true
507
+ end
508
+
509
+ def test_skip
510
+ skip "not yet"
511
+ end
512
+ end
513
+
514
+ expected = clean <<-EOM
515
+ FakeNamedTestXX#test_skip = 0.00 s = S
516
+ FakeNamedTestXX#test_something = 0.00 s = .
517
+
518
+ Finished in 0.00
519
+
520
+ 1) Skipped:
521
+ FakeNamedTestXX#test_skip [FILE:LINE]:
522
+ not yet
523
+
524
+ 2 runs, 1 assertions, 0 failures, 0 errors, 1 skips
525
+ EOM
526
+
527
+ assert_report expected, %w[--seed 42 --verbose]
528
+ end
529
+
530
+ def test_run_with_other_runner
531
+ @tu =
532
+ Class.new FakeNamedTest do
533
+ def self.run reporter, options = {}
534
+ @reporter = reporter
535
+ before_my_suite
536
+ super
537
+ end
538
+
539
+ def self.name; "wacky!" end
540
+
541
+ def self.before_my_suite
542
+ @reporter.io.puts "Running #{self.name} tests"
543
+ @@foo = 1
544
+ end
545
+
546
+ def test_something
547
+ assert_equal 1, @@foo
548
+ end
549
+
550
+ def test_something_else
551
+ assert_equal 1, @@foo
552
+ end
553
+ end
554
+
555
+ expected = clean <<-EOM
556
+ Running wacky! tests
557
+ ..
558
+
559
+ Finished in 0.00
560
+
561
+ 2 runs, 2 assertions, 0 failures, 0 errors, 0 skips
562
+ EOM
563
+
564
+ assert_report expected
565
+ end
566
+
567
+ require "monitor"
568
+
569
+ class Latch
570
+ def initialize count = 1
571
+ @count = count
572
+ @lock = Monitor.new
573
+ @cv = @lock.new_cond
574
+ end
575
+
576
+ def release
577
+ @lock.synchronize do
578
+ @count -= 1 if @count > 0
579
+ @cv.broadcast if @count == 0
580
+ end
581
+ end
582
+
583
+ def await
584
+ @lock.synchronize { @cv.wait_while { @count > 0 } }
585
+ end
586
+ end
587
+
588
+ def test_run_parallel
589
+ test_count = 2
590
+ test_latch = Latch.new test_count
591
+ wait_latch = Latch.new test_count
592
+ main_latch = Latch.new
593
+
594
+ thread = Thread.new {
595
+ Thread.current.abort_on_exception = true
596
+
597
+ # This latch waits until both test latches have been released. Both
598
+ # latches can't be released unless done in separate threads because
599
+ # `main_latch` keeps the test method from finishing.
600
+ test_latch.await
601
+ main_latch.release
602
+ }
603
+
604
+ @tu =
605
+ Class.new FakeNamedTest do
606
+ parallelize_me!
607
+
608
+ test_count.times do |i|
609
+ define_method :"test_wait_on_main_thread_#{i}" do
610
+ test_latch.release
611
+
612
+ # This latch blocks until the "main thread" releases it. The main
613
+ # thread can't release this latch until both test latches have
614
+ # been released. This forces the latches to be released in separate
615
+ # threads.
616
+ main_latch.await
617
+ assert true
618
+ end
619
+ end
620
+ end
621
+
622
+ expected = clean <<-EOM
623
+ ..
624
+
625
+ Finished in 0.00
626
+
627
+ 2 runs, 2 assertions, 0 failures, 0 errors, 0 skips
628
+ EOM
629
+
630
+ assert_report(expected) do |reporter|
631
+ reporter.extend(Module.new {
632
+ define_method("record") do |result|
633
+ super(result)
634
+ wait_latch.release
635
+ end
636
+
637
+ define_method("report") do
638
+ wait_latch.await
639
+ super()
640
+ end
641
+ })
642
+ end
643
+ assert thread.join
644
+ end
645
+ end
646
+
647
+ class TestMinitestUnitOrder < MetaMetaMetaTestCase
648
+ # do not parallelize this suite... it just can't handle it.
649
+
650
+ def test_before_setup
651
+ call_order = []
652
+ @tu =
653
+ Class.new FakeNamedTest do
654
+ define_method :setup do
655
+ super()
656
+ call_order << :setup
657
+ end
658
+
659
+ define_method :before_setup do
660
+ call_order << :before_setup
661
+ end
662
+
663
+ def test_omg; assert true; end
664
+ end
665
+
666
+ run_tu_with_fresh_reporter
667
+
668
+ expected = [:before_setup, :setup]
669
+ assert_equal expected, call_order
670
+ end
671
+
672
+ def test_after_teardown
673
+ call_order = []
674
+ @tu =
675
+ Class.new FakeNamedTest do
676
+ define_method :teardown do
677
+ super()
678
+ call_order << :teardown
679
+ end
680
+
681
+ define_method :after_teardown do
682
+ call_order << :after_teardown
683
+ end
684
+
685
+ def test_omg; assert true; end
686
+ end
687
+
688
+ run_tu_with_fresh_reporter
689
+
690
+ expected = [:teardown, :after_teardown]
691
+ assert_equal expected, call_order
692
+ end
693
+
694
+ def test_all_teardowns_are_guaranteed_to_run
695
+ call_order = []
696
+ @tu =
697
+ Class.new FakeNamedTest do
698
+ define_method :after_teardown do
699
+ super()
700
+ call_order << :after_teardown
701
+ raise
702
+ end
703
+
704
+ define_method :teardown do
705
+ super()
706
+ call_order << :teardown
707
+ raise
708
+ end
709
+
710
+ define_method :before_teardown do
711
+ super()
712
+ call_order << :before_teardown
713
+ raise
714
+ end
715
+
716
+ def test_omg; assert true; end
717
+ end
718
+
719
+ run_tu_with_fresh_reporter
720
+
721
+ expected = [:before_teardown, :teardown, :after_teardown]
722
+ assert_equal expected, call_order
723
+ end
724
+
725
+ def test_setup_and_teardown_survive_inheritance
726
+ call_order = []
727
+
728
+ @tu = Class.new FakeNamedTest do
729
+ define_method :setup do
730
+ call_order << :setup_method
731
+ end
732
+
733
+ define_method :teardown do
734
+ call_order << :teardown_method
735
+ end
736
+
737
+ define_method :test_something do
738
+ call_order << :test
739
+ end
740
+ end
741
+
742
+ run_tu_with_fresh_reporter
743
+
744
+ @tu = Class.new @tu
745
+ run_tu_with_fresh_reporter
746
+
747
+ # Once for the parent class, once for the child
748
+ expected = [:setup_method, :test, :teardown_method] * 2
749
+
750
+ assert_equal expected, call_order
751
+ end
752
+ end
753
+
754
+ class TestMinitestRunnable < Minitest::Test
755
+ def setup_marshal klass
756
+ tc = klass.new "whatever"
757
+ tc.assertions = 42
758
+ tc.failures << "a failure"
759
+
760
+ yield tc if block_given?
761
+
762
+ def tc.setup
763
+ @blah = "blah"
764
+ end
765
+ tc.setup
766
+
767
+ @tc = Minitest::Result.from tc
768
+ end
769
+
770
+ def assert_marshal expected_ivars
771
+ new_tc = Marshal.load Marshal.dump @tc
772
+
773
+ ivars = new_tc.instance_variables.map(&:to_s).sort
774
+ assert_equal expected_ivars, ivars
775
+ assert_equal "whatever", new_tc.name
776
+ assert_equal 42, new_tc.assertions
777
+ assert_equal ["a failure"], new_tc.failures
778
+
779
+ yield new_tc if block_given?
780
+ end
781
+
782
+ def test_marshal
783
+ setup_marshal Minitest::Runnable
784
+
785
+ assert_marshal %w[@NAME @assertions @failures @klass @source_location @time]
786
+ end
787
+
788
+ def test_spec_marshal
789
+ klass = describe("whatever") { it("passes") { assert true } }
790
+ rm = klass.runnable_methods.first
791
+
792
+ # Run the test
793
+ @tc = klass.new(rm).run
794
+
795
+ assert_kind_of Minitest::Result, @tc
796
+
797
+ # Pass it over the wire
798
+ over_the_wire = Marshal.load Marshal.dump @tc
799
+
800
+ assert_equal @tc.time, over_the_wire.time
801
+ assert_equal @tc.name, over_the_wire.name
802
+ assert_equal @tc.assertions, over_the_wire.assertions
803
+ assert_equal @tc.failures, over_the_wire.failures
804
+ assert_equal @tc.klass, over_the_wire.klass
805
+ end
806
+ end
807
+
808
+ class TestMinitestTest < TestMinitestRunnable
809
+ def test_dup
810
+ setup_marshal Minitest::Test do |tc|
811
+ tc.time = 3.14
812
+ end
813
+
814
+ assert_marshal %w[@NAME @assertions @failures @klass @source_location @time] do |new_tc|
815
+ assert_in_epsilon 3.14, new_tc.time
816
+ end
817
+ end
818
+ end
819
+
820
+ class TestMinitestUnitTestCase < Minitest::Test
821
+ # do not call parallelize_me! - teardown accesses @tc._assertions
822
+ # which is not threadsafe. Nearly every method in here is an
823
+ # assertion test so it isn't worth splitting it out further.
824
+
825
+ RUBY18 = !defined? Encoding
826
+
827
+ def setup
828
+ super
829
+
830
+ Minitest::Test.reset
831
+
832
+ @tc = Minitest::Test.new "fake tc"
833
+ @zomg = "zomg ponies!"
834
+ @assertion_count = 1
835
+ end
836
+
837
+ def teardown
838
+ assert_equal(@assertion_count, @tc.assertions,
839
+ "expected #{@assertion_count} assertions to be fired during the test, not #{@tc.assertions}") if @tc.passed?
840
+ end
841
+
842
+ def non_verbose
843
+ orig_verbose = $VERBOSE
844
+ $VERBOSE = false
845
+
846
+ yield
847
+ ensure
848
+ $VERBOSE = orig_verbose
849
+ end
850
+
851
+ def test_runnable_methods_random
852
+ @assertion_count = 0
853
+
854
+ sample_test_case = Class.new FakeNamedTest do
855
+ def self.test_order; :random; end
856
+ def test_test1; assert "does not matter" end
857
+ def test_test2; assert "does not matter" end
858
+ def test_test3; assert "does not matter" end
859
+ end
860
+
861
+ srand 42
862
+ expected = %w[test_test2 test_test1 test_test3]
863
+ assert_equal expected, sample_test_case.runnable_methods
864
+ end
865
+
866
+ def test_runnable_methods_sorted
867
+ @assertion_count = 0
868
+
869
+ sample_test_case = Class.new FakeNamedTest do
870
+ def self.test_order; :sorted end
871
+ def test_test3; assert "does not matter" end
872
+ def test_test2; assert "does not matter" end
873
+ def test_test1; assert "does not matter" end
874
+ end
875
+
876
+ expected = %w[test_test1 test_test2 test_test3]
877
+ assert_equal expected, sample_test_case.runnable_methods
878
+ end
879
+
880
+ def test_i_suck_and_my_tests_are_order_dependent_bang_sets_test_order_alpha
881
+ @assertion_count = 0
882
+
883
+ shitty_test_case = Class.new FakeNamedTest
884
+
885
+ shitty_test_case.i_suck_and_my_tests_are_order_dependent!
886
+
887
+ assert_equal :alpha, shitty_test_case.test_order
888
+ end
889
+
890
+ def test_i_suck_and_my_tests_are_order_dependent_bang_does_not_warn
891
+ @assertion_count = 0
892
+
893
+ shitty_test_case = Class.new FakeNamedTest
894
+
895
+ def shitty_test_case.test_order; :lol end
896
+
897
+ assert_silent do
898
+ shitty_test_case.i_suck_and_my_tests_are_order_dependent!
899
+ end
900
+ end
901
+
902
+ def test_autorun_does_not_affect_fork_success_status
903
+ @assertion_count = 0
904
+ skip "windows doesn't have skip" unless Process.respond_to?(:fork)
905
+ Process.waitpid(fork {})
906
+ assert_equal true, $?.success?
907
+ end
908
+
909
+ def test_autorun_does_not_affect_fork_exit_status
910
+ @assertion_count = 0
911
+ skip "windows doesn't have skip" unless Process.respond_to?(:fork)
912
+ Process.waitpid(fork { exit 42 })
913
+ assert_equal 42, $?.exitstatus
914
+ end
915
+ end
916
+
917
+ class TestMinitestGuard < Minitest::Test
918
+ parallelize_me!
919
+
920
+ def test_mri_eh
921
+ assert self.class.mri? "ruby blah"
922
+ assert self.mri? "ruby blah"
923
+ end
924
+
925
+ def test_jruby_eh
926
+ assert self.class.jruby? "java"
927
+ assert self.jruby? "java"
928
+ end
929
+
930
+ def test_rubinius_eh
931
+ assert_output "", /DEPRECATED/ do
932
+ assert self.class.rubinius? "rbx"
933
+ end
934
+ assert_output "", /DEPRECATED/ do
935
+ assert self.rubinius? "rbx"
936
+ end
937
+ end
938
+
939
+ def test_maglev_eh
940
+ assert_output "", /DEPRECATED/ do
941
+ assert self.class.maglev? "maglev"
942
+ end
943
+ assert_output "", /DEPRECATED/ do
944
+ assert self.maglev? "maglev"
945
+ end
946
+ end
947
+
948
+ def test_osx_eh
949
+ assert self.class.osx? "darwin"
950
+ assert self.osx? "darwin"
951
+ end
952
+
953
+ def test_windows_eh
954
+ assert self.class.windows? "mswin"
955
+ assert self.windows? "mswin"
956
+ end
957
+ end
958
+
959
+ class TestMinitestUnitRecording < MetaMetaMetaTestCase
960
+ # do not parallelize this suite... it just can't handle it.
961
+
962
+ def assert_run_record *expected, &block
963
+ @tu = Class.new FakeNamedTest, &block
964
+
965
+ run_tu_with_fresh_reporter
966
+
967
+ recorded = first_reporter.results.map(&:failures).flatten.map { |f| f.error.class }
968
+
969
+ assert_equal expected, recorded
970
+ end
971
+
972
+ def test_run_with_bogus_reporter
973
+ # https://github.com/seattlerb/minitest/issues/659
974
+ # TODO: remove test for minitest 6
975
+ @tu = Class.new FakeNamedTest do
976
+ def test_method
977
+ assert true
978
+ end
979
+ end
980
+
981
+ bogus_reporter = Class.new do # doesn't subclass AbstractReporter
982
+ def start; @success = false; end
983
+ # def prerecord klass, name; end # doesn't define full API
984
+ def record result; @success = true; end
985
+ def report; end
986
+ def passed?; end
987
+ def results; end
988
+ def success?; @success; end
989
+ end.new
990
+
991
+ self.reporter = Minitest::CompositeReporter.new
992
+ reporter << bogus_reporter
993
+
994
+ Minitest::Runnable.runnables.delete @tu
995
+
996
+ @tu.run reporter, {}
997
+
998
+ assert_predicate bogus_reporter, :success?
999
+ end
1000
+
1001
+ def test_record_passing
1002
+ assert_run_record do
1003
+ def test_method
1004
+ assert true
1005
+ end
1006
+ end
1007
+ end
1008
+
1009
+ def test_record_failing
1010
+ assert_run_record Minitest::Assertion do
1011
+ def test_method
1012
+ assert false
1013
+ end
1014
+ end
1015
+ end
1016
+
1017
+ def test_record_error
1018
+ assert_run_record RuntimeError do
1019
+ def test_method
1020
+ raise "unhandled exception"
1021
+ end
1022
+ end
1023
+ end
1024
+
1025
+ def test_record_error_teardown
1026
+ assert_run_record RuntimeError do
1027
+ def test_method
1028
+ assert true
1029
+ end
1030
+
1031
+ def teardown
1032
+ raise "unhandled exception"
1033
+ end
1034
+ end
1035
+ end
1036
+
1037
+ def test_record_error_in_test_and_teardown
1038
+ assert_run_record AnError, RuntimeError do
1039
+ def test_method
1040
+ raise AnError
1041
+ end
1042
+
1043
+ def teardown
1044
+ raise "unhandled exception"
1045
+ end
1046
+ end
1047
+ end
1048
+
1049
+ def test_to_s_error_in_test_and_teardown
1050
+ @tu = Class.new FakeNamedTest do
1051
+ def test_method
1052
+ raise AnError
1053
+ end
1054
+
1055
+ def teardown
1056
+ raise "unhandled exception"
1057
+ end
1058
+ end
1059
+
1060
+ run_tu_with_fresh_reporter
1061
+
1062
+ exp = clean "
1063
+ Error:
1064
+ FakeNamedTestXX#test_method:
1065
+ AnError: AnError
1066
+ FILE:LINE:in `test_method'
1067
+
1068
+ Error:
1069
+ FakeNamedTestXX#test_method:
1070
+ RuntimeError: unhandled exception
1071
+ FILE:LINE:in `teardown'
1072
+ "
1073
+
1074
+ assert_equal exp.strip, normalize_output(first_reporter.results.first.to_s).strip
1075
+ end
1076
+
1077
+ def test_record_skip
1078
+ assert_run_record Minitest::Skip do
1079
+ def test_method
1080
+ skip "not yet"
1081
+ end
1082
+ end
1083
+ end
1084
+ end