def testInit(self, source, envs): import jinja2 tpl = TemplateJinja2(source, **envs) helpers.assertTextEqual(self, tpl.source, source) self.assertDictContains(Template.DEFAULT_ENVS, tpl.envs) self.assertDictContains(envs, tpl.envs) self.assertIsInstance(tpl.engine, jinja2.Template)
def testRegisterEnvs(self, source, envs, newenvs): tpl = Template(source, **envs) tpl.registerEnvs(**newenvs) helpers.assertTextEqual(self, tpl.source, source) self.assertDictContains(Template.DEFAULT_ENVS, tpl.envs) self.assertDictContains(envs, tpl.envs) self.assertDictContains(newenvs, tpl.envs)
def testInit(self, job, exception=None, msg=None): self.maxDiff = None RunnerSsh.LIVE_SERVERS = None if exception: self.assertRaisesRegex(exception, msg, RunnerSsh, job) else: r = RunnerSsh(job) servers = job.config['runnerOpts']['sshRunner']['servers'] keys = job.config['runnerOpts']['sshRunner']['keys'] sid = RunnerSsh.LIVE_SERVERS[job.index % len(RunnerSsh.LIVE_SERVERS)] server = servers[sid] key = ('-i ' + keys[sid]) if keys[sid] else '' self.assertIsInstance(r, RunnerSsh) self.assertTrue(path.exists(job.script + '.ssh')) #self.assertTrue(path.exists(job.script + '.submit')) preScript = job.config['runnerOpts']['sshRunner'].get( 'preScript', '') preScript = preScript and preScript + '\n' postScript = job.config['runnerOpts']['sshRunner'].get( 'postScript', '') postScript = postScript and '\n' + postScript helpers.assertTextEqual( self, helpers.readFile(job.script + '.ssh', str), '\n'.join([ "#!/usr/bin/env bash", "# run on server: {}".format(server), "", '%scd %s; %s%s', ]) % (preScript, getcwd(), job.script, postScript) + '\n')
def testStr(self, cb, renderfunc): renderfunc = renderfunc.lstrip('\n').split('\n') renderfunc = '\n'.join(line[2:] for line in renderfunc) helpers.assertTextEqual( self, str(cb)[len(self.str_prefix + self.renderFunc_start):-len(self.renderFunc_end)], renderfunc)
def testStr(self, source): tpl = TemplatePyPPL(source) lines = source.splitlines() if len(lines) <= 1: self.assertEqual(str(tpl), 'TemplatePyPPL < %s >' % ''.join(lines)) else: helpers.assertTextEqual( self, str(tpl), '\n'.join(['TemplatePyPPL <<<'] + ['\t' + line for line in tpl.source.splitlines()] + ['>>>']))
def testBuildScript(self, p, inscript, outscript, exception = None, msg = None, errs = []): p.script = inscript if exception: self.assertRaisesRegex(exception, msg, p._buildScript) else: with helpers.log2str(levels = 'all') as (out, err): p._buildProps() p._buildScript() helpers.assertTextEqual(self, p.script.source, outscript) stderr = err.getvalue() for err in errs: self.assertIn(err, stderr)
def testInit(self, text, contexts, renderfunc, exception=None, msg=None): if exception and not msg: self.assertRaises(exception, TemplatePyPPLEngine, text, *contexts) elif exception: self.assertRaisesRegex(exception, msg, TemplatePyPPLEngine, text, *contexts) else: engine = TemplatePyPPLEngine(text, *contexts) renderfunc = renderfunc.lstrip('\n').split('\n') renderfunc = '\n'.join(line[2:] for line in renderfunc) helpers.assertTextEqual( self, engine.renderFunctionStr[len(self.renderFunc_start ):-len(self.renderFunc_end)], renderfunc)
def testGenerate(self, dotfile, fcfile, nodes, starts, ends, links, theme, basetheme, src, svg): self.maxDiff = None fc = Flowchart(dotfile=dotfile, fcfile=fcfile) fc.setTheme(theme, basetheme) for node in nodes: if node in starts: fc.addNode(node, 'start') if node in ends: fc.addNode(node, 'end') fc.addNode(node) for link in links: fc.addLink(*link) fc.generate() with open(fc.dotfile) as f: helpers.assertTextEqual(self, f.read(), src) helpers.assertInSvgFile(self, svg, fc.fcfile, '<g id="n')
def testAssemble(self, nodes, starts, ends, links, theme, basetheme, src): self.maxDiff = None dotfile = path.join(self.testdir, 'test.dot') fcfile = path.join(self.testdir, 'test.svg') fc = Flowchart(fcfile, dotfile) fc.setTheme(theme, basetheme) for node in nodes: if node in starts: fc.addNode(node, 'start') if node in ends: fc.addNode(node, 'end') fc.addNode(node) for link in links: fc.addLink(*link) fc._assemble() helpers.assertTextEqual(self, fc.graph.source, src)
def testInit(self, job, jobname=None, outfile=None, errfile=None): self.maxDiff = None r = RunnerSlurm(job) self.assertIsInstance(r, RunnerSlurm) self.assertEqual(r.script, job.script + '.slurm') self.assertTrue(r.script) helpers.assertTextEqual( self, helpers.readFile(job.script + '.slurm', str), '\n'.join([ "#!/usr/bin/env bash", '#SBATCH -J %s' % (jobname if jobname else '.'.join([ job.config['proc'], job.config['tag'], job.config['suffix'], str(job.index + 1) ])), '#SBATCH -o %s' % (outfile if outfile else job.outfile), '#SBATCH -e %s' % (errfile if errfile else job.errfile), '#SBATCH -M [email protected]', '#SBATCH -j y', '#SBATCH -m yes', '#SBATCH --mem 4G', '#SBATCH --notify', '#SBATCH -q queue', '', 'trap "status=\\$?; echo \\$status >\'%s\'; exit \\$status" 1 2 3 6 7 8 9 10 11 12 15 16 17 EXIT' % job.rcfile, '', '', 'srun prefix ' + job.script, '', '' ]))
def testInit(self, job, jobname=None, outfile=None, errfile=None): self.maxDiff = None r = RunnerSge(job) self.assertIsInstance(r, RunnerSge) self.assertEqual(r.script, job.script + '.sge') self.assertTrue(r.script) helpers.assertTextEqual( self, helpers.readFile(job.script + '.sge', str), '\n'.join([ "#!/usr/bin/env bash", '#$ -N %s' % (jobname if jobname else '.'.join([ job.config['proc'], job.config['tag'], job.config['suffix'], str(job.index + 1) ])), '#$ -q queue', '#$ -j y', '#$ -o %s' % (outfile if outfile else job.outfile), '#$ -e %s' % (errfile if errfile else job.errfile), '#$ -cwd', '#$ -M [email protected]', '#$ -m yes', '#$ -mem 4G', '#$ -notify', '', 'trap "status=\\$?; echo \\$status >\'%s\'; exit \\$status" 1 2 3 6 7 8 9 10 11 12 15 16 17 EXIT' % job.rcfile, 'alias qsub="%s"' % (path.join(__here__, 'mocks', 'qsub')), '', job.script, '', '' ]))
def testRender(self, text, contexts, out): t = TemplatePyPPL(text) helpers.assertTextEqual(self, t.render(contexts), out)
def testRender(self, s, e, out): t = TemplateJinja2(s) helpers.assertTextEqual(self, t.render(e), out)
def testInit(self, source, envs): tpl = Template(source, **envs) helpers.assertTextEqual(self, tpl.source, source) self.assertDictContains(Template.DEFAULT_ENVS, tpl.envs) self.assertDictContains(envs, tpl.envs)
def testRender(self, source, data, out): tpl = TemplatePyPPL(source) helpers.assertTextEqual(self, tpl.render(data), out)
def testInit(self, source, envs): tpl = TemplatePyPPL(source, **envs) helpers.assertTextEqual(self, tpl.source, source) self.assertDictContains(Template.DEFAULT_ENVS, tpl.envs) self.assertDictContains(envs, tpl.envs) self.assertIsInstance(tpl.engine, TemplatePyPPLEngine)
def testRepr(self, t, s): helpers.assertTextEqual(self, repr(t), s)
def testStr(self, t, s): helpers.assertTextEqual(self, str(t), s)