[Python-checkins] [2.7] bpo-14546: Fix the argument handling in Tools/scripts/lll.py (GH-13026) (GH-13063)

Victor Stinner webhook-mailer at python.org
Thu May 2 15:29:25 EDT 2019


https://github.com/python/cpython/commit/7c2c01f02a1821298a62dd16ecc3a12da663e14b
commit: 7c2c01f02a1821298a62dd16ecc3a12da663e14b
branch: 2.7
author: Zackery Spytz <zspytz at gmail.com>
committer: Victor Stinner <vstinner at redhat.com>
date: 2019-05-02T15:29:21-04:00
summary:

[2.7] bpo-14546: Fix the argument handling in Tools/scripts/lll.py (GH-13026) (GH-13063)

(cherry picked from commit c4e78b116f9a4299f3b3bfbbd18ef49782bb1143)

files:
A Misc/NEWS.d/next/Tools-Demos/2019-04-30-14-30-29.bpo-14546.r38Y-6.rst
M Lib/test/test_tools.py
M Tools/scripts/lll.py

diff --git a/Lib/test/test_tools.py b/Lib/test/test_tools.py
index 51e4fd61c77a..39116b3a79d5 100644
--- a/Lib/test/test_tools.py
+++ b/Lib/test/test_tools.py
@@ -445,6 +445,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')
+
+    @unittest.skipUnless(hasattr(os, 'symlink'), 'Requires symlink support')
+    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 000000000000..b8659b886af8
--- /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 9902d9d394b2..c6de245ab4e4 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:])



More information about the Python-checkins mailing list