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]);
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;
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];
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