Esempio n. 1
0
 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)
Esempio n. 2
0
 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)
Esempio n. 3
0
    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')
Esempio n. 4
0
 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)
Esempio n. 5
0
 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()] + ['>>>']))
Esempio n. 6
0
	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)
Esempio n. 7
0
 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)
Esempio n. 8
0
 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')
Esempio n. 9
0
 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)
Esempio n. 10
0
 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, '', ''
         ]))
Esempio n. 11
0
 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, '', ''
         ]))
Esempio n. 12
0
 def testRender(self, text, contexts, out):
     t = TemplatePyPPL(text)
     helpers.assertTextEqual(self, t.render(contexts), out)
Esempio n. 13
0
 def testRender(self, s, e, out):
     t = TemplateJinja2(s)
     helpers.assertTextEqual(self, t.render(e), out)
Esempio n. 14
0
 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)
Esempio n. 15
0
 def testRender(self, source, data, out):
     tpl = TemplatePyPPL(source)
     helpers.assertTextEqual(self, tpl.render(data), out)
Esempio n. 16
0
 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)
Esempio n. 17
0
 def testRepr(self, t, s):
     helpers.assertTextEqual(self, repr(t), s)
Esempio n. 18
0
 def testStr(self, t, s):
     helpers.assertTextEqual(self, str(t), s)