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

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


https://github.com/python/cpython/commit/e85ba1e69288e3fce400ed4cdbefab58934b5904
commit: e85ba1e69288e3fce400ed4cdbefab58934b5904
branch: 3.7
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: Victor Stinner <vstinner at redhat.com>
date: 2019-05-02T15:29:06-04:00
summary:

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

(cherry picked from commit c4e78b116f9a4299f3b3bfbbd18ef49782bb1143)

Co-authored-by: Zackery Spytz <zspytz at gmail.com>

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

diff --git a/Lib/test/test_tools/test_lll.py b/Lib/test/test_tools/test_lll.py
new file mode 100644
index 000000000000..f3fbe961eee5
--- /dev/null
+++ b/Lib/test/test_tools/test_lll.py
@@ -0,0 +1,39 @@
+"""Tests for the lll script in the Tools/script directory."""
+
+import os
+import tempfile
+from test import support
+from test.test_tools import skip_if_missing, import_tool
+import unittest
+
+skip_if_missing()
+
+
+class lllTests(unittest.TestCase):
+
+    def setUp(self):
+        self.lll = import_tool('lll')
+
+    @support.skip_unless_symlink
+    def test_lll_multiple_dirs(self):
+        with tempfile.TemporaryDirectory() as dir1, \
+             tempfile.TemporaryDirectory() as 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'))
+
+            with support.captured_stdout() as output:
+                self.lll.main([dir1, dir2])
+            self.assertEqual(output.getvalue(),
+                f'{dir1}:\n'
+                f'symlink -> {fn1}\n'
+                f'\n'
+                f'{dir2}:\n'
+                f'symlink -> {fn2}\n'
+            )
+
+
+if __name__ == '__main__':
+    unittest.main()
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 aa4e55091e59..1b48eac8aad8 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