class TestArgParser(unittest.TestCase): def setUp(self): unittest.TestCase.setUp(self); self.obj = CygAptArgParser("usage", "scriptname"); self.__originArgv = sys.argv[:]; sys.argv = sys.argv[:1]; def tearDown(self): sys.argv = self.__originArgv; def test___init__(self): self.assertTrue(isinstance(self.obj, CygAptArgParser)); self.assertEqual(self.obj.getUsage(), "usage"); self.assertEqual(self.obj.getAppName(), "scriptname"); def testParse(self): sys.argv.append("install"); sys.argv.append("pkg"); ret = self.obj.parse(); self.assertTrue(ret.verbose); self.assertEqual(ret.command, "install"); self.assertEqual(ret.package, ['pkg']); def testArgumentType(self): sys.argv.append("--mirror=http://a.mirror.str"); sys.argv.append("update"); sys.argv.append("--dist=test"); ret = self.obj.parse(); self.assertEqual("test", ret.distname); self.assertEqual("http://a.mirror.str", ret.mirror); def testArgumentTypeDefault(self): ret = self.obj.parse(); self.assertEqual("curr", ret.distname); self.assertEqual(True, ret.verbose);
def main(self): # parse command line arguments cap = CygAptArgParser(scriptname=self.getAppName()) args = cap.parse() # initialize main variables with command line arguments and options main_command = args.command main_files = args.package[:] main_files.insert(0, main_command) main_packagename = None if len(args.package) > 0: main_packagename = args.package[0] main_verbose = args.verbose main_download_p = args.download_p main_mirror = args.mirror main_distname = args.distname main_noupdate = args.noupdate main_nodeps_p = args.nodeps_p main_regex_search = args.regex_search main_nobarred = args.force main_verify = args.verify main_nopostinstall = args.nopostinstall main_nopostremove = args.nopostremove main_downloads = None main_dists = 0 main_installed = 0 # locate and parse the configuration file main_cyg_apt_rc = self.getConfigPath() config = None if main_cyg_apt_rc: config = cautils.parse_rc(main_cyg_apt_rc) elif (main_command != "setup"): print("{0}: no .{0}: run \"{0} setup\"".format(self.getAppName()), file=sys.stderr) return 1 # create a CygAptSetup instance and its dependencies main_cygwin_p = (sys.platform == "cygwin") is_64_bit = False if main_cygwin_p: # Running Cygwin python, so python architecture == Cygwin architecture if 2**32 < sys.maxsize: is_64_bit = True elif config and main_command != 'setup': # Running Windows python, so examine cygwin1.dll pathMapper = PathMapper(config.ROOT.rstrip('\\/'), main_cygwin_p) if cautils.pe_is_64_bit(pathMapper.mapPath("/bin/cygwin1.dll")): is_64_bit = True if is_64_bit: main_arch = 'x86_64' else: main_arch = 'x86' cas = CygAptSetup(main_cygwin_p, main_verbose, main_arch) # run command if (main_command == "setup"): cas.setup(args.force) return 0 elif (main_command == "help"): cas.usage(main_cyg_apt_rc) return 0 elif (main_command == "update"): cas.update(main_cyg_apt_rc, main_verify, main_mirror=main_mirror) return 0 # make an update if needed update_not_needed = [ "ball", "find", "help", "purge", "remove", "version", "filelist", "update", "setup", "md5", ] always_update = config.always_update always_update = always_update and\ main_command not in update_not_needed and\ not main_noupdate if always_update: cas.update(main_cyg_apt_rc, main_verify, main_mirror=main_mirror) if main_command and main_command in dir(CygApt): cyg_apt = CygApt( main_packagename, main_files, main_cyg_apt_rc, main_cygwin_p, main_download_p, main_mirror, main_downloads, main_distname, main_nodeps_p, main_regex_search, main_nobarred, main_nopostinstall, main_nopostremove, main_dists, main_installed, self.getAppName(), main_verbose, main_arch, ) getattr(cyg_apt, main_command)() else: cas.usage(main_cyg_apt_rc) return 0
def main(self): main_downloads = None; main_dists = 0; main_installed = 0; main_packagename = None; main_cyg_apt_rc = None; home_cyg_apt_rc = None; main_verbose = False; main_cygwin_p = (sys.platform == "cygwin"); cas = CygAptSetup(main_cygwin_p, main_verbose); update_not_needed = [ "ball", "find", "help", "purge", "remove", "version", "filelist", "update", "setup", "md5", ]; ob = CygAptOb(True); cas.usage(); usage = ob.getFlush(); cap = CygAptArgParser(usage=usage, scriptname=self.getAppName()); args = cap.parse(); main_command = args.command; main_files = args.package[:]; main_files.insert(0, main_command); if len(args.package) > 0: main_packagename = args.package[0]; else: main_packagename = None; main_verbose = args.verbose; main_download_p = args.download_p; main_mirror = args.mirror; main_distname = args.distname; main_noupdate = args.noupdate; main_nodeps_p = args.nodeps_p; main_regex_search = args.regex_search; main_nobarred = args.force; main_verify = args.verify; main_nopostinstall = args.nopostinstall; main_nopostremove = args.nopostremove; cas.setVerbose(main_verbose); # Take most of our configuration from .cyg-apt # preferring .cyg-apt in current directory over $(HOME)/.cyg-apt cwd_cyg_apt_rc = os.path.join( os.getcwd(), ".{0}".format(self.getAppName()) ); if os.path.exists(cwd_cyg_apt_rc): main_cyg_apt_rc = cwd_cyg_apt_rc; elif "HOME" in os.environ: home_cyg_apt_rc = os.path.join( os.environ['HOME'], ".{0}".format(self.getAppName()) ); if os.path.exists(home_cyg_apt_rc): main_cyg_apt_rc = home_cyg_apt_rc; if main_cyg_apt_rc: # Take our configuration from .cyg-apt # Command line options can override, but only for this run. main_cyg_apt_rc = main_cyg_apt_rc.replace("\\","/"); elif (main_command != "setup"): print( "{0}: no .{0}: run \"{0} setup\"".format(self.getAppName()), file=sys.stderr ); return 1; if (main_command == "setup"): cas.setup(args.force); return 0; elif (main_command == "help"): cas.usage(main_cyg_apt_rc); return 0; elif (main_command == "update"): cas.update(main_cyg_apt_rc, main_verify, main_mirror=main_mirror); return 0; always_update = cautils.parse_rc(main_cyg_apt_rc); always_update = always_update and\ main_command not in update_not_needed and\ not main_noupdate; if always_update: cas.update(main_cyg_apt_rc, main_verify, main_mirror=main_mirror); if main_command and main_command in dir(CygApt): cyg_apt = CygApt( main_packagename, main_files, main_cyg_apt_rc, main_cygwin_p, main_download_p, main_mirror, main_downloads, main_distname, main_nodeps_p, main_regex_search, main_nobarred, main_nopostinstall, main_nopostremove, main_dists, main_installed, self.getAppName(), main_verbose ); getattr(cyg_apt, main_command)(); else: cas.usage(main_cyg_apt_rc); return 0;
class TestArgParser(TestCase): def setUp(self): TestCase.setUp(self); self.obj = CygAptArgParser("scriptname"); self.__originArgv = sys.argv[:]; sys.argv = sys.argv[:1]; def tearDown(self): sys.argv = self.__originArgv; TestCase.tearDown(self); def test___init__(self): self.assertTrue(isinstance(self.obj, CygAptArgParser)); self.assertEqual(self.obj.getAppName(), "scriptname"); def testParse(self): sys.argv.append("install"); sys.argv.append("pkg"); ret = self.obj.parse(); self.assertTrue(ret.verbose); self.assertEqual(ret.command, "install"); self.assertEqual(ret.package, ['pkg']); def testArgumentType(self): sys.argv.append("--mirror=http://a.mirror.str"); sys.argv.append("update"); sys.argv.append("--dist=test"); ret = self.obj.parse(); self.assertEqual("test", ret.distname); self.assertEqual("http://a.mirror.str", ret.mirror); def testArgumentTypeDefault(self): ret = self.obj.parse(); self.assertEqual("curr", ret.distname); self.assertEqual(True, ret.verbose); def testNoPostInstallOptionIsDeprecated(self): sys.argv.append("-y"); ret = self._assertDeprecatedWarning( "The option -y, --nopostinstall is deprecated since version " "1.1 and will be removed in 2.0.", self.obj.parse ); self.assertTrue(ret.nopostinstall); def testNoPostRemoveOptionIsDeprecated(self): sys.argv.append("-z"); ret = self._assertDeprecatedWarning( "The option -z, --nopostremove is deprecated since version " "1.1 and will be removed in 2.0.", self.obj.parse ); self.assertTrue(ret.nopostremove); def testMd5CommandIsDeprecated(self): sys.argv.append("md5"); ret = self._assertDeprecatedWarning( "The command md5 is deprecated since version 1.2 and will be " "removed in 2.0, use checksum instead.", self.obj.parse ); self.assertEqual(ret.command, "checksum"); @dataProvider('getParseCommandData') def testParseCommand(self, command, args=None): """ @param command: str @param args: list """ if None is args : args = list(); sys.argv.append(command); for arg in args : sys.argv.append(arg); ret = self.obj.parse(); self.assertEqual(ret.command, command); self.assertEqual(ret.package, args); def getParseCommandData(self): return [ ['postinstall'], ['postremove', ['pkg']], ['checksum', ['pkg']], ];
class TestArgParser(TestCase): def setUp(self): TestCase.setUp(self) self.obj = CygAptArgParser("scriptname") self.__originArgv = sys.argv[:] sys.argv = sys.argv[:1] def tearDown(self): sys.argv = self.__originArgv TestCase.tearDown(self) def test___init__(self): self.assertTrue(isinstance(self.obj, CygAptArgParser)) self.assertEqual(self.obj.getAppName(), "scriptname") def testParse(self): sys.argv.append("install") sys.argv.append("pkg") ret = self.obj.parse() self.assertTrue(ret.verbose) self.assertEqual(ret.command, "install") self.assertEqual(ret.package, ['pkg']) def testArgumentType(self): sys.argv.append("--mirror=http://a.mirror.str") sys.argv.append("update") sys.argv.append("--dist=test") ret = self.obj.parse() self.assertEqual("test", ret.distname) self.assertEqual("http://a.mirror.str", ret.mirror) def testArgumentTypeDefault(self): ret = self.obj.parse() self.assertEqual("curr", ret.distname) self.assertEqual(True, ret.verbose) def testNoPostInstallOptionIsDeprecated(self): sys.argv.append("-y") ret = self._assertDeprecatedWarning( "The option -y, --nopostinstall is deprecated since version " "1.1 and will be removed in 2.0.", self.obj.parse) self.assertTrue(ret.nopostinstall) def testNoPostRemoveOptionIsDeprecated(self): sys.argv.append("-z") ret = self._assertDeprecatedWarning( "The option -z, --nopostremove is deprecated since version " "1.1 and will be removed in 2.0.", self.obj.parse) self.assertTrue(ret.nopostremove) def testMd5CommandIsDeprecated(self): sys.argv.append("md5") ret = self._assertDeprecatedWarning( "The command md5 is deprecated since version 1.2 and will be " "removed in 2.0, use checksum instead.", self.obj.parse) self.assertEqual(ret.command, "checksum") @dataProvider('getParseCommandData') def testParseCommand(self, command, args=None): """ @param command: str @param args: list """ if None is args: args = list() sys.argv.append(command) for arg in args: sys.argv.append(arg) ret = self.obj.parse() self.assertEqual(ret.command, command) self.assertEqual(ret.package, args) def getParseCommandData(self): return [ ['postinstall'], ['postremove', ['pkg']], ['checksum', ['pkg']], ]
def main(self): # parse command line arguments cap = CygAptArgParser(scriptname=self.getAppName()); args = cap.parse(); # initialize main variables with command line arguments and options main_command = args.command; main_files = args.package[:]; main_files.insert(0, main_command); main_packagename = None; if len(args.package) > 0: main_packagename = args.package[0]; main_verbose = args.verbose; main_download_p = args.download_p; main_mirror = args.mirror; main_distname = args.distname; main_noupdate = args.noupdate; main_nodeps_p = args.nodeps_p; main_regex_search = args.regex_search; main_nobarred = args.force; main_verify = args.verify; main_nopostinstall = args.nopostinstall; main_nopostremove = args.nopostremove; main_downloads = None; main_dists = 0; main_installed = 0; # locate and parse the configuration file main_cyg_apt_rc = self.getConfigPath(); config = None; if main_cyg_apt_rc: config = cautils.parse_rc(main_cyg_apt_rc); elif (main_command != "setup"): print( "{0}: no .{0}: run \"{0} setup\"".format(self.getAppName()), file=sys.stderr ); return 1; # create a CygAptSetup instance and its dependencies main_cygwin_p = (sys.platform == "cygwin"); is_64_bit = False; if main_cygwin_p : # Running Cygwin python, so python architecture == Cygwin architecture if 2**32 < sys.maxsize : is_64_bit = True; elif config and main_command != 'setup' : # Running Windows python, so examine cygwin1.dll pathMapper = PathMapper(config.ROOT.rstrip('\\/'), main_cygwin_p); if cautils.pe_is_64_bit(pathMapper.mapPath("/bin/cygwin1.dll")) : is_64_bit = True; if is_64_bit : main_arch = 'x86_64'; else: main_arch = 'x86'; cas = CygAptSetup(main_cygwin_p, main_verbose, main_arch); # run command if (main_command == "setup"): cas.setup(args.force); return 0; elif (main_command == "help"): cas.usage(main_cyg_apt_rc); return 0; elif (main_command == "update"): cas.update(main_cyg_apt_rc, main_verify, main_mirror=main_mirror); return 0; # make an update if needed update_not_needed = [ "ball", "find", "help", "purge", "remove", "version", "filelist", "update", "setup", "md5", ]; always_update = config.always_update; always_update = always_update and\ main_command not in update_not_needed and\ not main_noupdate; if always_update: cas.update(main_cyg_apt_rc, main_verify, main_mirror=main_mirror); if main_command and main_command in dir(CygApt): cyg_apt = CygApt( main_packagename, main_files, main_cyg_apt_rc, main_cygwin_p, main_download_p, main_mirror, main_downloads, main_distname, main_nodeps_p, main_regex_search, main_nobarred, main_nopostinstall, main_nopostremove, main_dists, main_installed, self.getAppName(), main_verbose, main_arch, ); getattr(cyg_apt, main_command)(); else: cas.usage(main_cyg_apt_rc); return 0;