def get_release_info(self, url: str, is_nightly: bool = False) -> Release: data = None with self.downloader.get_archive( url, self.config.download_root, self.config.download_max_timeout, self.config.download_max_redirects, self.config.download_max_size ) as download: meta = self.extractor.extract_app_metadata(download.filename) info = parse_app_metadata(meta.info_xml, self.config.info_schema, self.config.pre_info_xslt, self.config.info_xslt) if meta.database_xml: validate_database(meta.database_xml, self.config.db_schema, self.config.pre_db_xslt) info_app_id = info['app']['id'] if meta.app_id != info_app_id: msg = 'Archive app folder is %s but info.xml reports id %s' \ % (meta.app_id, info_app_id) raise InvalidAppDirectoryException(msg) release = info['app']['release'] info['app']['release']['is_nightly'] = is_nightly version = release['version'] release['changelog'] = meta.changelog for code, value in meta.changelog.items(): release['changelog'][code] = parse_changelog(value, version, is_nightly) with open(download.filename, 'rb') as f: data = f.read() return info, data
def get_release_info(self, url: str, is_nightly: bool = False) -> Release: data = None with self.downloader.get_archive( url, self.config.download_root, self.config.download_max_timeout, self.config.download_max_redirects, self.config.download_max_size) as download: meta = self.extractor.extract_app_metadata(download.filename) info = parse_app_metadata(meta.info_xml, self.config.info_schema, self.config.pre_info_xslt, self.config.info_xslt) if meta.database_xml: validate_database(meta.database_xml, self.config.db_schema, self.config.pre_db_xslt) info_app_id = info['app']['id'] if meta.app_id != info_app_id: msg = 'Archive app folder is %s but info.xml reports id %s' \ % (meta.app_id, info_app_id) raise InvalidAppDirectoryException(msg) release = info['app']['release'] info['app']['release']['is_nightly'] = is_nightly version = release['version'] release['changelog'] = meta.changelog for code, value in meta.changelog.items(): release['changelog'][code] = parse_changelog( value, version, is_nightly) with open(download.filename, 'rb') as f: data = f.read() return info, data
def test_parse_changelog_nightly(self): file = self._get_contents('data/changelogs/CHANGELOG.md') changelog = parse_changelog(file, '0.4.3', True) expected = self._get_contents('data/changelogs/unreleased.md').strip() self.assertEqual(expected, changelog)
def test_parse_changelog_unstable(self): file = self._get_contents('data/changelogs/CHANGELOG.md') changelog = parse_changelog(file, '0.4.3-beta') expected = self._get_contents('data/changelogs/unreleased.md').strip() self.assertEqual(expected, changelog)
def test_parse_changelog_brackets(self): file = self._get_contents('data/changelogs/CHANGELOG.md') changelog = parse_changelog(file, '0.6.0') expected = self._get_contents('data/changelogs/0.6.0.md').strip() self.assertEqual(expected, changelog)
def test_parse_changelog_not_found(self): file = self._get_contents('data/changelogs/CHANGELOG.md') changelog = parse_changelog(file, '0.3.2') self.assertEqual('', changelog)
def test_parse_changelog_empty(self): changelog = parse_changelog('', '9.0') self.assertEqual('', changelog)