Skip to content

Commit d3619f5

Browse files
committed
Factor-out testcases into separate files
1 parent 03ee09d commit d3619f5

9 files changed

+1538
-1428
lines changed

haas/tests/test_buffering.py

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# -*- coding: utf-8 -*-
2+
# Copyright (c) 2013-2019 Simon Jagoe
3+
# All rights reserved.
4+
#
5+
# This software may be modified and distributed under the terms
6+
# of the 3-clause BSD license. See the LICENSE.txt file for details.
7+
from __future__ import absolute_import, unicode_literals
8+
9+
from datetime import datetime, timedelta
10+
import sys
11+
12+
from mock import Mock, patch
13+
from six.moves import StringIO
14+
15+
from ..plugins.i_result_handler_plugin import IResultHandlerPlugin
16+
from ..result import (
17+
ResultCollector, TestResult, TestCompletionStatus, TestDuration
18+
)
19+
from ..testing import unittest
20+
from . import _test_cases
21+
from .fixtures import ExcInfoFixture, MockDateTime
22+
23+
24+
class TestBuffering(ExcInfoFixture, unittest.TestCase):
25+
26+
@patch('sys.stderr', new_callable=StringIO)
27+
def test_buffering_stderr(self, stderr):
28+
# Given
29+
handler = Mock(spec=IResultHandlerPlugin)
30+
collector = ResultCollector(buffer=True)
31+
collector.add_result_handler(handler)
32+
test_stderr = 'My Test Output'
33+
start_time = datetime(2015, 12, 23, 8, 14, 12)
34+
duration = timedelta(seconds=10)
35+
end_time = start_time + duration
36+
expected_duration = TestDuration(start_time, end_time)
37+
case = _test_cases.TestCase('test_method')
38+
39+
# When
40+
with patch('haas.result.datetime', new=MockDateTime(start_time)):
41+
collector.startTest(case)
42+
43+
# Then
44+
self.assertTrue(handler.start_test.called)
45+
handler.start_test.reset_mock()
46+
47+
# When
48+
sys.stderr.write(test_stderr)
49+
50+
# Then
51+
self.assertEqual(stderr.getvalue(), '')
52+
53+
# Given
54+
with self.exc_info(RuntimeError) as exc_info:
55+
expected_result = TestResult.from_test_case(
56+
case, TestCompletionStatus.error, expected_duration,
57+
exception=exc_info, stderr=test_stderr)
58+
# When
59+
with patch('haas.result.datetime', new=MockDateTime(end_time)):
60+
collector.addError(case, exc_info)
61+
collector.stopTest(case)
62+
63+
# Then
64+
self.assertIn(test_stderr, expected_result.exception)
65+
handler.assert_called_once_with(expected_result)
66+
67+
@patch('sys.stdout', new_callable=StringIO)
68+
def test_buffering_stdout(self, stdout):
69+
# Given
70+
handler = Mock(spec=IResultHandlerPlugin)
71+
collector = ResultCollector(buffer=True)
72+
collector.add_result_handler(handler)
73+
test_stdout = 'My Test Output'
74+
start_time = datetime(2015, 12, 23, 8, 14, 12)
75+
duration = timedelta(seconds=10)
76+
end_time = start_time + duration
77+
expected_duration = TestDuration(start_time, end_time)
78+
case = _test_cases.TestCase('test_method')
79+
80+
# When
81+
with patch('haas.result.datetime', new=MockDateTime(start_time)):
82+
collector.startTest(case)
83+
84+
# Then
85+
self.assertTrue(handler.start_test.called)
86+
handler.start_test.reset_mock()
87+
88+
# When
89+
sys.stdout.write(test_stdout)
90+
91+
# Then
92+
self.assertEqual(stdout.getvalue(), '')
93+
94+
# Given
95+
with self.exc_info(RuntimeError) as exc_info:
96+
expected_result = TestResult.from_test_case(
97+
case, TestCompletionStatus.error, expected_duration,
98+
exception=exc_info, stdout=test_stdout)
99+
100+
# When
101+
with patch('haas.result.datetime', new=MockDateTime(end_time)):
102+
collector.addError(case, exc_info)
103+
collector.stopTest(case)
104+
105+
# Then
106+
self.assertIn(test_stdout, expected_result.exception)
107+
handler.assert_called_once_with(expected_result)

