def testShouldExposeLoadedModulesForTestingPurposes(self): open(self.tempdir + '/one.sf', 'w').write(r""" attr = 'attr' def sync(): return 'aye' def asyncReturn(): raise StopIteration('aye') yield def observableDownward(): yield observable.all.something('arg', kw='kw') def main(*args, **kwargs): yield "Hoi" """) open(self.tempdir + '/two.sf', 'w').write(r""" import one def parameterized(arg, *args, **kwargs): return arg, args, kwargs def main(*args, **kwargs): yield one.observableDownward() """) reactor = Reactor() d = DynamicHtml([self.tempdir], reactor=reactor) t1 = CallTrace('t1') t2 = CallTrace('t2') d.addObserver(t1) d.addObserver(t2) one = d.getModule(name='one') two = d.getModule('two') self.assertEquals(None, d.getModule('does-not-exist')) self.assertEquals('attr', one.attr) self.assertEquals('aye', one.sync()) try: g = compose(one.asyncReturn()) g.next() except StopIteration, e: self.assertEquals(('aye',), e.args)
def test(): additionalGlobals = { 'util_reloaded_id': howOften("util-reloaded"), 'using_util_reloaded_id': howOften("using-util-reloaded"), 'orphan_reloaded_id': howOften("orphan-reloaded"), } d = DynamicHtml([self.tempdir], reactor=reactor(), additionalGlobals=additionalGlobals) # Allow cleanup of directoryWatcherReadFD (whitebox) _reactorFdsKeys = reactor()._fds.keys() self.assertEquals(1, len(_reactorFdsKeys)) directoryWatcherReadFD = _reactorFdsKeys[0] yield zleep(0.01) # Allow DirectoryWatcher some reactor time # Initialized once util, orphan, using_util = d.getModule('util'), d.getModule('orphan'), d.getModule('using-util') self.assertEquals( ['util-reloaded:1', 'orphan-reloaded:1', 'using-util-reloaded:1'], [util.reloaded, orphan.reloaded, using_util.reloaded]) self.assertEquals('using-util-reloaded:1 - util-reloaded:1', using_util.using()) # Touch & **all** reloaded with open(fp_util, 'w') as f: f.write(util_contents) yield zleep(0.02) # Allow DirectoryWatcher some reactor time util, orphan, using_util = d.getModule('util'), d.getModule('orphan'), d.getModule('using-util') self.assertEquals( ['util-reloaded:2', 'orphan-reloaded:2', 'using-util-reloaded:2'], [util.reloaded, orphan.reloaded, using_util.reloaded]) self.assertEquals('using-util-reloaded:2 - util-reloaded:2', using_util.using()) # Remove file - nothing happens remove(fp_orphan) yield zleep(0.02) # Allow DirectoryWatcher some reactor time util, orphan, using_util = d.getModule('util'), d.getModule('orphan'), d.getModule('using-util') self.assertNotEqual(None, orphan) self.assertEquals( ['util-reloaded:2', 'orphan-reloaded:2', 'using-util-reloaded:2'], [util.reloaded, orphan.reloaded, using_util.reloaded]) # Modify util - reload **and** remove of deleted happens with open(fp_util, 'w') as f: f.write(util_contents) yield zleep(0.02) # Allow DirectoryWatcher some reactor time util, orphan, using_util = d.getModule('util'), d.getModule('orphan'), d.getModule('using-util') self.assertEquals(None, orphan) self.assertEquals( ['util-reloaded:3', 'using-util-reloaded:3'], [util.reloaded, using_util.reloaded]) self.assertEquals('using-util-reloaded:3 - util-reloaded:3', using_util.using()) # cleanup reactor().removeReader(sok=directoryWatcherReadFD)