12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- """Tests for distutils.spawn."""
- import unittest
- import os
- import time
- from test.support import captured_stdout, run_unittest
- from distutils.spawn import _nt_quote_args
- from distutils.spawn import spawn, find_executable
- from distutils.errors import DistutilsExecError
- from distutils.tests import support
- class SpawnTestCase(support.TempdirManager,
- support.LoggingSilencer,
- unittest.TestCase):
- def test_nt_quote_args(self):
- for (args, wanted) in ((['with space', 'nospace'],
- ['"with space"', 'nospace']),
- (['nochange', 'nospace'],
- ['nochange', 'nospace'])):
- res = _nt_quote_args(args)
- self.assertEqual(res, wanted)
- @unittest.skipUnless(os.name in ('nt', 'posix'),
- 'Runs only under posix or nt')
- def test_spawn(self):
- tmpdir = self.mkdtemp()
- # creating something executable
- # through the shell that returns 1
- if os.name == 'posix':
- exe = os.path.join(tmpdir, 'foo.sh')
- self.write_file(exe, '#!/bin/sh\nexit 1')
- else:
- exe = os.path.join(tmpdir, 'foo.bat')
- self.write_file(exe, 'exit 1')
- os.chmod(exe, 0o777)
- self.assertRaises(DistutilsExecError, spawn, [exe])
- # now something that works
- if os.name == 'posix':
- exe = os.path.join(tmpdir, 'foo.sh')
- self.write_file(exe, '#!/bin/sh\nexit 0')
- else:
- exe = os.path.join(tmpdir, 'foo.bat')
- self.write_file(exe, 'exit 0')
- os.chmod(exe, 0o777)
- spawn([exe]) # should work without any error
- def test_suite():
- return unittest.makeSuite(SpawnTestCase)
- if __name__ == "__main__":
- run_unittest(test_suite())
|