def test__releases_in_range_first(self): """Test getting first releases in range.""" self._uri({ 'releases.json': gen_releases([(MAJOR, 1, 0)]), }) start = U.UCS_Version((MAJOR, 0, 0)) end = U.UCS_Version((MAJOR, 1, 0)) versions = self.u._releases_in_range(start, end) self.assertEqual([end], versions)
def test__releases_in_range_first(self): """Test getting first releases in range.""" self._uri({ '%d.%d/maintained/%d.%d-%d/' % (MAJOR, 1, MAJOR, 1, 0): '', }) start = U.UCS_Version((MAJOR, 0, 0)) end = U.UCS_Version((MAJOR, 1, 0)) versions = self.u._releases_in_range(start, end) self.assertEqual([end], versions)
def test_get_component_repositories_ARCH_MULTI(self): """ Test component errata repositories with architecture sub directories. onyl last errata is ierated, only first there. """ self._ucr({ 'repository/online/component/a': 'yes', 'repository/online/component/a/%d.%d/erratalevel' % (MAJOR, MINOR): '1', 'repository/online/component/a/%d.%d/erratalevel' % (MAJOR, MINOR + 1): '1', }) self._uri({ '%d.%d/maintained/component/a/%s/Packages.gz' % (MAJOR, MINOR, 'all'): DATA, '%d.%d/maintained/component/a/%s/Packages.gz' % (MAJOR, MINOR, ARCH): DATA, '%d.%d/maintained/component/a-errata1/%s/Packages.gz' % (MAJOR, MINOR, 'all'): DATA, '%d.%d/maintained/component/a-errata1/%s/Packages.gz' % (MAJOR, MINOR, ARCH): DATA, '%d.%d/maintained/component/a/%s/Packages.gz' % (MAJOR, MINOR + 1, 'all'): DATA, '%d.%d/maintained/component/a/%s/Packages.gz' % (MAJOR, MINOR + 1, ARCH): DATA, '%d.%d/maintained/component/a-errata1/%s/Packages.gz' % (MAJOR, MINOR + 1, 'all'): DATA, '%d.%d/maintained/component/a-errata1/%s/Packages.gz' % (MAJOR, MINOR + 1, ARCH): DATA, '%d.%d/maintained/component/a-errata2/%s/Packages.gz' % (MAJOR, MINOR + 1, 'all'): DATA, '%d.%d/maintained/component/a-errata2/%s/Packages.gz' % (MAJOR, MINOR + 1, ARCH): DATA, }) v1 = U.UCS_Version((MAJOR, MINOR, 0)) v2 = U.UCS_Version((MAJOR, MINOR + 1, 0)) r = self.u.get_component_repositories(component='a', versions=(v1, v2)) self.assertEqual( set(( 'deb file:///mock/%d.%d/maintained/component/ a/%s/' % (MAJOR, MINOR, 'all'), 'deb file:///mock/%d.%d/maintained/component/ a/%s/' % (MAJOR, MINOR, ARCH), 'deb file:///mock/%d.%d/maintained/component/ a/%s/' % (MAJOR, MINOR + 1, 'all'), 'deb file:///mock/%d.%d/maintained/component/ a/%s/' % (MAJOR, MINOR + 1, ARCH), 'deb file:///mock/%d.%d/maintained/component/ a-errata1/%s/' % (MAJOR, MINOR + 1, 'all'), 'deb file:///mock/%d.%d/maintained/component/ a-errata1/%s/' % (MAJOR, MINOR + 1, ARCH), )), set(r))
def test_end(self): """Test end version.""" ver = U.UCS_Version((MAJOR, MINOR, PATCH)) result = self.m.list_local_repositories(end=ver) self.assertEqual(len(result), 1) self.assertDeepEqual(result, [_ for _ in self.repos if _[1] <= ver and _[2]])
def test_start(self): """Test start version.""" ver = U.UCS_Version((MAJOR, MINOR + 1, PATCH)) result = self.m.list_local_repositories(start=ver) self.assertEqual(len(result), 2) self.assertDeepEqual(result, [_ for _ in self.repos if _[1] >= ver and _[2]])
def test__iterate_release(self): """Test iterating releases.""" start = U.UCS_Version((3, 0, 0)) end = U.UCS_Version((4, 4, 1)) ver = U.UCSRepoPool5() it = self.u._iterate_release(ver, start, end) self.assertEqual(next(it).mmp, (3, 0, 0)) self.assertEqual(it.send(True).mmp, (4, 0, 0)) self.assertEqual(it.send(True).mmp, (4, 1, 0)) self.assertEqual(it.send(True).mmp, (4, 2, 0)) self.assertEqual(it.send(True).mmp, (4, 3, 0)) self.assertEqual(it.send(False).mmp, (4, 3, 1)) self.assertEqual(it.send(True).mmp, (4, 4, 0)) self.assertEqual(it.send(False).mmp, (4, 4, 1)) with self.assertRaises(StopIteration): self.assertEqual(it.next(), (4, 4, 1))
def test_get_next_version_MAJOR99(self): """Test next major version after 99.""" self._uri({ '%d.%d/maintained/%d.%d-%d/' % (100, 0, 100, 0, 0): '', }) ver = self.u.get_next_version(version=U.UCS_Version((99, MINOR, PATCH))) self.assertEqual(None, ver)
def test_get_next_version_MINOR99(self): """Test next minor version after 99.""" self._uri({ 'releases.json': gen_releases([(MAJOR + 1, 0, 0), (MAJOR, 100, 0)]) }) ver = self.u.get_next_version(version=U.UCS_Version((MAJOR, 99, 0))) self.assertEqual('%d.%d-%d' % (MAJOR + 1, 0, 0), ver)
def test__releases_in_range_current(self): """Test getting releases in range.""" self._uri({ 'releases.json': gen_releases([(MAJOR, MINOR, PATCH)]), }) ver = U.UCS_Version((MAJOR, MINOR, PATCH)) versions = self.u._releases_in_range() self.assertEqual([ver], versions)
def test__get_component_version_full(self): """Test getting component versions in range from MAJOR.MINOR-PATCH.""" self._ucr({ 'repository/online/component/a/version': '%d.%d-%d' % (MAJOR, MINOR, PATCH) }) ver = self.u._get_component_versions('a', None, None) self.assertEqual(set((U.UCS_Version((MAJOR, MINOR, PATCH)), )), ver)
def test__releases_in_range_current(self): """Test getting releases in range.""" self._uri({ '%d.%d/maintained/%d.%d-%d/' % (MAJOR, MINOR, MAJOR, MINOR, 0): '', }) ver = U.UCS_Version((MAJOR, MINOR, 0)) versions = self.u._releases_in_range() self.assertEqual([ver], versions)
def test_get_next_version_PATCH(self): """Test next patch version.""" self._uri({ 'releases.json': gen_releases([(MAJOR, MINOR, PATCH), (MAJOR, MINOR, PATCH + 1)]) }) ver = self.u.get_next_version(version=U.UCS_Version((MAJOR, MINOR, PATCH))) self.assertEqual('%d.%d-%d' % (MAJOR, MINOR, PATCH + 1), ver)
def test_get_next_version_MAJOR(self): """Test next major version.""" self._uri({ '%d.%d/maintained/%d.%d-%d/' % (MAJOR + 1, 0, MAJOR + 1, 0, 0): '', }) ver = self.u.get_next_version(version=U.UCS_Version((MAJOR, MINOR, PATCH))) self.assertEqual('%d.%d-%d' % (MAJOR + 1, 0, 0), ver)
def test_get_next_version_PATCH(self): """Test next patch version.""" self._uri({ '%d.%d/maintained/%d.%d-%d/' % (MAJOR, MINOR, MAJOR, MINOR, PATCH + 1): '', }) ver = self.u.get_next_version(version=U.UCS_Version((MAJOR, MINOR, PATCH))) self.assertEqual('%d.%d-%d' % (MAJOR, MINOR, PATCH + 1), ver)
def test__get_component_version_empty(self): """Test getting component empty versions in range from MAJOR.MINOR-PATCH.""" self._ucr({'repository/online/component/a/version': ''}) self._uri({ '%d.%d/maintained/%d.%d-%d/' % (MAJOR, MINOR, MAJOR, MINOR, PATCH): '', }) ver = U.UCS_Version((MAJOR, MINOR, 0)) # comonent.erratalevel! comp_ver = self.u._get_component_versions('a', start=ver, end=ver) self.assertEqual(set((ver, )), comp_ver)
def test_get_next_version_MINOR99(self): """Test next minor version after 99.""" self._uri({ '%d.%d/maintained/%d.%d-%d/' % (MAJOR, 100, MAJOR, 100, 0): '', '%d.%d/maintained/%d.%d-%d/' % (MAJOR + 1, 0, MAJOR + 1, 0, 0): '', }) ver = self.u.get_next_version(version=U.UCS_Version((MAJOR, 99, 0))) self.assertEqual('%d.%d-%d' % (MAJOR + 1, 0, 0), ver)
def structs(): """Mockups for called scripts.""" server = MockUCSHttpServer('server') struct_r = U.UCSRepoPool5(major=MAJOR, minor=MINOR, patchlevel=PATCH) preup_r = struct_r.path('preup.sh') postup_r = struct_r.path('postup.sh') struct_c = U.UCSRepoPool(major=MAJOR, minor=MINOR, part='%s/component' % (PART, ), patch='c', arch=ARCH) preup_c = struct_c.path('preup.sh') postup_c = struct_c.path('postup.sh') yield (server, struct_r, 'preup', preup_r, 'r_pre') yield (server, struct_r, 'postup', postup_r, 'r_post') yield (server, struct_c, 'preup', preup_c, 'c_pre') yield (server, struct_c, 'postup', postup_c, 'c_post')
def setUp(self): """Create Mirror mockup.""" self.base_dir = mkdtemp() MockConfigRegistry._EXTRA = { 'repository/mirror/basepath': self.base_dir, } self._uri({ '': '', '/': '', 'univention-repository/': '', }) self.m = M.UniventionMirror() repos = ( (U.UCS_Version((MAJOR, MINOR, PATCH)), False), (U.UCS_Version((MAJOR, MINOR, PATCH)), True), (U.UCS_Version((MAJOR, MINOR, PATCH + 1)), False), (U.UCS_Version((MAJOR, MINOR, PATCH + 1)), True), (U.UCS_Version((MAJOR, MINOR + 1, PATCH)), True), (U.UCS_Version((MAJOR, MINOR + 1, PATCH + 1)), True), ) self.repos = [] for ver, maintained in repos: major_minor = U.UCS_Version.FORMAT % ver maint_unmain = maintained and 'maintained' or 'unmaintained' major_minor_patch = U.UCS_Version.FULLFORMAT % ver dirname = os.path.join(self.base_dir, 'mirror', major_minor, maint_unmain, major_minor_patch) M.makedirs(dirname) self.repos.append((dirname, ver, maintained))
def test_get_sh_files_bug27149(self): """Test preup.sh / postup.sh download for non-architecture component.""" server = MockUCSHttpServer('server') struct = U.UCSRepoPoolNoArch(major=MAJOR, minor=MINOR, part='%s/component' % (PART, ), patch='a') preup_path = struct.path('preup.sh') server.mock_add(preup_path, '#!preup_content') postup_path = struct.path('postup.sh') server.mock_add(postup_path, '#!postup_content') repo = ((server, struct), ) gen = U.UniventionUpdater.get_sh_files(repo) self.assertEqual( (server, struct, 'preup', preup_path, '#!preup_content'), gen.next()) self.assertEqual( (server, struct, 'postup', postup_path, '#!postup_content'), gen.next()) self.assertRaises(StopIteration, gen.next)
def test_get_sh_files(self): """Test preup.sh / postup.sh download.""" server = MockUCSHttpServer('server') struct = U.UCSRepoPool5(major=MAJOR, minor=MINOR, part=PART, patchlevel=PATCH, arch=ARCH) preup_path = struct.path('preup.sh') server.mock_add(preup_path, '#!preup_content') postup_path = struct.path('postup.sh') server.mock_add(postup_path, '#!postup_content') repo = ((server, struct), ) gen = U.UniventionUpdater.get_sh_files(repo) self.assertEqual( (server, struct, 'preup', preup_path, '#!preup_content'), gen.next()) self.assertEqual( (server, struct, 'postup', postup_path, '#!postup_content'), gen.next()) self.assertRaises(StopIteration, gen.next)
def test_get_next_version(self): """Test no next version.""" ver = self.u.get_next_version(version=U.UCS_Version((MAJOR, MINOR, PATCH))) self.assertEqual(None, ver)
def setUp(self): """Create Updater mockup.""" self.u = U.UniventionUpdater(check_access=False) self.u.architectures = [ARCH]
def test_current_version(self): """Test current version property.""" ver = self.u.current_version self.assertTrue(isinstance(ver, U.UCS_Version)) self.assertEqual(U.UCS_Version((3, 0, 1)), ver)
def test_get_next_version_MAJOR99(self): """Test next major version after 99.""" self._uri({'releases.json': gen_releases([(99, 0, 0), (100, 0, 0)])}) ver = self.u.get_next_version(version=U.UCS_Version((99, MINOR, PATCH))) self.assertEqual(None, ver)