class SessionTestBase (MockingTestCase): def setUp(self): self.s = Session() p = patch('onslaught.io.provider') self.addCleanup(p.stop) self.m_iop = p.start() # Patch-over mocks of these "functional, non-IO" path # manipulations with fakes that track their transformations: self.m_iop.abspath = lambda p: ('abs', p) self.m_iop.dirname = lambda p: ('dirname', p) self.m_iop.isabs = lambda _: True self.m_iop.join = lambda *a: ('join', a) self.s.initialize('targetfoo', 'resultsbar') def assert_iop_calls(self, *calls): self.assert_calls_equal(self.m_iop, calls)