From 880c0d302542e4be5c9c0fc9493d4466ae4f37e8 Mon Sep 17 00:00:00 2001 From: Zackery Spytz Date: Thu, 2 May 2019 11:45:44 -0600 Subject: [PATCH 1/2] bpo-14546: Fix the argument handling in Tools/scripts/lll.py (GH-13026) (cherry picked from commit c4e78b116f9a4299f3b3bfbbd18ef49782bb1143) --- Lib/test/test_tools.py | 28 +++++++++++++++++++ .../2019-04-30-14-30-29.bpo-14546.r38Y-6.rst | 1 + Tools/scripts/lll.py | 7 ++--- 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 Misc/NEWS.d/next/Tools-Demos/2019-04-30-14-30-29.bpo-14546.r38Y-6.rst diff --git a/Lib/test/test_tools.py b/Lib/test/test_tools.py index 51e4fd61c77aa0e..74c86683b8999bc 100644 --- a/Lib/test/test_tools.py +++ b/Lib/test/test_tools.py @@ -14,6 +14,7 @@ import sysconfig import tempfile import textwrap +from test import symlink_support from test import test_support from test.script_helper import assert_python_ok, temp_dir @@ -445,6 +446,33 @@ def run_script(self, input="", args=("-",), substfile="xx yy\n"): return output.getvalue() +class LllTests(unittest.TestCase): + + script = os.path.join(scriptsdir, 'lll.py') + + @symlink_support.skip_unless_symlink + def test_lll_multiple_dirs(self): + dir1 = tempfile.mkdtemp() + dir2 = tempfile.mkdtemp() + self.addCleanup(test_support.rmtree, dir1) + self.addCleanup(test_support.rmtree, dir2) + fn1 = os.path.join(dir1, 'foo1') + fn2 = os.path.join(dir2, 'foo2') + for fn, dir in (fn1, dir1), (fn2, dir2): + open(fn, 'w').close() + os.symlink(fn, os.path.join(dir, 'symlink')) + + rc, out, err = assert_python_ok(self.script, dir1, dir2) + self.assertEqual(out, + '{dir1}:\n' + 'symlink -> {fn1}\n' + '\n' + '{dir2}:\n' + 'symlink -> {fn2}\n' + .format(dir1=dir1, fn1=fn1, dir2=dir2, fn2=fn2) + ) + + def test_main(): test_support.run_unittest(*[obj for obj in globals().values() if isinstance(obj, type)]) diff --git a/Misc/NEWS.d/next/Tools-Demos/2019-04-30-14-30-29.bpo-14546.r38Y-6.rst b/Misc/NEWS.d/next/Tools-Demos/2019-04-30-14-30-29.bpo-14546.r38Y-6.rst new file mode 100644 index 000000000000000..b8659b886af8168 --- /dev/null +++ b/Misc/NEWS.d/next/Tools-Demos/2019-04-30-14-30-29.bpo-14546.r38Y-6.rst @@ -0,0 +1 @@ +Fix the argument handling in Tools/scripts/lll.py. diff --git a/Tools/scripts/lll.py b/Tools/scripts/lll.py index 9902d9d394b26b8..c6de245ab4e4166 100755 --- a/Tools/scripts/lll.py +++ b/Tools/scripts/lll.py @@ -13,8 +13,7 @@ def lll(dirname): full = os.path.join(dirname, name) if os.path.islink(full): print name, '->', os.readlink(full) -def main(): - args = sys.argv[1:] +def main(args): if not args: args = [os.curdir] first = 1 for arg in args: @@ -22,7 +21,7 @@ def main(): if not first: print first = 0 print arg + ':' - lll(arg) + lll(arg) if __name__ == '__main__': - main() + main(sys.argv[1:]) From a7bb3d2c3b75bc47d5788c7c832536c5ec5de976 Mon Sep 17 00:00:00 2001 From: Zackery Spytz Date: Thu, 2 May 2019 12:10:00 -0600 Subject: [PATCH 2/2] Fix the AppVeyor build. --- Lib/test/test_tools.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Lib/test/test_tools.py b/Lib/test/test_tools.py index 74c86683b8999bc..39116b3a79d5f26 100644 --- a/Lib/test/test_tools.py +++ b/Lib/test/test_tools.py @@ -14,7 +14,6 @@ import sysconfig import tempfile import textwrap -from test import symlink_support from test import test_support from test.script_helper import assert_python_ok, temp_dir @@ -450,7 +449,7 @@ class LllTests(unittest.TestCase): script = os.path.join(scriptsdir, 'lll.py') - @symlink_support.skip_unless_symlink + @unittest.skipUnless(hasattr(os, 'symlink'), 'Requires symlink support') def test_lll_multiple_dirs(self): dir1 = tempfile.mkdtemp() dir2 = tempfile.mkdtemp()