示例#1
0
 def __init__(self, command, file_name, context, delete=False, max_time=60):
     if not (command or file_name):
         raise ValueError('File or command must be specified')
     file_name, command = decode(file_name), decode(command)
     self._file=None
     self._command=None
     v={v: (escape_path(x) if isinstance(x, six.text_type) else str(x)) for v,x in six.iteritems(context) }
     dirname=None
     f=AdvancedFormatter()
     if file_name:
         fname=f.format(file_name,**v)
         if not fname:
             raise ValueError('No filename available after vars expansion')
         dirname=os.path.dirname(fname)
         if dirname and not os.path.exists(dirname):
             os.makedirs(dirname)
         if os.path.isdir(fname):
             raise ValueError('Filename %s is directory', 
                       fname)
         self._file=fname
     v['file_name'] = self._file or ''
     v['file_base_name'] = os.path.splitext(os.path.basename(self._file))[0] if self._file else ''
     v['file_dir'] = dirname or ''
     if command:
         cmd = f.format(command,**v)
         if not cmd:
             raise ValueError('No command available after vars expansion')
         self._command = cmd
         
     self._process=None
     self._stdout=''
     self._stderr=''
     self._killed=False
     self._timer=Timer(max_time, self.terminate)
     self._delete=delete
示例#2
0
 def test_1(self):
     f=AdvancedFormatter()
     self.assertEqual(f.format('x{test|guest}y', guest='bla'), 'xblay')
     self.assertEqual(f.format('x{test|guest}y', guest='bla', test='kilik'), 'xkiliky')
     self.assertEqual(f.format('x{guest}y', guest='bla', test='kilik'), 'xblay')
     self.assertEqual(f.format('x{hj}y', guest='bla', test='kilik'), 'xy')
     self.assertEqual(f.format('x{guest+test}y', guest='bla', test='kilik'), 'xbla_kiliky')
     self.assertEqual(f.format('x{xx|guest+test}y', guest='bla', test='kilik'), 'xbla_kiliky')
     self.assertEqual(f.format('x{guest+test|zz}y', guest='bla', test='kilik'), 'xbla_kiliky')
     self.assertEqual(f.format('x{test|guest}y', guest='bla', test=''), 'xblay')
示例#3
0
 def test_1(self):
     f = AdvancedFormatter()
     self.assertEqual(f.format('x{test|guest}y', guest='bla'), 'xblay')
     self.assertEqual(f.format('x{test|guest}y', guest='bla', test='kilik'),
                      'xkiliky')
     self.assertEqual(f.format('x{guest}y', guest='bla', test='kilik'),
                      'xblay')
     self.assertEqual(f.format('x{hj}y', guest='bla', test='kilik'), 'xy')
     self.assertEqual(f.format('x{guest+test}y', guest='bla', test='kilik'),
                      'xbla_kiliky')
     self.assertEqual(
         f.format('x{xx|guest+test}y', guest='bla', test='kilik'),
         'xbla_kiliky')
     self.assertEqual(
         f.format('x{guest+test|zz}y', guest='bla', test='kilik'),
         'xbla_kiliky')
     self.assertEqual(f.format('x{test|guest}y', guest='bla', test=''),
                      'xblay')