def load(self, filename): xmltree = ElementTree.ElementTree() try: xmltree.parse(filename) except IOError as e: raise ConfigurationError( "Could not load juggle.xml from source directory, I expect it to be in '%s'" % filename ) root = xmltree.getroot() if root.tag != "Project": raise ConfigurationError( "The root element in your project configuration is '%s' instead of 'Project'" % root.tag ) self.name = root.find("Name").text if self.name is None or self.name == "": raise ConfigurationError( "The name given in your project configuration (%s) is not valid." % self.local_repository ) try: self.version = version.parse_version(root.find("Version").text) except ValueError as e: raise ConfigurationError( "My parser complained (%s) when processing the version given in your project configuration." % e ) for element in root.findall("Requires/Package"): pack = {} pack["name"] = element.find("Name").text pack_version_element = element.find("Version") pack_version = None if pack_version_element is None: pack_version = "" else: pack_version = pack_version_element.text pack["version"] = version.parse_spec(pack_version) self.required_packages.append(pack) self.content_node = root.find("Content")
def get_publishing_version(self, build_number): return version.parse_version("%s-%s" % (self.version, build_number))
def test_version(): a = '1.0.0#1-rc1' b = parse_version(a) c = parse_version(b) assert a != b assert b == c
def test_bad(): with pytest.raises(ValueError): parse_version('foo')