|
1 | 1 | #!/usr/bin/env python |
2 | 2 | # -*- coding: utf-8 -*- |
3 | 3 |
|
4 | | -import sys |
5 | 4 | import unittest |
6 | 5 | import re |
7 | 6 |
|
|
10 | 9 | from runner.sensei import Sensei |
11 | 10 | from runner.writeln_decorator import WritelnDecorator |
12 | 11 | from runner.mockable_test_result import MockableTestResult |
13 | | -from runner import path_to_enlightenment |
14 | 12 |
|
15 | 13 | class AboutParrots: |
16 | 14 | pass |
@@ -81,36 +79,33 @@ class AboutFreemasons: |
81 | 79 |
|
82 | 80 | """ |
83 | 81 |
|
| 82 | + |
84 | 83 | class TestSensei(unittest.TestCase): |
85 | 84 |
|
86 | 85 | def setUp(self): |
87 | | - self.sensei = Sensei(WritelnDecorator(sys.stdout)) |
88 | | - self.sensei.stream.writeln = Mock() |
89 | | - path_to_enlightenment.koans = Mock() |
90 | | - self.tests = Mock() |
91 | | - self.tests.countTestCases = Mock() |
| 86 | + self.sensei = Sensei(WritelnDecorator(Mock())) |
92 | 87 |
|
93 | 88 | def test_that_failures_are_handled_in_the_base_class(self): |
94 | | - MockableTestResult.addFailure = Mock() |
95 | | - self.sensei.addFailure(Mock(), Mock()) |
96 | | - self.assertTrue(MockableTestResult.addFailure.called) |
| 89 | + with patch('runner.mockable_test_result.MockableTestResult.addFailure', Mock()): |
| 90 | + self.sensei.addFailure(Mock(), Mock()) |
| 91 | + self.assertTrue(MockableTestResult.addFailure.called) |
97 | 92 |
|
98 | 93 | def test_that_it_successes_only_count_if_passes_are_currently_allowed(self): |
99 | | - self.sensei.passesCount = Mock() |
100 | | - MockableTestResult.addSuccess = Mock() |
101 | | - self.sensei.addSuccess(Mock()) |
102 | | - self.assertTrue(self.sensei.passesCount.called) |
| 94 | + with patch('runner.mockable_test_result.MockableTestResult.addSuccess', Mock()): |
| 95 | + self.sensei.passesCount = Mock() |
| 96 | + self.sensei.addSuccess(Mock()) |
| 97 | + self.assertTrue(self.sensei.passesCount.called) |
103 | 98 |
|
104 | 99 | def test_that_it_passes_on_add_successes_message(self): |
105 | | - MockableTestResult.addSuccess = Mock() |
106 | | - self.sensei.addSuccess(Mock()) |
107 | | - self.assertTrue(MockableTestResult.addSuccess.called) |
| 100 | + with patch('runner.mockable_test_result.MockableTestResult.addSuccess', Mock()): |
| 101 | + self.sensei.addSuccess(Mock()) |
| 102 | + self.assertTrue(MockableTestResult.addSuccess.called) |
108 | 103 |
|
109 | 104 | def test_that_it_increases_the_passes_on_every_success(self): |
110 | | - pass_count = self.sensei.pass_count |
111 | | - MockableTestResult.addSuccess = Mock() |
112 | | - self.sensei.addSuccess(Mock()) |
113 | | - self.assertEqual(pass_count + 1, self.sensei.pass_count) |
| 105 | + with patch('runner.mockable_test_result.MockableTestResult.addSuccess', Mock()): |
| 106 | + pass_count = self.sensei.pass_count |
| 107 | + self.sensei.addSuccess(Mock()) |
| 108 | + self.assertEqual(pass_count + 1, self.sensei.pass_count) |
114 | 109 |
|
115 | 110 | def test_that_nothing_is_returned_as_a_first_result_if_there_are_no_failures(self): |
116 | 111 | self.sensei.failures = [] |
@@ -236,58 +231,50 @@ def test_that_if_there_are_0_successes_it_will_say_the_first_zen_of_python_koans |
236 | 231 | self.sensei.pass_count = 0 |
237 | 232 | self.sensei.failures = Mock() |
238 | 233 | words = self.sensei.say_something_zenlike() |
239 | | - |
240 | 234 | m = re.search("Beautiful is better than ugly", words) |
241 | 235 | self.assertTrue(m and m.group(0)) |
242 | 236 |
|
243 | 237 | def test_that_if_there_is_1_successes_it_will_say_the_second_zen_of_python_koans(self): |
244 | 238 | self.sensei.pass_count = 1 |
245 | 239 | self.sensei.failures = Mock() |
246 | 240 | words = self.sensei.say_something_zenlike() |
247 | | - |
248 | 241 | m = re.search("Explicit is better than implicit", words) |
249 | 242 | self.assertTrue(m and m.group(0)) |
250 | 243 |
|
251 | 244 | def test_that_if_there_is_10_successes_it_will_say_the_sixth_zen_of_python_koans(self): |
252 | 245 | self.sensei.pass_count = 10 |
253 | 246 | self.sensei.failures = Mock() |
254 | 247 | words = self.sensei.say_something_zenlike() |
255 | | - |
256 | 248 | m = re.search("Sparse is better than dense", words) |
257 | 249 | self.assertTrue(m and m.group(0)) |
258 | 250 |
|
259 | 251 | def test_that_if_there_is_36_successes_it_will_say_the_final_zen_of_python_koans(self): |
260 | | - self.sensei.pass_count = 36 |
261 | 252 | self.sensei.failures = Mock() |
| 253 | + self.sensei.pass_count = 36 |
262 | 254 | words = self.sensei.say_something_zenlike() |
263 | | - |
264 | 255 | m = re.search("Namespaces are one honking great idea", words) |
265 | 256 | self.assertTrue(m and m.group(0)) |
266 | 257 |
|
267 | 258 | def test_that_if_there_is_37_successes_it_will_say_the_first_zen_of_python_koans_again(self): |
268 | 259 | self.sensei.pass_count = 37 |
269 | 260 | self.sensei.failures = Mock() |
270 | 261 | words = self.sensei.say_something_zenlike() |
271 | | - |
272 | 262 | m = re.search("Beautiful is better than ugly", words) |
273 | 263 | self.assertTrue(m and m.group(0)) |
274 | 264 |
|
275 | 265 | def test_that_total_lessons_return_7_if_there_are_7_lessons(self): |
276 | 266 | self.sensei.filter_all_lessons = Mock() |
277 | 267 | self.sensei.filter_all_lessons.return_value = [1,2,3,4,5,6,7] |
278 | | - |
279 | 268 | self.assertEqual(7, self.sensei.total_lessons()) |
280 | 269 |
|
281 | 270 | def test_that_total_lessons_return_0_if_all_lessons_is_none(self): |
282 | 271 | self.sensei.filter_all_lessons = Mock() |
283 | 272 | self.sensei.filter_all_lessons.return_value = None |
284 | | - |
285 | 273 | self.assertEqual(0, self.sensei.total_lessons()) |
286 | 274 |
|
287 | 275 | def test_total_koans_return_43_if_there_are_43_test_cases(self): |
288 | 276 | self.sensei.tests.countTestCases = Mock() |
289 | 277 | self.sensei.tests.countTestCases.return_value = 43 |
290 | | - |
291 | 278 | self.assertEqual(43, self.sensei.total_koans()) |
292 | 279 |
|
293 | 280 | def test_filter_all_lessons_will_discover_test_classes_if_none_have_been_discovered_yet(self): |
|
0 commit comments