def test_unicode_comments(self): """ test a sources.list file with unicode comments """ shutil.copy(os.path.join(self.testdir, "sources.list.unicode"), os.path.join(self.testdir, "sources.list")) apt_pkg.config.set("Dir::Etc::sourcelist", "sources.list") self._verifySources(""" deb http://archive.ubuntu.com/ubuntu gutsy main restricted deb http://archive.ubuntu.com/ubuntu gutsy-updates main restricted deb http://security.ubuntu.com/ubuntu/ gutsy-security main restricted # A PPA with a unicode comment deb http://ppa.launchpad.net/random-ppa quantal main # ppa of Víctor R. Ruiz (vrruiz) """) v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) d.openCache(lock=False) res = d.updateSourcesList() self.assertTrue(res) # verify it self._verifySources(""" deb http://archive.ubuntu.com/ubuntu gutsy main restricted deb http://archive.ubuntu.com/ubuntu gutsy-updates main restricted deb http://security.ubuntu.com/ubuntu/ gutsy-security main restricted # A PPA with a unicode comment # deb http://ppa.launchpad.net/random-ppa quantal main # ppa of Víctor R. Ruiz (vrruiz) disabled on upgrade to gutsy """)
def test_private_ppa_transition(self): if "RELEASE_UPRADER_ALLOW_THIRD_PARTY" in os.environ: del os.environ["RELEASE_UPRADER_ALLOW_THIRD_PARTY"] shutil.copy( os.path.join(self.testdir, "sources.list.commercial-ppa-uploaders"), os.path.join(self.testdir, "sources.list")) apt_pkg.config.set("Dir::Etc::sourceparts", os.path.join(self.testdir, "sources.list.d")) v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) d.openCache(lock=False) res = d.updateSourcesList() self.assertTrue(res) # now test the result self._verifySources(""" deb http://archive.ubuntu.com/ubuntu/ gutsy main restricted multiverse universe deb-src http://archive.ubuntu.com/ubuntu/ gutsy main restricted multiverse deb http://security.ubuntu.com/ubuntu/ gutsy-security main restricted universe multiverse # random one # deb http://user:[email protected]/random-ppa gutsy main # disabled on upgrade to gutsy # commercial PPA deb https://user:[email protected]/commercial-ppa-uploaders gutsy main """)
def test_sources_list_rewrite(self): """ test regular sources.list rewrite """ shutil.copy(os.path.join(self.testdir,"sources.list.in"), os.path.join(self.testdir,"sources.list")) apt_pkg.config.set("Dir::Etc::sourcelist","sources.list") v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v,datadir=self.testdir) d.openCache(lock=False) res = d.updateSourcesList() self.assert_(res == True) # now test the result #print open(os.path.join(self.testdir,"sources.list")).read() self._verifySources(""" # main repo deb http://archive.ubuntu.com/ubuntu/ gutsy main restricted multiverse universe deb http://de.archive.ubuntu.com/ubuntu/ gutsy main restricted multiverse deb-src http://archive.ubuntu.com/ubuntu/ gutsy main restricted multiverse deb http://security.ubuntu.com/ubuntu/ gutsy-security main restricted multiverse deb http://security.ubuntu.com/ubuntu/ gutsy-security universe """) # check that the backup file was created correctly self.assert_(subprocess.call( ["cmp", apt_pkg.config.find_file("Dir::Etc::sourcelist")+".in", apt_pkg.config.find_file("Dir::Etc::sourcelist")+".distUpgrade" ]) == 0)
def test_apt_cacher_and_apt_bittorent(self): """ test transition of apt-cacher/apt-torrent uris """ shutil.copy(os.path.join(self.testdir, "sources.list.apt-cacher"), os.path.join(self.testdir, "sources.list")) apt_pkg.config.set("Dir::Etc::sourceparts", os.path.join(self.testdir, "sources.list.d")) v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) d.openCache(lock=False) res = d.updateSourcesList() self.assertTrue(res) # now test the result self._verifySources(""" deb http://localhost:9977/security.ubuntu.com/ubuntu gutsy-security main restricted universe multiverse deb http://localhost:9977/archive.canonical.com/ubuntu gutsy partner deb http://localhost:9977/us.archive.ubuntu.com/ubuntu/ gutsy main deb http://localhost:9977/archive.ubuntu.com/ubuntu/ gutsy main deb http://archive.ubuntu.com/ubuntu/ gutsy main restricted multiverse universe deb-src http://archive.ubuntu.com/ubuntu/ gutsy main restricted multiverse deb http://security.ubuntu.com/ubuntu/ gutsy-security main restricted deb http://security.ubuntu.com/ubuntu/ gutsy-security universe deb http://archive.canonical.com/ubuntu gutsy partner """)
def test_apt_cacher_and_apt_bittorent(self): """ test transition of apt-cacher/apt-torrent uris """ shutil.copy(os.path.join(self.testdir,"sources.list.apt-cacher"), os.path.join(self.testdir,"sources.list")) apt_pkg.config.set("Dir::Etc::sourceparts",os.path.join(self.testdir,"sources.list.d")) v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v,datadir=self.testdir) d.openCache(lock=False) res = d.updateSourcesList() self.assert_(res == True) # now test the result self._verifySources(""" deb http://localhost:9977/security.ubuntu.com/ubuntu gutsy-security main restricted deb http://localhost:9977/archive.canonical.com/ubuntu gutsy partner deb http://localhost:9977/us.archive.ubuntu.com/ubuntu/ gutsy main deb http://localhost:9977/archive.ubuntu.com/ubuntu/ gutsy main deb http://archive.ubuntu.com/ubuntu/ gutsy main restricted multiverse universe deb-src http://archive.ubuntu.com/ubuntu/ gutsy main restricted multiverse deb http://security.ubuntu.com/ubuntu/ gutsy-security main restricted deb http://security.ubuntu.com/ubuntu/ gutsy-security universe deb http://archive.canonical.com/ubuntu gutsy partner """)
def testEOL2SupportedWithMirrorUpgrade(self): " test upgrade from a EOL release to a supported release with mirror " # Use us.archive.ubuntu.com, because it is available in Canonical's # data center, unlike most mirrors. This lets this test pass when # when run in their Jenkins test environment. os.environ["LANG"] = "en_US.UTF-8" v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) shutil.copy(os.path.join(self.testdir, "sources.list.EOL2Supported"), os.path.join(self.testdir, "sources.list")) apt_pkg.config.set("Dir::Etc::sourceparts", os.path.join(self.testdir, "sources.list.d")) v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) d.fromDist = "oneiric" d.toDist = "precise" d.openCache(lock=False) res = d.updateSourcesList() self.assertTrue(res) self._verifySources(""" # main repo deb http://us.archive.ubuntu.com/ubuntu precise main restricted multiverse universe deb-src http://us.archive.ubuntu.com/ubuntu precise main restricted multiverse deb http://us.archive.ubuntu.com/ubuntu precise-security main restricted universe multiverse """)
def setUp(self): self.orig_etc = apt_pkg.config.get("Dir::Etc") self.orig_sourceparts = apt_pkg.config.get("Dir::Etc::sourceparts") self.orig_state = apt_pkg.config.get("Dir::State") self.orig_status = apt_pkg.config.get("Dir::State::status") self.orig_trusted = apt_pkg.config.get("Dir::Etc::trusted") apt_pkg.config.set("Dir::Etc", self.testdir) apt_pkg.config.set("Dir::Etc::sourceparts", os.path.join(self.testdir, "sources.list.d")) apt_pkg.config.set("APT::Default-Release", "") self.dc = DistUpgradeController(DistUpgradeView(), datadir=self.testdir)
def testVerifySourcesListEntry(self): from aptsources.sourceslist import SourceEntry v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v,datadir=self.testdir) for scheme in ["http"]: entry = "deb %s://archive.ubuntu.com/ubuntu/ hardy main universe restricted multiverse" % scheme self.assertTrue(d._sourcesListEntryDownloadable(SourceEntry(entry)), "entry '%s' not downloadable" % entry) entry = "deb %s://archive.ubuntu.com/ubuntu/ warty main universe restricted multiverse" % scheme self.assertFalse(d._sourcesListEntryDownloadable(SourceEntry(entry)), "entry '%s' not downloadable" % entry) entry = "deb %s://archive.ubuntu.com/ubuntu/ xxx main" % scheme self.assertFalse(d._sourcesListEntryDownloadable(SourceEntry(entry)), "entry '%s' not downloadable" % entry)
def test_sources_list_inactive_mirror(self, mock_get_distro): """ test sources.list rewrite of an obsolete mirror """ shutil.copy(os.path.join(self.testdir, "sources.list.obsolete_mirror"), os.path.join(self.testdir, "sources.list")) apt_pkg.config.set("Dir::Etc::sourcelist", "sources.list") v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) d.config.set("Distro", "BaseMetaPkgs", "ubuntu-minimal") mock_get_distro.return_value = UbuntuDistribution( "Ubuntu", "feisty", "Ubuntu Feisty Fawn", "7.04") d.openCache(lock=False) res = d.updateSourcesList() self.assertTrue(mock_get_distro.called) self.assertTrue(res) # now test the result #print(open(os.path.join(self.testdir,"sources.list")).read()) self._verifySources2Way(""" # main repo # deb http://mirror.mcs.anl.gov/ubuntu gutsy main restricted universe multiverse # disabled on upgrade to gutsy # deb http://mirror.mcs.anl.gov/ubuntu gutsy-updates main restricted universe multiverse # disabled on upgrade to gutsy # deb http://mirror.mcs.anl.gov/ubuntu feisty-proposed main restricted universe multiverse # deb http://mirror.mcs.anl.gov/ubuntu gutsy-security main restricted universe multiverse # disabled on upgrade to gutsy # deb-src http://mirror.mcs.anl.gov/ubuntu gutsy main restricted universe multiverse # disabled on upgrade to gutsy # deb-src http://mirror.mcs.anl.gov/ubuntu gutsy-updates main restricted universe multiverse # disabled on upgrade to gutsy ##deb-src http://mirror.mcs.anl.gov/ubuntu feisty-proposed main restricted universe multiverse # deb-src http://mirror.mcs.anl.gov/ubuntu gutsy-security main restricted universe multiverse # disabled on upgrade to gutsy # deb https://example.com/3rd-party/deb/ stable main # disabled on upgrade to gutsy deb http://archive.ubuntu.com/ubuntu/ gutsy main deb http://archive.ubuntu.com/ubuntu gutsy main restricted universe multiverse # auto generated by ubuntu-release-upgrader deb http://archive.ubuntu.com/ubuntu gutsy-updates main restricted universe multiverse # auto generated by ubuntu-release-upgrader deb http://archive.ubuntu.com/ubuntu gutsy-security main restricted universe multiverse # auto generated by ubuntu-release-upgrader deb-src http://archive.ubuntu.com/ubuntu gutsy main restricted universe multiverse # auto generated by ubuntu-release-upgrader deb-src http://archive.ubuntu.com/ubuntu gutsy-updates main restricted universe multiverse # auto generated by ubuntu-release-upgrader deb-src http://archive.ubuntu.com/ubuntu gutsy-security main restricted universe multiverse # auto generated by ubuntu-release-upgrader """) # check that the backup file was created correctly self.assertEqual( 0, subprocess.call([ "cmp", apt_pkg.config.find_file("Dir::Etc::sourcelist") + ".obsolete_mirror", apt_pkg.config.find_file("Dir::Etc::sourcelist") + ".distUpgrade" ]))
def testVerifySourcesListEntry(self): from aptsources.sourceslist import SourceEntry v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) for scheme in ["http"]: entry = "deb %s://archive.ubuntu.com/ubuntu/ precise main universe restricted multiverse" % scheme self.assertTrue( d._sourcesListEntryDownloadable(SourceEntry(entry)), "entry '%s' not downloadable" % entry) entry = "deb %s://archive.ubuntu.com/ubuntu/ warty main universe restricted multiverse" % scheme self.assertFalse( d._sourcesListEntryDownloadable(SourceEntry(entry)), "entry '%s' not downloadable" % entry) entry = "deb %s://archive.ubuntu.com/ubuntu/ xxx main" % scheme self.assertFalse( d._sourcesListEntryDownloadable(SourceEntry(entry)), "entry '%s' not downloadable" % entry)
def test_double_check_source_distribution_continue(self, mock_get_distro): """ test that an upgrade from feisty with a sources.list containing hardy asks a question, and if continued, does something. """ shutil.copy(os.path.join(self.testdir, "sources.list.hardy"), os.path.join(self.testdir, "sources.list")) apt_pkg.config.set("Dir::Etc::sourcelist", "sources.list") v = mock.Mock() v.askYesNoQuestion.return_value = True d = DistUpgradeController(v, datadir=self.testdir) d.config.set("Distro", "BaseMetaPkgs", "ubuntu-minimal") mock_get_distro.return_value = UbuntuDistribution( "Ubuntu", "feisty", "Ubuntu Feisty Fawn", "7.04") d.openCache(lock=False) res = d.updateSourcesList() self.assertTrue(mock_get_distro.called) self.assertTrue(res) # now test the result #print(open(os.path.join(self.testdir,"sources.list")).read()) # The result here is not really all that helpful, hence we # added the question in the first place. But still better to # check what it does than to not check it. self._verifySources2Way(""" # main repo # deb cdrom:[Ubuntu 8.10 _foo]/ hardy main # deb ftp://uk.archive.ubuntu.com/ubuntu/ hardy main restricted multiverse universe # deb http://de.archive.ubuntu.com/ubuntu/ hardy main restricted multiverse deb-src http://uk.archive.ubuntu.com/ubuntu/ hardy main restricted multiverse # deb http://security.ubuntu.com/ubuntu/ hardy-security main restricted # deb http://security.ubuntu.com/ubuntu/ hardy-security universe deb http://archive.ubuntu.com/ubuntu/ gutsy main """) # check that the backup file was created correctly self.assertEqual( 0, subprocess.call([ "cmp", apt_pkg.config.find_file("Dir::Etc::sourcelist") + ".hardy", apt_pkg.config.find_file("Dir::Etc::sourcelist") + ".distUpgrade" ]))
def test_commercial_transition(self): """ test transition of pre-gutsy archive.canonical.com archives """ shutil.copy(os.path.join(self.testdir,"sources.list.commercial-transition"), os.path.join(self.testdir,"sources.list")) apt_pkg.config.set("Dir::Etc::sourceparts",os.path.join(self.testdir,"sources.list.d")) v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v,datadir=self.testdir) d.openCache(lock=False) res = d.updateSourcesList() self.assert_(res == True) # now test the result self._verifySources(""" deb http://archive.canonical.com/ubuntu gutsy partner """)
def test_sparc_transition(self): """ test transition of sparc to ports.ubuntu.com """ arch = apt_pkg.config.find("APT::Architecture") apt_pkg.config.set("APT::Architecture", "sparc") shutil.copy(os.path.join(self.testdir, "sources.list.sparc"), os.path.join(self.testdir, "sources.list")) apt_pkg.config.set("Dir::Etc::sourceparts", os.path.join(self.testdir, "sources.list.d")) v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) d.fromDist = "gutsy" d.toDist = "hardy" d.openCache(lock=False) res = d.updateSourcesList() self.assertTrue(res) # now test the result self._verifySources(""" deb http://ports.ubuntu.com/ubuntu-ports/ hardy main restricted multiverse universe deb-src http://archive.ubuntu.com/ubuntu/ hardy main restricted multiverse deb http://ports.ubuntu.com/ubuntu-ports/ hardy-security main restricted universe multiverse """) apt_pkg.config.set("APT::Architecture", arch)
def test_sources_list_no_template(self, mock_get_distro): """ test sources.list rewrite when there is no distro template """ shutil.copy(os.path.join(self.testdir, "sources.list.obsolete_mirror"), os.path.join(self.testdir, "sources.list")) apt_pkg.config.set("Dir::Etc::sourcelist", "sources.list") v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) d.config.set("Distro", "BaseMetaPkgs", "ubuntu-minimal") mock_get_distro.side_effect = NoDistroTemplateException( "No distro template.") d.openCache(lock=False) res = d.updateSourcesList() self.assertTrue(mock_get_distro.called) self.assertTrue(res) # now test the result #print(open(os.path.join(self.testdir,"sources.list")).read()) self._verifySources(""" # main repo # deb http://mirror.mcs.anl.gov/ubuntu gutsy main restricted universe multiverse # disabled on upgrade to gutsy # deb http://mirror.mcs.anl.gov/ubuntu feisty-updates main restricted universe multiverse # disabled on upgrade to gutsy # deb http://mirror.mcs.anl.gov/ubuntu feisty-proposed main restricted universe multiverse # deb http://mirror.mcs.anl.gov/ubuntu feisty-security main restricted universe multiverse # disabled on upgrade to gutsy # deb-src http://mirror.mcs.anl.gov/ubuntu gutsy main restricted universe multiverse # disabled on upgrade to gutsy # deb-src http://mirror.mcs.anl.gov/ubuntu feisty-updates main restricted universe multiverse # disabled on upgrade to gutsy ##deb-src http://mirror.mcs.anl.gov/ubuntu feisty-proposed main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu gutsy main restricted # auto generated by ubuntu-release-upgrader deb http://archive.ubuntu.com/ubuntu gutsy-updates main restricted # auto generated by ubuntu-release-upgrader deb http://security.ubuntu.com/ubuntu gutsy-security main restricted # auto generated by ubuntu-release-upgrader # deb-src http://mirror.mcs.anl.gov/ubuntu feisty-security main restricted universe multiverse # disabled on upgrade to gutsy """) # check that the backup file was created correctly self.assertEqual( 0, subprocess.call([ "cmp", apt_pkg.config.find_file("Dir::Etc::sourcelist") + ".obsolete_mirror", apt_pkg.config.find_file("Dir::Etc::sourcelist") + ".distUpgrade" ]))
def test_sources_list_with_nothing(self): """ test sources.list rewrite with nothing in it """ shutil.copy(os.path.join(self.testdir,"sources.list.nothing"), os.path.join(self.testdir,"sources.list")) apt_pkg.config.set("Dir::Etc::sourcelist","sources.list") v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v,datadir=self.testdir) d.openCache(lock=False) res = d.updateSourcesList() self.assert_(res == True) # now test the result self._verifySources(""" deb http://archive.ubuntu.com/ubuntu gutsy main restricted deb http://archive.ubuntu.com/ubuntu gutsy-updates main restricted deb http://security.ubuntu.com/ubuntu/ gutsy-security main restricted """)
def test_sources_list_with_nothing(self): """ test sources.list rewrite with nothing in it """ shutil.copy(os.path.join(self.testdir, "sources.list.nothing"), os.path.join(self.testdir, "sources.list")) apt_pkg.config.set("Dir::Etc::sourcelist", "sources.list") v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) d.openCache(lock=False) res = d.updateSourcesList() self.assertTrue(res) # now test the result self._verifySources(""" deb http://archive.ubuntu.com/ubuntu gutsy main restricted deb http://archive.ubuntu.com/ubuntu gutsy-updates main restricted deb http://security.ubuntu.com/ubuntu/ gutsy-security main restricted """)
def test_commercial_transition(self): """ test transition of pre-gutsy archive.canonical.com archives """ shutil.copy( os.path.join(self.testdir, "sources.list.commercial-transition"), os.path.join(self.testdir, "sources.list")) apt_pkg.config.set("Dir::Etc::sourceparts", os.path.join(self.testdir, "sources.list.d")) v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) d.openCache(lock=False) res = d.updateSourcesList() self.assertTrue(res) # now test the result self._verifySources(""" deb http://archive.canonical.com/ubuntu gutsy partner """)
def test_local_mirror(self): """ test that a local mirror with official -backports works (LP:# 1067393) """ shutil.copy(os.path.join(self.testdir, "sources.list.local"), os.path.join(self.testdir, "sources.list")) apt_pkg.config.set("Dir::Etc::sourcelist", "sources.list") v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) d.openCache(lock=False) res = d.updateSourcesList() self.assertTrue(res) # verify it self._verifySources(""" deb http://192.168.1.1/ubuntu gutsy main restricted deb http://192.168.1.1/ubuntu gutsy-updates main restricted deb http://security.ubuntu.com/ubuntu/ gutsy-security main restricted deb http://archive.ubuntu.com/ubuntu gutsy-backports main restricted universe multiverse """)
def test_double_check_source_distribution_reject(self, mock_abort, mock_get_distro): """ test that an upgrade from feisty with a sources.list containing hardy asks a question, and if rejected, aborts the upgrade. """ shutil.copy(os.path.join(self.testdir, "sources.list.hardy"), os.path.join(self.testdir, "sources.list")) apt_pkg.config.set("Dir::Etc::sourcelist", "sources.list") v = mock.Mock() v.askYesNoQuestion.return_value = False d = DistUpgradeController(v, datadir=self.testdir) d.config.set("Distro", "BaseMetaPkgs", "ubuntu-minimal") mock_get_distro.return_value = UbuntuDistribution( "Ubuntu", "feisty", "Ubuntu Feisty Fawn", "7.04") class AbortException(Exception): """Exception""" mock_abort.side_effect = AbortException d.openCache(lock=False) with self.assertRaises(AbortException): d.updateSourcesList() self.assertTrue(mock_abort.called) self.assertTrue(mock_get_distro.called) self.assertTrue(v.askYesNoQuestion.called)
def test_powerpc_transition(self): """ test transition of powerpc to ports.ubuntu.com """ arch = apt_pkg.config.find("APT::Architecture") apt_pkg.config.set("APT::Architecture","powerpc") shutil.copy(os.path.join(self.testdir,"sources.list.powerpc"), os.path.join(self.testdir,"sources.list")) apt_pkg.config.set("Dir::Etc::sourceparts",os.path.join(self.testdir,"sources.list.d")) v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v,datadir=self.testdir) d.openCache(lock=False) res = d.updateSourcesList() self.assert_(res == True) # now test the result self._verifySources(""" deb http://ports.ubuntu.com/ubuntu-ports/ gutsy main restricted multiverse universe deb-src http://archive.ubuntu.com/ubuntu/ gutsy main restricted multiverse deb http://ports.ubuntu.com/ubuntu-ports/ gutsy-security main restricted """) apt_pkg.config.set("APT::Architecture",arch)
def test_disable_proposed(self): """ Test that proposed is disabled when upgrading to a development release. """ shutil.copy( os.path.join(self.testdir, "sources.list.proposed_enabled"), os.path.join(self.testdir, "sources.list")) apt_pkg.config.set("Dir::Etc::sourcelist", "sources.list") v = DistUpgradeViewNonInteractive() options = mock.Mock() options.devel_release = True d = DistUpgradeController(v, options, datadir=self.testdir) d.openCache(lock=False) res = d.updateSourcesList() self.assertTrue(res) self._verifySources(""" deb http://archive.ubuntu.com/ubuntu gutsy main restricted deb http://archive.ubuntu.com/ubuntu gutsy-updates main restricted deb http://security.ubuntu.com/ubuntu/ gutsy-security main restricted # deb http://archive.ubuntu.com/ubuntu gutsy-proposed universe main multiverse restricted #Not for humans during development stage of release gutsy """)
def test_sources_list_rewrite(self, mock_get_distro): """ test regular sources.list rewrite """ shutil.copy(os.path.join(self.testdir, "sources.list.in"), os.path.join(self.testdir, "sources.list")) apt_pkg.config.set("Dir::Etc::sourcelist", "sources.list") v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) d.config.set("Distro", "BaseMetaPkgs", "ubuntu-minimal") mock_get_distro.return_value = UbuntuDistribution( "Ubuntu", "feisty", "Ubuntu Feisty Fawn", "7.04") d.openCache(lock=False) res = d.updateSourcesList() self.assertTrue(mock_get_distro.called) self.assertTrue(res) # now test the result #print(open(os.path.join(self.testdir,"sources.list")).read()) self._verifySources(""" # main repo deb http://archive.ubuntu.com/ubuntu/ gutsy main restricted multiverse universe deb http://de.archive.ubuntu.com/ubuntu/ gutsy main restricted multiverse deb-src http://archive.ubuntu.com/ubuntu/ gutsy main restricted multiverse deb http://security.ubuntu.com/ubuntu/ gutsy-security main restricted multiverse deb http://security.ubuntu.com/ubuntu/ gutsy-security universe """) # check that the backup file was created correctly self.assertEqual( 0, subprocess.call([ "cmp", apt_pkg.config.find_file("Dir::Etc::sourcelist") + ".in", apt_pkg.config.find_file("Dir::Etc::sourcelist") + ".distUpgrade" ]))
def test_extras_removal(self, mock_get_distro): """ test removal of extras.ubuntu.com archives """ original = os.path.join(self.testdir, "sources.list.extras") shutil.copy(original, os.path.join(self.testdir, "sources.list")) apt_pkg.config.set("Dir::Etc::sourceparts", os.path.join(self.testdir, "sources.list.d")) v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) mock_get_distro.return_value = UbuntuDistribution( "Ubuntu", "feisty", "Ubuntu Feisty Fawn", "7.04") d.openCache(lock=False) res = d.updateSourcesList() self.assertTrue(res) sources_file = apt_pkg.config.find_file("Dir::Etc::sourcelist") self.assertEqual( open(sources_file).read(), """deb http://archive.ubuntu.com/ubuntu gutsy main restricted deb http://archive.ubuntu.com/ubuntu gutsy-updates main restricted deb http://security.ubuntu.com/ubuntu/ gutsy-security main restricted """)
def testEOL2EOLUpgrades(self): " test upgrade from EOL release to EOL release " v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) shutil.copy(os.path.join(self.testdir, "sources.list.EOL"), os.path.join(self.testdir, "sources.list")) apt_pkg.config.set("Dir::Etc::sourceparts", os.path.join(self.testdir, "sources.list.d")) v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) d.fromDist = "warty" d.toDist = "hoary" d.openCache(lock=False) res = d.updateSourcesList() self.assertTrue(res) self._verifySources(""" # main repo deb http://old-releases.ubuntu.com/ubuntu hoary main restricted multiverse universe deb-src http://old-releases.ubuntu.com/ubuntu hoary main restricted multiverse deb http://old-releases.ubuntu.com/ubuntu hoary-security main restricted universe multiverse """)
def testEOL2SupportedUpgrade(self): " test upgrade from a EOL release to a supported release " os.environ["LANG"] = "C" v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) shutil.copy(os.path.join(self.testdir, "sources.list.EOL2Supported"), os.path.join(self.testdir, "sources.list")) apt_pkg.config.set("Dir::Etc::sourceparts", os.path.join(self.testdir, "sources.list.d")) v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v, datadir=self.testdir) d.fromDist = "oneiric" d.toDist = "precise" d.openCache(lock=False) res = d.updateSourcesList() self.assertTrue(res) self._verifySources(""" # main repo deb http://archive.ubuntu.com/ubuntu precise main restricted multiverse universe deb-src http://archive.ubuntu.com/ubuntu precise main restricted multiverse deb http://archive.ubuntu.com/ubuntu precise-security main restricted universe multiverse """)
def testEOL2EOLUpgrades(self): " test upgrade from EOL release to EOL release " v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v,datadir=self.testdir) shutil.copy(os.path.join(self.testdir,"sources.list.EOL"), os.path.join(self.testdir,"sources.list")) apt_pkg.config.set("Dir::Etc::sourceparts",os.path.join(self.testdir,"sources.list.d")) v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v,datadir=self.testdir) d.fromDist = "warty" d.toDist = "hoary" d.openCache(lock=False) res = d.updateSourcesList() self.assert_(res == True) self._verifySources(""" # main repo deb http://old-releases.ubuntu.com/ubuntu hoary main restricted multiverse universe deb-src http://old-releases.ubuntu.com/ubuntu hoary main restricted multiverse deb http://old-releases.ubuntu.com/ubuntu hoary-security main restricted """)
def testEOL2SupportedUpgrade(self): " test upgrade from a EOL release to a supported release " os.environ["LANG"] = "C" v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v,datadir=self.testdir) shutil.copy(os.path.join(self.testdir,"sources.list.EOL2Supported"), os.path.join(self.testdir,"sources.list")) apt_pkg.config.set("Dir::Etc::sourceparts",os.path.join(self.testdir,"sources.list.d")) v = DistUpgradeViewNonInteractive() d = DistUpgradeController(v,datadir=self.testdir) d.fromDist = "gutsy" d.toDist = "hardy" d.openCache(lock=False) res = d.updateSourcesList() self.assert_(res == True) self._verifySources(""" # main repo deb http://archive.ubuntu.com/ubuntu hardy main restricted multiverse universe deb-src http://archive.ubuntu.com/ubuntu hardy main restricted multiverse deb http://archive.ubuntu.com/ubuntu hardy-security main restricted """)
class testPreRequists(unittest.TestCase): " this test the prerequists fetching " testdir = os.path.abspath("./data-sources-list-test/") def setUp(self): apt_pkg.config.set("Dir::Etc",self.testdir) apt_pkg.config.set("Dir::Etc::sourceparts",os.path.join(self.testdir,"sources.list.d")) self.dc = DistUpgradeController(DistUpgradeView(), datadir=self.testdir) def testPreReqSourcesListAddingSimple(self): " test adding the prerequists when a mirror is known " shutil.copy(os.path.join(self.testdir,"sources.list.in"), os.path.join(self.testdir,"sources.list")) template = os.path.join(self.testdir,"prerequists-sources.list.in") out = os.path.join(self.testdir,"sources.list.d", "prerequists-sources.list") self.dc._addPreRequistsSourcesList(template, out) self.assert_(os.path.getsize(out)) self._verifySources(out, """ deb http://old-releases.ubuntu.com/ubuntu/ feisty-backports main/debian-installer """) def testPreReqSourcesListAddingNoMultipleIdenticalLines(self): """ test adding the prerequists and ensure that no multiple identical lines are added """ shutil.copy(os.path.join(self.testdir,"sources.list.no_archive_u_c"), os.path.join(self.testdir,"sources.list")) template = os.path.join(self.testdir,"prerequists-sources.list.in") out = os.path.join(self.testdir,"sources.list.d", "prerequists-sources.list") self.dc._addPreRequistsSourcesList(template, out) self.assert_(os.path.getsize(out)) self._verifySources(out, """ deb http://old-releases.ubuntu.com/ubuntu/ feisty-backports main/debian-installer """) def testVerifyBackportsNotFound(self): " test the backport verification " # only minimal stuff in sources.list to speed up tests shutil.copy(os.path.join(self.testdir,"sources.list.minimal"), os.path.join(self.testdir,"sources.list")) tmpdir = tempfile.mkdtemp() # unset sourceparts apt_pkg.config.set("Dir::Etc::sourceparts", tmpdir) # write empty status file open(tmpdir+"/status","w") os.makedirs(tmpdir+"/lists/partial") apt_pkg.config.set("Dir::State", tmpdir) apt_pkg.config.set("Dir::State::status", tmpdir+"/status") self.dc.openCache(lock=False) exp = False try: res = self.dc._verifyBackports() print res except NoBackportsFoundException: exp = True self.assert_(exp == True) def disabled__because_of_jaunty_EOL_testVerifyBackportsValid(self): " test the backport verification " # only minimal stuff in sources.list to speed up tests shutil.copy(os.path.join(self.testdir,"sources.list.minimal"), os.path.join(self.testdir,"sources.list")) tmpdir = tempfile.mkdtemp() #apt_pkg.config.set("Debug::pkgAcquire::Auth","true") #apt_pkg.config.set("Debug::Acquire::gpgv","true") apt_pkg.config.set("APT::GPGV::TrustedKeyring",self.testdir+"/trusted.gpg") # set sourceparts apt_pkg.config.set("Dir::Etc::sourceparts", tmpdir) template = os.path.join(self.testdir,"prerequists-sources.list.in") out = os.path.join(tmpdir,"prerequists-sources.list") # write empty status file open(tmpdir+"/status","w") os.makedirs(tmpdir+"/lists/partial") apt_pkg.config.set("Dir::State", tmpdir) apt_pkg.config.set("Dir::State::status", tmpdir+"/status") self.dc._addPreRequistsSourcesList(template, out) self.dc.openCache(lock=False) res = self.dc._verifyBackports() self.assert_(res == True) def disabled__because_of_jaunty_EOL_testVerifyBackportsNoValidMirror(self): " test the backport verification with no valid mirror " # only minimal stuff in sources.list to speed up tests shutil.copy(os.path.join(self.testdir,"sources.list.no_valid_mirror"), os.path.join(self.testdir,"sources.list")) tmpdir = tempfile.mkdtemp() #apt_pkg.config.set("Debug::pkgAcquire::Auth","true") #apt_pkg.config.set("Debug::Acquire::gpgv","true") apt_pkg.config.set("APT::GPGV::TrustedKeyring",self.testdir+"/trusted.gpg") # set sourceparts apt_pkg.config.set("Dir::Etc::sourceparts", tmpdir) template = os.path.join(self.testdir,"prerequists-sources.list.in.no_archive_falllback") out = os.path.join(tmpdir,"prerequists-sources.list") # write empty status file open(tmpdir+"/status","w") os.makedirs(tmpdir+"/lists/partial") apt_pkg.config.set("Dir::State", tmpdir) apt_pkg.config.set("Dir::State::status", tmpdir+"/status") self.dc._addPreRequistsSourcesList(template, out, dumb=True) self.dc.openCache(lock=False) res = self.dc._verifyBackports() self.assert_(res == True) def disabled__because_of_jaunty_EOL_testVerifyBackportsNoValidMirror2(self): " test the backport verification with no valid mirror " # only minimal stuff in sources.list to speed up tests shutil.copy(os.path.join(self.testdir,"sources.list.no_valid_mirror"), os.path.join(self.testdir,"sources.list")) tmpdir = tempfile.mkdtemp() #apt_pkg.config.set("Debug::pkgAcquire::Auth","true") #apt_pkg.config.set("Debug::Acquire::gpgv","true") apt_pkg.config.set("APT::GPGV::TrustedKeyring",self.testdir+"/trusted.gpg") # set sourceparts apt_pkg.config.set("Dir::Etc::sourceparts", tmpdir) template = os.path.join(self.testdir,"prerequists-sources.list.in.broken") out = os.path.join(tmpdir,"prerequists-sources.list") # write empty status file open(tmpdir+"/status","w") os.makedirs(tmpdir+"/lists/partial") apt_pkg.config.set("Dir::State", tmpdir) apt_pkg.config.set("Dir::State::status", tmpdir+"/status") try: self.dc._addPreRequistsSourcesList(template, out, dumb=False) self.dc.openCache(lock=False) self.dc._verifyBackports() except NoBackportsFoundException: exp = True self.assert_(exp == True) def _verifySources(self, filename, expected): sources_list = open(filename).read() for l in expected.split("\n"): if l: self.assert_(l in sources_list, "expected entry '%s' in '%s' missing, got:\n%s" % (l, filename, open(filename).read()))
def setUp(self): apt_pkg.config.set("Dir::Etc",self.testdir) apt_pkg.config.set("Dir::Etc::sourceparts",os.path.join(self.testdir,"sources.list.d")) self.dc = DistUpgradeController(DistUpgradeView(), datadir=self.testdir)
class testPreRequists(unittest.TestCase): " this test the prerequists fetching " testdir = os.path.abspath(CURDIR + "/data-sources-list-test/") orig_etc = '' orig_sourceparts = '' orig_state = '' orig_status = '' orig_trusted = '' def setUp(self): self.orig_etc = apt_pkg.config.get("Dir::Etc") self.orig_sourceparts = apt_pkg.config.get("Dir::Etc::sourceparts") self.orig_state = apt_pkg.config.get("Dir::State") self.orig_status = apt_pkg.config.get("Dir::State::status") self.orig_trusted = apt_pkg.config.get("Dir::Etc::trusted") apt_pkg.config.set("Dir::Etc", self.testdir) apt_pkg.config.set("Dir::Etc::sourceparts", os.path.join(self.testdir, "sources.list.d")) apt_pkg.config.set("APT::Default-Release", "") self.dc = DistUpgradeController(DistUpgradeView(), datadir=self.testdir) def tearDown(self): apt_pkg.config.set("Dir::Etc", self.orig_etc) apt_pkg.config.set("Dir::Etc::sourceparts", self.orig_sourceparts) apt_pkg.config.set("Dir::State", self.orig_state) apt_pkg.config.set("Dir::State::status", self.orig_status) apt_pkg.config.set("Dir::Etc::trusted", self.orig_trusted) def testPreReqSourcesListAddingSimple(self): " test adding the prerequists when a mirror is known " shutil.copy(os.path.join(self.testdir, "sources.list.in"), os.path.join(self.testdir, "sources.list")) template = os.path.join(self.testdir, "prerequists-sources.list.in") out = os.path.join(self.testdir, "sources.list.d", "prerequists-sources.list") self.dc._addPreRequistsSourcesList(template, out) self.assertTrue(os.path.getsize(out)) self._verifySources( out, "\n" "deb http://old-releases.ubuntu.com/ubuntu/ " "feisty-backports main/debian-installer\n" "\n") def testPreReqSourcesListAddingNoMultipleIdenticalLines(self): """ test adding the prerequists and ensure that no multiple identical lines are added """ shutil.copy(os.path.join(self.testdir, "sources.list.no_archive_u_c"), os.path.join(self.testdir, "sources.list")) template = os.path.join(self.testdir, "prerequists-sources.list.in") out = os.path.join(self.testdir, "sources.list.d", "prerequists-sources.list") self.dc._addPreRequistsSourcesList(template, out) self.assertTrue(os.path.getsize(out)) self._verifySources( out, "\n" "deb http://old-releases.ubuntu.com/ubuntu/ " "feisty-backports main/debian-installer\n" "\n") def testVerifyBackportsNotFound(self): " test the backport verification " # only minimal stuff in sources.list to speed up tests shutil.copy(os.path.join(self.testdir, "sources.list.minimal"), os.path.join(self.testdir, "sources.list")) tmpdir = tempfile.mkdtemp() # unset sourceparts apt_pkg.config.set("Dir::Etc::sourceparts", tmpdir) # write empty status file with open(tmpdir + "/status", "w") as f: f os.makedirs(tmpdir + "/lists/partial") apt_pkg.config.set("Dir::State", tmpdir) apt_pkg.config.set("Dir::State::status", tmpdir + "/status") apt_pkg.config.clear("APT::Update::Post-Invoke-Success") self.dc.openCache(lock=False) exp = False try: res = self.dc._verifyBackports() print(res) except NoBackportsFoundException: exp = True self.assertTrue(exp) def disabled__as_jaunty_is_EOL_testVerifyBackportsValid(self): " test the backport verification " # only minimal stuff in sources.list to speed up tests shutil.copy(os.path.join(self.testdir, "sources.list.minimal"), os.path.join(self.testdir, "sources.list")) tmpdir = tempfile.mkdtemp() #apt_pkg.config.set("Debug::pkgAcquire::Auth","true") #apt_pkg.config.set("Debug::Acquire::gpgv","true") apt_pkg.config.set("Dir::Etc::trusted", self.testdir + "/trusted.gpg") # set sourceparts apt_pkg.config.set("Dir::Etc::sourceparts", tmpdir) template = os.path.join(self.testdir, "prerequists-sources.list.in") out = os.path.join(tmpdir, "prerequists-sources.list") # write empty status file with open(tmpdir + "/status", "w") as f: f os.makedirs(tmpdir + "/lists/partial") apt_pkg.config.set("Dir::State", tmpdir) apt_pkg.config.set("Dir::State::status", tmpdir + "/status") self.dc._addPreRequistsSourcesList(template, out) self.dc.openCache(lock=False) res = self.dc._verifyBackports() self.assertTrue(res) def disabled__as_jaunty_is_EOL_testVerifyBackportsNoValidMirror(self): " test the backport verification with no valid mirror " # only minimal stuff in sources.list to speed up tests shutil.copy(os.path.join(self.testdir, "sources.list.no_valid_mirror"), os.path.join(self.testdir, "sources.list")) tmpdir = tempfile.mkdtemp() #apt_pkg.config.set("Debug::pkgAcquire::Auth","true") #apt_pkg.config.set("Debug::Acquire::gpgv","true") apt_pkg.config.set("Dir::Etc::trusted", self.testdir + "/trusted.gpg") # set sourceparts apt_pkg.config.set("Dir::Etc::sourceparts", tmpdir) template = os.path.join( self.testdir, "prerequists-sources.list.in.no_archive_falllback") out = os.path.join(tmpdir, "prerequists-sources.list") # write empty status file with open(tmpdir + "/status", "w") as f: f os.makedirs(tmpdir + "/lists/partial") apt_pkg.config.set("Dir::State", tmpdir) apt_pkg.config.set("Dir::State::status", tmpdir + "/status") self.dc._addPreRequistsSourcesList(template, out, dumb=True) self.dc.openCache(lock=False) res = self.dc._verifyBackports() self.assertTrue(res) def disabled__as_jaunty_is_EOL_testVerifyBackportsNoValidMirror2(self): " test the backport verification with no valid mirror " # only minimal stuff in sources.list to speed up tests shutil.copy(os.path.join(self.testdir, "sources.list.no_valid_mirror"), os.path.join(self.testdir, "sources.list")) tmpdir = tempfile.mkdtemp() #apt_pkg.config.set("Debug::pkgAcquire::Auth","true") #apt_pkg.config.set("Debug::Acquire::gpgv","true") apt_pkg.config.set("Dir::Etc::trusted", self.testdir + "/trusted.gpg") # set sourceparts apt_pkg.config.set("Dir::Etc::sourceparts", tmpdir) template = os.path.join(self.testdir, "prerequists-sources.list.in.broken") out = os.path.join(tmpdir, "prerequists-sources.list") # write empty status file with open(tmpdir + "/status", "w") as f: f os.makedirs(tmpdir + "/lists/partial") apt_pkg.config.set("Dir::State", tmpdir) apt_pkg.config.set("Dir::State::status", tmpdir + "/status") try: self.dc._addPreRequistsSourcesList(template, out, dumb=False) self.dc.openCache(lock=False) self.dc._verifyBackports() except NoBackportsFoundException: exp = True self.assertTrue(exp) def _verifySources(self, filename, expected): with open(filename) as f: sources_list = f.read() for l in expected.split("\n"): if l: self.assertTrue( l in sources_list, "expected entry '%s' in '%s' missing, " "got:\n%s" % (l, filename, sources_list))