"""Tests for distutils.command.install."""



import os

import unittest



from distutils.command.install import install

from distutils.core import Distribution



from distutils.tests import support





class InstallTestCase(support.TempdirManager, unittest.TestCase):



    def test_home_installation_scheme(self):

        # This ensure two things:

        # - that --home generates the desired set of directory names

        # - test --home is supported on all platforms

        builddir = self.mkdtemp()

        destination = os.path.join(builddir, "installation")



        dist = Distribution({"name": "foopkg"})

        # script_name need not exist, it just need to be initialized

        dist.script_name = os.path.join(builddir, "setup.py")

        dist.command_obj["build"] = support.DummyCommand(

            build_base=builddir,

            build_lib=os.path.join(builddir, "lib"),

            )



        cmd = install(dist)

        cmd.home = destination

        cmd.ensure_finalized()



        self.assertEqual(cmd.install_base, destination)

        self.assertEqual(cmd.install_platbase, destination)



        def check_path(got, expected):

            got = os.path.normpath(got)

            expected = os.path.normpath(expected)

            self.assertEqual(got, expected)



        libdir = os.path.join(destination, "lib", "python")

        check_path(cmd.install_lib, libdir)

        check_path(cmd.install_platlib, libdir)

        check_path(cmd.install_purelib, libdir)

        check_path(cmd.install_headers,

                   os.path.join(destination, "include", "python", "foopkg"))

        check_path(cmd.install_scripts, os.path.join(destination, "bin"))

        check_path(cmd.install_data, destination)





def test_suite():

    return unittest.makeSuite(InstallTestCase)



if __name__ == "__main__":

    unittest.main(defaultTest="test_suite")

