def test_computing_meta_version(self): # 0.1.0 is my version # 1.0.59.1 is first child # 2.0.12 is second child # => 3.1.71.1 self.assertEquals((3, 1, 71, 1), compute_meta_version(dependency_repositories=[ { 'url':self.repo_one, 'package_name' : 'project', }, { 'url' : self.repo_two, 'package_name' : 'secondproject', } ]))
def test_current_branch_is_default_for_deps(self): # 0.1.1 is my version # 1.0.59.2 is first child # 2.0.13 is second child # => 3.1.73.2 check_call(['git', 'checkout', 'testomation'], stdout=PIPE, stderr=PIPE) self.assertEquals((3, 1, 73, 2), compute_meta_version(dependency_repositories=[ { 'url':self.repo_one, }, { 'url' : self.repo_two, } ]))
def test_computing_meta_version_accepts_branch(self): # 0.1.0 is my version (my deps are testomation, but I'm at master!) # 1.0.59.2 is first child # 2.0.13 is second child # => 3.1.72.2 self.assertEquals((3, 1, 72, 2), compute_meta_version(dependency_repositories=[ { 'url':self.repo_one, 'branch' : 'testomation', }, { 'url' : self.repo_two, 'branch' : 'testomation', } ]))
def update_dependency_versions(repositories, control_path, workdir=None, accepted_tag_pattern=None): """ Update control_path (presumably debian/control) with package version collected by parsing debian/controls in dependencies. Also updates with change of my path. If any versioned dependencies are present, replace them too, as well as debian files """ workdir = workdir or os.curdir cfile = ControlFile(filename=control_path) deps_from_repositories = [] current_meta_version = None for package in cfile.get_versioned_dependencies(): if not current_meta_version: current_meta_version = package.version else: assert current_meta_version == package.version, "Versioned packages with different versions, aborting" for repository in repositories: deps = fetch_new_dependencies(repository, workdir) deps_from_repositories.extend(deps) #FIXME: This will download deps again, fix it meta_version = compute_meta_version(repositories, workdir=workdir, accepted_tag_pattern=accepted_tag_pattern) meta_version_string = ".".join(map(str, meta_version)) # also add myself as dependency deps = get_new_dependencies(workdir, accepted_tag_pattern=accepted_tag_pattern) # deps are my actual version; we want to update it to metaversion for dep in deps: dep.version = meta_version_string deps_from_repositories.extend(deps) cfile.replace_dependencies(deps_from_repositories) # if versioned packages present, replace'em if current_meta_version: replace_versioned_debian_files(debian_path=dirname(control_path), original_version=current_meta_version, new_version=meta_version_string, control_file=cfile) cfile.replace_versioned_packages(meta_version_string) cfile.dump(control_path)