示例#1
0
 def test_del_(self):
     proc = Subcommand((sys.executable, '-c', Commands.sleep, '0.2'),
                       wait=False)
     try:
         pid = proc.proc.pid
         self.assertIsNone(os.kill(pid, 0))
     finally:
         proc.close()
     del proc
     try:
         self.assertRaises(OSError, os.kill, pid, 0)
     except AssertionError:
         #os.system('ps uwp %d' % pid)
         raise
示例#2
0
 def test_simple(self):
     proc = Subcommand(  # should just return success
         (sys.executable, '-c', Commands.succeed), )
     self.assertEqual(proc.returncode, 0)
     proc.close()
     proc = Subcommand(  # should just return failure
         (sys.executable, '-c', Commands.fail), )
     self.assertEqual(proc.returncode, 1)
     proc.close()
示例#3
0
 def test_wdir(self):
     import tempfile
     tmpdir = tempfile.gettempdir()
     fname = tempfile.mktemp()
     self.assertFalse(os.path.exists(fname))
     proc = None
     try:
         proc = Subcommand((sys.executable, '-c', Commands.touch,
                            os.path.basename(fname)),
                           wdir=tmpdir)
         self.assertEqual(proc.returncode, 0)
         self.assertTrue(os.path.exists(fname))
     finally:
         if proc is not None:
             proc.close()
         if os.path.exists(fname):
             os.remove(fname)
示例#4
0
 def test_signal(self):
     if self.platform == 'win':
         raise SkipTest('Broken OS')
     proc = Subcommand((sys.executable, '-c', Commands.sleep, '10'),
                       wait=False)
     try:
         proc.terminate()
         self.assertIsNone(proc.returncode, None)
         proc.wait()
         self.assertLess(proc.returncode, 0)
         self.assertEqual(proc.returncode, -15)
     finally:
         proc.close()
示例#5
0
 def test_kill(self):
     if self.platform == 'win':
         raise SkipTest('Broken OS')
     proc = Subcommand((sys.executable, '-c', Commands.sleep, '0.2'),
                       wait=False)
     try:
         self.assertIsNone(os.kill(proc.proc.pid, 0))
         proc.kill()
         rc = proc.wait()
         self.assertLess(rc, 0)
         self.assertEqual(rc, -9)
         self.assertRaises(OSError, os.kill, proc.proc.pid, 0)
     finally:
         proc.close()
示例#6
0
 def test_stdout(self):
     contents = 'abcdefghijklmnopqrstuvwxyz0123456789\n'
     infile = self.dir + 'stdout.infile.txt'
     infile.open('wt').write(contents)
     outfile = self.dir + 'stdout.stdout.txt'
     proc = Subcommand((sys.executable, '-c', Commands.cat, str(infile)),
                       stdout=str(outfile))
     try:
         self.assertEqual(proc.returncode, 0)
         self.assertEqual(outfile.open('rt').read(), contents)
     finally:
         proc.close()
     outf = outfile.open('wt+')
     try:
         proc = Subcommand(
             (sys.executable, '-c', Commands.cat, str(infile)), stdout=outf)
         self.assertEqual(proc.returncode, 0)
         self.assertIs(proc.stdout, outf)
         outf.seek(0)
         self.assertEqual(outfile.open('rt').read(), contents)
     finally:
         outf.close()
         proc.close()
示例#7
0
 def test_close(self):
     touchfile = self.dir + 'close.touch.txt'
     infile = self.dir + 'close.stdin.txt'
     outfile = self.dir + 'close.stdout.txt'
     errfile = self.dir + 'close.stderr.txt'
     infile.open('wt')  # just create the file
     proc = Subcommand(
         (sys.executable, '-c', Commands.touch, str(touchfile)),
         stdin=str(infile),
         stdout=str(outfile),
         stderr=str(errfile),
         wait=False,
     )
     self.assertFalse(proc.stdin.closed)
     self.assertFalse(proc.stdout.closed)
     self.assertFalse(proc.stderr.closed)
     proc.wait()
     self.assertTrue(proc.stdin.closed)
     self.assertFalse(proc.stdout.closed)
     self.assertFalse(proc.stderr.closed)
     proc.close()
     self.assertIsNone(proc.stdin)
     self.assertIsNone(proc.stdout)
     self.assertIsNone(proc.stderr)
示例#8
0
 def test_exceptions(self):
     with self.assertRaises(Error):
         Subcommand(('/bin/programdoesnotexist', ))
示例#9
0
 def test_nowait(self):
     from time import sleep
     proc = Subcommand((sys.executable, '-c', Commands.sleep, '0.1'),
                       wait=False)
     try:
         self.assertFalse(proc.poll())
         sleep(0.2)
         self.assertTrue(proc.poll())
         self.assertEqual(proc.returncode, 0)
     finally:
         proc.close()
     proc = Subcommand((sys.executable, '-c', Commands.sleep, '0.1'),
                       wait=False)
     try:
         self.assertFalse(proc.poll())
         rc = proc.wait()
         self.assertEqual(rc, proc.returncode)
         self.assertEqual(proc.returncode, 0)
     finally:
         proc.close()
示例#10
0
 def test_stderr(self):
     errfile = self.dir + 'stderr.stderr.txt'
     nonfile = self.dir + 'stderr.does-not-exist'
     proc = Subcommand((sys.executable, '-c', Commands.cat, nonfile),
                       stderr=str(errfile))
     errmsg = 'no such file or directory\n'
     try:
         self.assertGreater(proc.returncode, 0)
         self.assertEqual(errfile.open().read(), errmsg)
     finally:
         proc.close()
     errf = errfile.open('wt+')
     try:
         proc = Subcommand(
             (sys.executable, '-c', Commands.cat, str(nonfile)),
             stderr=errf)
         self.assertGreater(proc.returncode, 0)
         self.assertIs(proc.stderr, errf)
         errf.seek(0)
         self.assertEqual(errf.read(), errmsg)
     finally:
         errf.close()
         proc.close()
     proc = Subcommand((sys.executable, '-c', Commands.succeed),
                       stderr=Subcommand.PIPE)
     try:
         self.assertEqual(proc.stderr, proc.proc.stderr)
     finally:
         proc.close()
示例#11
0
 def test_stdin(self):
     infile = self.dir + 'stdin.stdin.txt'
     infile.open('wt').write(
         'Spam, Spam, Spam, Spam!\nWonderful spam, beautiful spam!\n')
     proc = Subcommand((sys.executable, '-c', Commands.wc),
                       stdin=str(infile),
                       stdout=Subcommand.PIPE)
     try:
         self.assertEqual(proc.returncode, 0)
         self.assertEqual(proc.stdout.read().decode('UTF-8').rstrip(), '56')
     finally:
         proc.close()
     inf = infile.open('rt')
     try:
         proc = Subcommand((sys.executable, '-c', Commands.wc),
                           stdin=inf,
                           stdout=Subcommand.PIPE)
         self.assertEqual(proc.returncode, 0)
         self.assertIs(proc.stdin, inf)
         self.assertEqual(proc.stdout.read().decode('UTF-8').strip(), '56')
     finally:
         proc.close()
         inf.close()
     proc = Subcommand((sys.executable, '-c', Commands.succeed),
                       stdin=Subcommand.PIPE,
                       stdout=Subcommand.PIPE)
     try:
         self.assertEqual(proc.stdin, proc.proc.stdin)
     finally:
         proc.close()
示例#12
0
 def test_subsequence(self):
     proc = Subcommand(((sys.executable, '-c', Commands.succeed), ), )
     self.assertEqual(proc.cmd, (sys.executable, '-c', Commands.succeed))
     proc.close()