1a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé"""Tests for distutils.command.install_data."""
2a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadéimport sys
3a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadéimport os
4a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadéimport unittest
5a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadéimport getpass
6a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé
7a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadéfrom distutils.command.install_data import install_data
8a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadéfrom distutils.tests import support
954274ad96aa033b9f3744dce395d08047467cca9Éric Araujofrom test.test_support import run_unittest
10a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé
11a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadéclass InstallDataTestCase(support.TempdirManager,
12a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé                          support.LoggingSilencer,
132b06d42db58e333ee932b5718ef2cb14b9ccfa91Tarek Ziadé                          support.EnvironGuard,
14a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé                          unittest.TestCase):
15a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé
16a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé    def test_simple_run(self):
17a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        pkg_dir, dist = self.create_dist()
18a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        cmd = install_data(dist)
19a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        cmd.install_dir = inst = os.path.join(pkg_dir, 'inst')
20a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé
21a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        # data_files can contain
22a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        #  - simple files
23a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        #  - a tuple with a path, and a list of file
24a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        one = os.path.join(pkg_dir, 'one')
25a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        self.write_file(one, 'xxx')
26a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        inst2 = os.path.join(pkg_dir, 'inst2')
27a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        two = os.path.join(pkg_dir, 'two')
28a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        self.write_file(two, 'xxx')
29a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé
30a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        cmd.data_files = [one, (inst2, [two])]
312623a37852153363335956afab010cb0beb7e74eEzio Melotti        self.assertEqual(cmd.get_inputs(), [one, (inst2, [two])])
32a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé
33a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        # let's run the command
34a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        cmd.ensure_finalized()
35a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        cmd.run()
36a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé
37a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        # let's check the result
382623a37852153363335956afab010cb0beb7e74eEzio Melotti        self.assertEqual(len(cmd.get_outputs()), 2)
39a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        rtwo = os.path.split(two)[-1]
405c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson        self.assertTrue(os.path.exists(os.path.join(inst2, rtwo)))
41a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        rone = os.path.split(one)[-1]
425c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson        self.assertTrue(os.path.exists(os.path.join(inst, rone)))
43a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        cmd.outfiles = []
44a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé
45a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        # let's try with warn_dir one
46a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        cmd.warn_dir = 1
47a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        cmd.ensure_finalized()
48a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        cmd.run()
49a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé
50a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        # let's check the result
512623a37852153363335956afab010cb0beb7e74eEzio Melotti        self.assertEqual(len(cmd.get_outputs()), 2)
525c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson        self.assertTrue(os.path.exists(os.path.join(inst2, rtwo)))
535c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson        self.assertTrue(os.path.exists(os.path.join(inst, rone)))
54a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        cmd.outfiles = []
55a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé
56a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        # now using root and empty dir
57a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        cmd.root = os.path.join(pkg_dir, 'root')
58a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        inst3 = os.path.join(cmd.install_dir, 'inst3')
59a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        inst4 = os.path.join(pkg_dir, 'inst4')
60a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        three = os.path.join(cmd.install_dir, 'three')
61a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        self.write_file(three, 'xx')
62a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        cmd.data_files = [one, (inst2, [two]),
63a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé                          ('inst3', [three]),
64a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé                          (inst4, [])]
65a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        cmd.ensure_finalized()
66a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        cmd.run()
67a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé
68a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé        # let's check the result
692623a37852153363335956afab010cb0beb7e74eEzio Melotti        self.assertEqual(len(cmd.get_outputs()), 4)
705c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson        self.assertTrue(os.path.exists(os.path.join(inst2, rtwo)))
715c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson        self.assertTrue(os.path.exists(os.path.join(inst, rone)))
72a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé
73a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadédef test_suite():
74a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé    return unittest.makeSuite(InstallDataTestCase)
75a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadé
76a961a0444dd759963f903cafb3d96f6dc9bb7078Tarek Ziadéif __name__ == "__main__":
7754274ad96aa033b9f3744dce395d08047467cca9Éric Araujo    run_unittest(test_suite())
78