17db96d56Sopenharmony_ci"""Tests for the lll script in the Tools/script directory."""
27db96d56Sopenharmony_ci
37db96d56Sopenharmony_ciimport os
47db96d56Sopenharmony_ciimport tempfile
57db96d56Sopenharmony_cifrom test import support
67db96d56Sopenharmony_cifrom test.support import os_helper
77db96d56Sopenharmony_cifrom test.test_tools import skip_if_missing, import_tool
87db96d56Sopenharmony_ciimport unittest
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_ciskip_if_missing()
117db96d56Sopenharmony_ci
127db96d56Sopenharmony_ci
137db96d56Sopenharmony_ciclass lllTests(unittest.TestCase):
147db96d56Sopenharmony_ci
157db96d56Sopenharmony_ci    def setUp(self):
167db96d56Sopenharmony_ci        self.lll = import_tool('lll')
177db96d56Sopenharmony_ci
187db96d56Sopenharmony_ci    @os_helper.skip_unless_symlink
197db96d56Sopenharmony_ci    def test_lll_multiple_dirs(self):
207db96d56Sopenharmony_ci        with tempfile.TemporaryDirectory() as dir1, \
217db96d56Sopenharmony_ci             tempfile.TemporaryDirectory() as dir2:
227db96d56Sopenharmony_ci            fn1 = os.path.join(dir1, 'foo1')
237db96d56Sopenharmony_ci            fn2 = os.path.join(dir2, 'foo2')
247db96d56Sopenharmony_ci            for fn, dir in (fn1, dir1), (fn2, dir2):
257db96d56Sopenharmony_ci                open(fn, 'wb').close()
267db96d56Sopenharmony_ci                os.symlink(fn, os.path.join(dir, 'symlink'))
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_ci            with support.captured_stdout() as output:
297db96d56Sopenharmony_ci                self.lll.main([dir1, dir2])
307db96d56Sopenharmony_ci            prefix = '\\\\?\\' if os.name == 'nt' else ''
317db96d56Sopenharmony_ci            self.assertEqual(output.getvalue(),
327db96d56Sopenharmony_ci                f'{dir1}:\n'
337db96d56Sopenharmony_ci                f'symlink -> {prefix}{fn1}\n'
347db96d56Sopenharmony_ci                f'\n'
357db96d56Sopenharmony_ci                f'{dir2}:\n'
367db96d56Sopenharmony_ci                f'symlink -> {prefix}{fn2}\n'
377db96d56Sopenharmony_ci            )
387db96d56Sopenharmony_ci
397db96d56Sopenharmony_ci
407db96d56Sopenharmony_ciif __name__ == '__main__':
417db96d56Sopenharmony_ci    unittest.main()
42