diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2019-10-11 13:56:49 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-11 13:56:49 (GMT) |
commit | 73665b41470532f873315d5ae39906160192320d (patch) | |
tree | ac1ca7f06f47d3518d5c4eaa6d13a3c8b2149e45 /Lib/test | |
parent | 380eb427ddd067042539d5d5f2b7f88a7183801c (diff) | |
download | cpython-73665b41470532f873315d5ae39906160192320d.zip cpython-73665b41470532f873315d5ae39906160192320d.tar.gz cpython-73665b41470532f873315d5ae39906160192320d.tar.bz2 |
bpo-38347: find pathfix for Python scripts whose name contain a '-' (GH-16536)
pathfix.py: Assume all files that end on '.py' are Python scripts when working recursively.
(cherry picked from commit 2b7dc40b2af6578181808ba73c1533fc114e55df)
Co-authored-by: Ruediger Pluem <r.pluem@gmx.de>
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_tools/test_pathfix.py | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/Lib/test/test_tools/test_pathfix.py b/Lib/test/test_tools/test_pathfix.py index a879924..ec36117 100644 --- a/Lib/test/test_tools/test_pathfix.py +++ b/Lib/test/test_tools/test_pathfix.py @@ -14,25 +14,34 @@ class TestPathfixFunctional(unittest.TestCase): script = os.path.join(scriptsdir, 'pathfix.py') def setUp(self): - self.temp_file = support.TESTFN self.addCleanup(support.unlink, support.TESTFN) - def pathfix(self, shebang, pathfix_flags, exitcode=0, stdout='', stderr=''): - with open(self.temp_file, 'w', encoding='utf8') as f: + def pathfix(self, shebang, pathfix_flags, exitcode=0, stdout='', stderr='', + directory=''): + if directory: + # bpo-38347: Test filename should contain lowercase, uppercase, + # "-", "_" and digits. + filename = os.path.join(directory, 'script-A_1.py') + pathfix_arg = directory + else: + filename = support.TESTFN + pathfix_arg = filename + + with open(filename, 'w', encoding='utf8') as f: f.write(f'{shebang}\n' + 'print("Hello world")\n') proc = subprocess.run( [sys.executable, self.script, - *pathfix_flags, '-n', self.temp_file], + *pathfix_flags, '-n', pathfix_arg], capture_output=True, text=1) if stdout == '' and proc.returncode == 0: - stdout = f'{self.temp_file}: updating\n' + stdout = f'{filename}: updating\n' self.assertEqual(proc.returncode, exitcode, proc) self.assertEqual(proc.stdout, stdout, proc) self.assertEqual(proc.stderr, stderr, proc) - with open(self.temp_file, 'r', encoding='utf8') as f: + with open(filename, 'r', encoding='utf8') as f: output = f.read() lines = output.split('\n') @@ -44,6 +53,19 @@ class TestPathfixFunctional(unittest.TestCase): return new_shebang + def test_recursive(self): + tmpdir = support.TESTFN + '.d' + self.addCleanup(support.rmtree, tmpdir) + os.mkdir(tmpdir) + expected_stderr = f"recursedown('{os.path.basename(tmpdir)}')\n" + self.assertEqual( + self.pathfix( + '#! /usr/bin/env python', + ['-i', '/usr/bin/python3'], + directory=tmpdir, + stderr=expected_stderr), + '#! /usr/bin/python3') + def test_pathfix(self): self.assertEqual( self.pathfix( |