class TestPathMapper(unittest.TestCase):
    def setUp(self):
        unittest.TestCase.setUp(self);
        self._var_root = "";
        self._var_cygwin_p = sys.platform.startswith("cygwin");
        self.obj = PathMapper(self._var_root, self._var_cygwin_p);

    def test__init__(self):
        self.assertTrue(isinstance(self.obj, PathMapper));
        self.assertEqual(self._var_root, self.obj.getRoot());

    def testAddMapping(self):
        mount = (
        "C:/cygwin/bin on /usr/bin type ntfs (binary,auto){LF}"
        "C:/cygwin/lib on /usr/lib type ntfs (binary,auto){LF}"
        "C:/cygwin on / type ntfs (binary,auto){LF}"
        "C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto){LF}"
        "".format(LF="\n")
        );
        f = TemporaryFile(mode='w+');
        f.writelines(mount);
        f.seek(0);
        mtab = f.readlines();
        f.close();

        mapping = {
            '/usr/bin/': "C:/cygwin/bin/",
            '/usr/lib/': "C:/cygwin/lib/",
            '/cygdrive/c/': "C:/",
        };
        self.obj._addMapping(mtab);
        self.assertEqual(self.obj.getMap(), mapping);
        self.assertEqual(self.obj.getMountRoot(), "C:/cygwin/");

    def testMapPath(self):
        if self._var_cygwin_p:
            self.assertEqual(self.obj.mapPath("/usr/bin/"), "/usr/bin/");
            return;

        mapping = {
             '/usr/bin/': 'C:/cygwin/bin/',
             '/usr/lib/': 'C:/cygwin/lib/',
             '/cygdrive/c/': 'C:/',
        };

        self.obj.setMap(mapping);

        for cyg in list(mapping.keys()):
            self.assertEqual(self.obj.mapPath(cyg), mapping[cyg]);
Exemple #2
0
    def _createCygApt(self):
        """Creates a CygApt instance.

        @return: CygApt
        """
        cygapt = CygApt(
            self._var_packagename,
            self._var_files,
            self._file_user_config,
            self._var_cygwin_p,
            self._var_download_p,
            self._var_mirror,
            self._var_downloads,
            self._var_distname,
            self._var_nodeps_p,
            self._var_regex_search,
            self._var_nobarred,
            self._var_nopostinstall,
            self._var_nopostremove,
            self._var_dists,
            self._var_installed,
            self._var_exename,
            self._var_verbose,
            self._var_arch,
            self._dir_confsetup,
        );

        # set attributes
        rc = ConfigStructure();
        rc.cache = self._dir_execache;
        rc.distname = 'curr';

        # BC layer for `setup_ini` configuration field
        del rc.__dict__['setup_ini'];

        rc.ROOT = self._dir_mtroot;
        rc.always_update = False;
        rc.mirror = self._var_mirror;
        cygapt.setRC(rc);

        cygapt.setInstalledDbFile(self._file_installed_db);
        self.assertEqual(self._dir_confsetup, cygapt.getSetupDir());

        pm = PathMapper("", False);
        pm.setRoot(self._dir_mtroot[:-1]);
        pm.setMountRoot(self._dir_mtroot);
        pm.setMap({self._dir_mtroot:self._dir_mtroot});

        expected = self._dir_mtroot;
        ret = pm.mapPath(self._dir_mtroot);
        self.assertEqual(ret, expected);
        expected = os.path.join(self._dir_mtroot, "diranme");
        ret = pm.mapPath(expected);
        self.assertEqual(ret, expected);

        cygapt.setPathMapper(pm);

        cygapt.setDists(self._var_setupIni.dists.__dict__);

        if self._var_cygwin_p :
            cygapt.CYG_POSTINSTALL_DIR = self._dir_postinstall;
            cygapt.CYG_PREREMOVE_DIR = self._dir_preremove;
            cygapt.CYG_POSTREMOVE_DIR = self._dir_postremove;

        # requires bash, ln and xz on PATH
        cygapt.setDosBash("bash");
        cygapt.setDosLn("ln");
        cygapt.setDosXz('xz');
        cygapt.setDosDash('dash');

        cygapt.setPrefixRoot(self._dir_mtroot[:-1]);
        cygapt.setAbsRoot(self._dir_mtroot);
        cygapt.setInstalled({0:{}});

        cygapt.FORCE_BARRED.extend([
            self._var_setupIni.barredpkg.name,
        ]);

        return cygapt;