haas/tests/test_deprecations.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# -*- coding: utf-8 -*-
2+
# Copyright (c) 2013-2019 Simon Jagoe
3+
# All rights reserved.
4+
#
5+
# This software may be modified and distributed under the terms
6+
# of the 3-clause BSD license. See the LICENSE.txt file for details.
7+
from __future__ import absolute_import, unicode_literals
8+
9+
from testfixtures import ShouldWarn
10+
11+
from ..result import ResultCollecter
12+
from ..testing import unittest
13+
14+
15+
class TestResultCollecterDepricated(unittest.TestCase):
16+
17+
def test_deprecation_warning(self):
18+
# Given
19+
expected_warning = DeprecationWarning(
20+
'ResultCollecter is deprecated in favour of ResultCollector and '
21+
'will be removed in the next release.',
22+
)
23+
24+
# When/Then
25+
with ShouldWarn(expected_warning):
26+
ResultCollecter()

haas/tests/test_fail_test.py

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# -*- coding: utf-8 -*-
2+
# Copyright (c) 2013-2019 Simon Jagoe
3+
# All rights reserved.
4+
#
5+
# This software may be modified and distributed under the terms
6+
# of the 3-clause BSD license. See the LICENSE.txt file for details.
7+
from __future__ import absolute_import, unicode_literals
8+
9+
10+
from ..result import ResultCollector
11+
from ..testing import unittest
12+
from . import _test_cases
13+
from .fixtures import ExcInfoFixture
14+
15+
16+
class TestFailfast(ExcInfoFixture, unittest.TestCase):
17+
18+
def test_failfast_enabled_on_error(self):
19+
# Given
20+
collector = ResultCollector(failfast=True)
21+
self.assertFalse(collector.shouldStop)
22+
case = _test_cases.TestCase('test_method')
23+
24+
collector.startTest(case)
25+
26+
# When
27+
with self.exc_info(RuntimeError) as exc_info:
28+
collector.addError(case, exc_info)
29+
30+
# Then
31+
self.assertTrue(collector.shouldStop)
32+
33+
def test_failfast_enabled_on_failure(self):
34+
# Given
35+
collector = ResultCollector(failfast=True)
36+
self.assertFalse(collector.shouldStop)
37+
case = _test_cases.TestCase('test_method')
38+
39+
collector.startTest(case)
40+
41+
# When
42+
with self.failure_exc_info() as exc_info:
43+
collector.addFailure(case, exc_info)
44+
45+
# Then
46+
self.assertTrue(collector.shouldStop)
47+
48+
def test_failfast_enabled_on_unexpected_success(self):
49+
# Given
50+
collector = ResultCollector(failfast=False)
51+
self.assertFalse(collector.shouldStop)
52+
case = _test_cases.TestCase('test_method')
53+
54+
collector.startTest(case)
55+
56+
# When
57+
collector.addUnexpectedSuccess(case)
58+
59+
# Then
60+
self.assertFalse(collector.shouldStop)
61+
62+
def test_failfast_disabled_on_error(self):
63+
# Given
64+
collector = ResultCollector(failfast=False)
65+
self.assertFalse(collector.shouldStop)
66+
case = _test_cases.TestCase('test_method')
67+
68+
collector.startTest(case)
69+
70+
# When
71+
with self.exc_info(RuntimeError) as exc_info:
72+
collector.addError(case, exc_info)
73+
74+
# Then
75+
self.assertFalse(collector.shouldStop)
76+
77+
def test_failfast_disabled_on_failure(self):
78+
# Given
79+
collector = ResultCollector(failfast=False)
80+
self.assertFalse(collector.shouldStop)
81+
case = _test_cases.TestCase('test_method')
82+
83+
collector.startTest(case)
84+
85+
# When
86+
with self.failure_exc_info() as exc_info:
87+
collector.addFailure(case, exc_info)
88+
89+
# Then
90+
self.assertFalse(collector.shouldStop)
91+
92+
def test_failfast_disabled_on_unexpected_success(self):
93+
# Given
94+
collector = ResultCollector(failfast=False)
95+
self.assertFalse(collector.shouldStop)
96+
case = _test_cases.TestCase('test_method')
97+
98+
collector.startTest(case)
99+
100+
# When
101+
collector.addUnexpectedSuccess(case)
102+
103+
# Then
104+
self.assertFalse(collector.shouldStop)

0 commit comments

Comments
 (0)