17db96d56Sopenharmony_ci"""Tests for distutils.command.install_data."""
27db96d56Sopenharmony_ciimport os
37db96d56Sopenharmony_ciimport unittest
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_cifrom distutils.command.install_data import install_data
67db96d56Sopenharmony_cifrom distutils.tests import support
77db96d56Sopenharmony_cifrom test.support import run_unittest
87db96d56Sopenharmony_ci
97db96d56Sopenharmony_ciclass InstallDataTestCase(support.TempdirManager,
107db96d56Sopenharmony_ci                          support.LoggingSilencer,
117db96d56Sopenharmony_ci                          support.EnvironGuard,
127db96d56Sopenharmony_ci                          unittest.TestCase):
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_ci    def test_simple_run(self):
157db96d56Sopenharmony_ci        pkg_dir, dist = self.create_dist()
167db96d56Sopenharmony_ci        cmd = install_data(dist)
177db96d56Sopenharmony_ci        cmd.install_dir = inst = os.path.join(pkg_dir, 'inst')
187db96d56Sopenharmony_ci
197db96d56Sopenharmony_ci        # data_files can contain
207db96d56Sopenharmony_ci        #  - simple files
217db96d56Sopenharmony_ci        #  - a tuple with a path, and a list of file
227db96d56Sopenharmony_ci        one = os.path.join(pkg_dir, 'one')
237db96d56Sopenharmony_ci        self.write_file(one, 'xxx')
247db96d56Sopenharmony_ci        inst2 = os.path.join(pkg_dir, 'inst2')
257db96d56Sopenharmony_ci        two = os.path.join(pkg_dir, 'two')
267db96d56Sopenharmony_ci        self.write_file(two, 'xxx')
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_ci        cmd.data_files = [one, (inst2, [two])]
297db96d56Sopenharmony_ci        self.assertEqual(cmd.get_inputs(), [one, (inst2, [two])])
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_ci        # let's run the command
327db96d56Sopenharmony_ci        cmd.ensure_finalized()
337db96d56Sopenharmony_ci        cmd.run()
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_ci        # let's check the result
367db96d56Sopenharmony_ci        self.assertEqual(len(cmd.get_outputs()), 2)
377db96d56Sopenharmony_ci        rtwo = os.path.split(two)[-1]
387db96d56Sopenharmony_ci        self.assertTrue(os.path.exists(os.path.join(inst2, rtwo)))
397db96d56Sopenharmony_ci        rone = os.path.split(one)[-1]
407db96d56Sopenharmony_ci        self.assertTrue(os.path.exists(os.path.join(inst, rone)))
417db96d56Sopenharmony_ci        cmd.outfiles = []
427db96d56Sopenharmony_ci
437db96d56Sopenharmony_ci        # let's try with warn_dir one
447db96d56Sopenharmony_ci        cmd.warn_dir = 1
457db96d56Sopenharmony_ci        cmd.ensure_finalized()
467db96d56Sopenharmony_ci        cmd.run()
477db96d56Sopenharmony_ci
487db96d56Sopenharmony_ci        # let's check the result
497db96d56Sopenharmony_ci        self.assertEqual(len(cmd.get_outputs()), 2)
507db96d56Sopenharmony_ci        self.assertTrue(os.path.exists(os.path.join(inst2, rtwo)))
517db96d56Sopenharmony_ci        self.assertTrue(os.path.exists(os.path.join(inst, rone)))
527db96d56Sopenharmony_ci        cmd.outfiles = []
537db96d56Sopenharmony_ci
547db96d56Sopenharmony_ci        # now using root and empty dir
557db96d56Sopenharmony_ci        cmd.root = os.path.join(pkg_dir, 'root')
567db96d56Sopenharmony_ci        inst3 = os.path.join(cmd.install_dir, 'inst3')
577db96d56Sopenharmony_ci        inst4 = os.path.join(pkg_dir, 'inst4')
587db96d56Sopenharmony_ci        three = os.path.join(cmd.install_dir, 'three')
597db96d56Sopenharmony_ci        self.write_file(three, 'xx')
607db96d56Sopenharmony_ci        cmd.data_files = [one, (inst2, [two]),
617db96d56Sopenharmony_ci                          ('inst3', [three]),
627db96d56Sopenharmony_ci                          (inst4, [])]
637db96d56Sopenharmony_ci        cmd.ensure_finalized()
647db96d56Sopenharmony_ci        cmd.run()
657db96d56Sopenharmony_ci
667db96d56Sopenharmony_ci        # let's check the result
677db96d56Sopenharmony_ci        self.assertEqual(len(cmd.get_outputs()), 4)
687db96d56Sopenharmony_ci        self.assertTrue(os.path.exists(os.path.join(inst2, rtwo)))
697db96d56Sopenharmony_ci        self.assertTrue(os.path.exists(os.path.join(inst, rone)))
707db96d56Sopenharmony_ci
717db96d56Sopenharmony_cidef test_suite():
727db96d56Sopenharmony_ci    return unittest.TestLoader().loadTestsFromTestCase(InstallDataTestCase)
737db96d56Sopenharmony_ci
747db96d56Sopenharmony_ciif __name__ == "__main__":
757db96d56Sopenharmony_ci    run_unittest(test_suite())
76