diff options
-rw-r--r-- | NEWS | 8 | ||||
-rw-r--r-- | mocker.py | 6 | ||||
-rwxr-xr-x | test.py | 36 |
3 files changed, 48 insertions, 2 deletions
@@ -2,8 +2,12 @@ ================ - Added MockerTestCase.makeFile() and .makeDir() helpers. They offer - easy creation of temporary files/directories with certainty of - removal after tests finish running. + easy creation of temporary files/directories, and ensure that they + get removed after each test method runs. + +- If the replay() method is called twice, expectations will be fully + reset so that several similar tests may be performed in a row by + just calling replay() again. - Mocker.on_restore() removed. Restore isn't performed if replay() isn't called, and that may not be obvious, so a hook won't be @@ -1514,6 +1514,9 @@ class RunCounter(Task): self.max = max self._runs = 0 + def replay(self): + self._runs = 0 + def run(self, path): self._runs += 1 if self._runs > self.max: @@ -1618,6 +1621,9 @@ class Orderer(Task): self._run = False self._dependencies = [] + def replay(self): + self._run = False + def run(self, path): self._run = True @@ -2461,6 +2461,15 @@ class RunCounterTest(unittest.TestCase): task.run(self.path) task.verify() + def test_reset_on_replay(self): + task = RunCounter(1, 1) + task.run(self.path) + self.assertRaises(AssertionError, task.run, self.path) + task.replay() + self.assertRaises(AssertionError, task.verify) + task.run(self.path) + self.assertRaises(AssertionError, task.run, self.path) + def test_recorder(self): run_counter_recorder(self.mocker, self.event) (task,) = self.event.get_tasks() @@ -2535,6 +2544,17 @@ class RunCounterTest(unittest.TestCase): self.assertEquals(len(events[2].get_tasks()), 1) self.assertEquals(len(events[3].get_tasks()), 1) + def test_reset_on_replay_with_mock(self): + mock = self.mocker.mock() + mock() + self.mocker.count(1) + self.mocker.replay() + mock() + self.assertRaises(AssertionError, mock) + self.mocker.replay() + mock() + self.assertRaises(AssertionError, mock) + def test_is_standard_recorder(self): self.assertTrue(run_counter_recorder in Mocker.get_recorders()) self.assertTrue(run_counter_removal_recorder in Mocker.get_recorders()) @@ -2671,6 +2691,22 @@ class OrdererTest(unittest.TestCase): orderer.run(self.path) self.assertTrue(orderer.has_run()) + def test_reset_on_replay(self): + orderer = Orderer() + orderer.run(self.path) + orderer.replay() + self.assertFalse(orderer.has_run()) + + def test_reset_on_replay_with_mock(self): + self.mocker.add_recorder(path_matcher_recorder) + mock = self.mocker.mock() + self.mocker.order(mock(1), mock(2)) + self.mocker.replay() + mock(1) + mock(2) + self.mocker.replay() + self.assertRaises(AssertionError, mock, 2) + def test_add_dependency_and_match(self): orderer1 = Orderer() orderer2 = Orderer() |