Exemple #3
0
    def setUp(self):
        TestCase.setUp(self);

        self._var_verbose = False;
        self._var_cygwin_p = sys.platform.startswith("cygwin");

        if not self._var_cygwin_p:
            self.skipTest("requires cygwin");

        setup = CygAptSetup(self._var_cygwin_p, self._var_verbose);
        setup.setTmpDir(self._dir_tmp);
        setup.setAppName(self._var_exename);
        setup.setSetupDir(self._dir_confsetup);
        setup.getRC().ROOT = self._dir_mtroot;

        setup._gpgImport(setup.GPG_CYG_PUBLIC_RING_URI);
        setup.setup();

        f = open(self._file_setup_ini, 'w');
        f.write(self._var_setupIni.contents);
        f.close();

        f = open(self._file_installed_db, 'w');
        f.write(CygApt.INSTALLED_DB_MAGIC);
        f.close();

        self._var_packagename = self._var_setupIni.pkg.name;
        self._var_files = ["", self._var_packagename];
        self._var_download_p = False;
        self._var_downloads = None;
        self._var_distname = None;
        self._var_nodeps_p = False;
        self._var_regex_search = False;
        self._var_nobarred = False;
        self._var_nopostinstall = False;
        self._var_nopostremove = False;
        self._var_dists = 0;
        self._var_installed = 0;

        self.obj = CygApt(
            self._var_packagename,
            self._var_files,
            self._file_user_config,
            self._var_cygwin_p,
            self._var_download_p,
            self._var_mirror,
            self._var_downloads,
            self._var_distname,
            self._var_nodeps_p,
            self._var_regex_search,
            self._var_nobarred,
            self._var_nopostinstall,
            self._var_nopostremove,
            self._var_dists,
            self._var_installed,
            self._var_exename,
            self._var_verbose
        );

        # set attributes
        rc = ConfigStructure();
        rc.cache = self._dir_execache;
        rc.distname = 'curr';
        rc.setup_ini = self._file_setup_ini;
        rc.ROOT = self._dir_mtroot;
        rc.always_update = False;
        rc.mirror = self._var_mirror;
        self.obj.setRC(rc);

        self.obj.setDownlaodDir(self._dir_downloads);
        self.obj.setInstalledDbFile(self._file_installed_db);
        self.obj.setSetupDir(self._dir_confsetup);

        pm = PathMapper("", False);
        pm.setRoot(self._dir_mtroot[:-1]);
        pm.setMountRoot(self._dir_mtroot);
        pm.setMap({self._dir_mtroot:self._dir_mtroot});

        expected = self._dir_mtroot;
        ret = pm.mapPath(self._dir_mtroot);
        self.assertEqual(ret, expected);
        expected = os.path.join(self._dir_mtroot, "diranme");
        ret = pm.mapPath(expected);
        self.assertEqual(ret, expected);

        self.obj.setPathMapper(pm);

        self.obj.setDists(self._var_setupIni.dists.__dict__);

        self.obj.CYG_POSTINSTALL_DIR = self._dir_postinstall;
        self.obj.CYG_PREREMOVE_DIR = self._dir_preremove;
        self.obj.CYG_POSTREMOVE_DIR = self._dir_postremove;

        self.obj.setDosBash("/usr/bin/bash");
        self.obj.setDosLn("/usr/bin/ln");

        self.obj.setPrefixRoot(self._dir_mtroot[:-1]);
        self.obj.setAbsRoot(self._dir_mtroot);
        self.obj.setInstalled({0:{}});

        self.obj.FORCE_BARRED = [self._var_setupIni.barredpkg.name];
Exemple #4
0
    def _createCygApt(self):
        """Creates a CygApt instance.

        @return: CygApt
        """
        cygapt = CygApt(
            self._var_packagename,
            self._var_files,
            self._file_user_config,
            self._var_cygwin_p,
            self._var_download_p,
            self._var_mirror,
            self._var_downloads,
            self._var_distname,
            self._var_nodeps_p,
            self._var_regex_search,
            self._var_nobarred,
            self._var_nopostinstall,
            self._var_nopostremove,
            self._var_dists,
            self._var_installed,
            self._var_exename,
            self._var_verbose,
            self._var_arch,
            self._dir_confsetup,
        )

        # set attributes
        rc = ConfigStructure()
        rc.cache = self._dir_execache
        rc.distname = 'curr'

        # BC layer for `setup_ini` configuration field
        del rc.__dict__['setup_ini']

        rc.ROOT = self._dir_mtroot
        rc.always_update = False
        rc.mirror = self._var_mirror
        cygapt.setRC(rc)

        cygapt.setInstalledDbFile(self._file_installed_db)
        self.assertEqual(self._dir_confsetup, cygapt.getSetupDir())

        pm = PathMapper("", False)
        pm.setRoot(self._dir_mtroot[:-1])
        pm.setMountRoot(self._dir_mtroot)
        pm.setMap({self._dir_mtroot: self._dir_mtroot})

        expected = self._dir_mtroot
        ret = pm.mapPath(self._dir_mtroot)
        self.assertEqual(ret, expected)
        expected = os.path.join(self._dir_mtroot, "diranme")
        ret = pm.mapPath(expected)
        self.assertEqual(ret, expected)

        cygapt.setPathMapper(pm)

        cygapt.setDists(self._var_setupIni.dists.__dict__)

        if self._var_cygwin_p:
            cygapt.CYG_POSTINSTALL_DIR = self._dir_postinstall
            cygapt.CYG_PREREMOVE_DIR = self._dir_preremove
            cygapt.CYG_POSTREMOVE_DIR = self._dir_postremove

        # requires bash, ln and xz on PATH
        cygapt.setDosBash("bash")
        cygapt.setDosLn("ln")
        cygapt.setDosXz('xz')
        cygapt.setDosDash('dash')

        cygapt.setPrefixRoot(self._dir_mtroot[:-1])
        cygapt.setAbsRoot(self._dir_mtroot)
        cygapt.setInstalled({0: {}})

        cygapt.FORCE_BARRED.extend([
            self._var_setupIni.barredpkg.name,
        ])

        return cygapt