Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openSUSE-release-tools for openSUSE:Factory checked in at 2022-03-05 14:44:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old) and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.1958 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools" Sat Mar 5 14:44:38 2022 rev:389 rq:959580 version:20220304.1479a628 Changes: -------- --- /work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes 2022-03-04 20:20:53.632681528 +0100 +++ /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.1958/openSUSE-release-tools.changes 2022-03-05 14:45:20.839730145 +0100 @@ -1,0 +2,39 @@ +Fri Mar 04 13:19:41 UTC 2022 - opensuse-releaset...@opensuse.org + +- Update to version 20220304.1479a628: + * pkglistgen: Don't exit 1 if we skip weakremovers due to restarted builds + +------------------------------------------------------------------- +Fri Mar 04 11:52:40 UTC 2022 - opensuse-releaset...@opensuse.org + +- Update to version 20220304.a0d68e4b: + * staging-installcheck: Don't exit 1 if there is a problem found + +------------------------------------------------------------------- +Fri Mar 04 11:34:48 UTC 2022 - opensuse-releaset...@opensuse.org + +- Update to version 20220304.93564783: + * pkglistgen: Fix invalid import + +------------------------------------------------------------------- +Fri Mar 04 11:12:11 UTC 2022 - opensuse-releaset...@opensuse.org + +- Update to version 20220304.57322b23: + * pkglistgen: Deprecate scope 'all' + +------------------------------------------------------------------- +Fri Mar 04 11:04:48 UTC 2022 - opensuse-releaset...@opensuse.org + +- Update to version 20220304.ebe2c528: + * tests: Fix api_tests to mock attribute not mtime + * tests: Create OSRT:FreezeTime for all tests + * osclib: Add an helpful error on failed attribute save + * Make frozenage less reliant on changing _frozenlinks + +------------------------------------------------------------------- +Fri Mar 04 10:34:43 UTC 2022 - opensuse-releaset...@opensuse.org + +- Update to version 20220304.986ad21b: + * docs: Add note that the origin manager is unmaintained + +------------------------------------------------------------------- Old: ---- openSUSE-release-tools-20220303.003f0105.obscpio New: ---- openSUSE-release-tools-20220304.1479a628.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openSUSE-release-tools.spec ++++++ --- /var/tmp/diff_new_pack.I20h3t/_old 2022-03-05 14:45:21.519730317 +0100 +++ /var/tmp/diff_new_pack.I20h3t/_new 2022-03-05 14:45:21.527730319 +0100 @@ -20,7 +20,7 @@ %define source_dir openSUSE-release-tools %define announcer_filename factory-package-news Name: openSUSE-release-tools -Version: 20220303.003f0105 +Version: 20220304.1479a628 Release: 0 Summary: Tools to aid in staging and release work for openSUSE/SUSE License: GPL-2.0-or-later AND MIT ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.I20h3t/_old 2022-03-05 14:45:21.575730331 +0100 +++ /var/tmp/diff_new_pack.I20h3t/_new 2022-03-05 14:45:21.575730331 +0100 @@ -1,7 +1,7 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param> - <param name="changesrevision">003f010579af96ef6ffe09b700a50661ed29a9da</param> + <param name="changesrevision">e3f0a13b96dd1a69f70b7fb5884176b3bf142646</param> </service> </servicedata> ++++++ openSUSE-release-tools-20220303.003f0105.obscpio -> openSUSE-release-tools-20220304.1479a628.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220303.003f0105/dist/obs/OSRT:FreezeTime.xml new/openSUSE-release-tools-20220304.1479a628/dist/obs/OSRT:FreezeTime.xml --- old/openSUSE-release-tools-20220303.003f0105/dist/obs/OSRT:FreezeTime.xml 1970-01-01 01:00:00.000000000 +0100 +++ new/openSUSE-release-tools-20220304.1479a628/dist/obs/OSRT:FreezeTime.xml 2022-03-04 14:18:20.000000000 +0100 @@ -0,0 +1,5 @@ +<definition name="FreezeTime" namespace="OSRT"> + <description>Date and time of the last call of freeze (updating _frozenlinks)</description> + <count>1</count> + <modifiable_by role="maintainer"/> +</definition> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220303.003f0105/docs/origin-manager.md new/openSUSE-release-tools-20220304.1479a628/docs/origin-manager.md --- old/openSUSE-release-tools-20220303.003f0105/docs/origin-manager.md 2022-03-03 18:03:46.000000000 +0100 +++ new/openSUSE-release-tools-20220304.1479a628/docs/origin-manager.md 2022-03-04 14:18:20.000000000 +0100 @@ -1,5 +1,7 @@ # Origin Manager +<span style="color:red">Note that the Origin Manager is unmaintained and considered mostly obsolete in its current form by https://www.suse.com/c/closing-the-leap-gap-src/</span> + The primary function of origin manager is, as the name implies, to _manage_ the _origin_ of packages. In other words to keep track of from what project a package originates, submit updates, review requests to detect origin changes, and enforce origin specific policies like adding appropriate reviews. The primary configuration for all parts of the tool is the `OSRT:OriginConfig` attribute to be placed on the target project. Once the config is created all relevant caches, listeners, and cron jobs will automatically include the project. The only exception is the `origin-manager` user should be added as a project _reviewer_ in order to activate the review portion of the tool. Conversely either removing the config or locking the project will disable all services. Locking the project will preserve the caches used by the web interface, but not update them which allows for archived viewing. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220303.003f0105/gocd/pkglistgen.opensuse.gocd.yaml new/openSUSE-release-tools-20220304.1479a628/gocd/pkglistgen.opensuse.gocd.yaml --- old/openSUSE-release-tools-20220303.003f0105/gocd/pkglistgen.opensuse.gocd.yaml 2022-03-03 18:03:46.000000000 +0100 +++ new/openSUSE-release-tools-20220304.1479a628/gocd/pkglistgen.opensuse.gocd.yaml 2022-03-04 14:18:20.000000000 +0100 @@ -49,22 +49,22 @@ - repo-checker tasks: - script: | - python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:PowerPC --only-release-packages - python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:PowerPC + python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:PowerPC -s target --only-release-packages + python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:PowerPC -s target openSUSE_Factory_zSystems: resources: - repo-checker tasks: - script: | - python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:zSystems --only-release-packages - python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:zSystems + python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:zSystems -s target --only-release-packages + python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:zSystems -s target openSUSE_Factory_RISCV: resources: - repo-checker tasks: - script: | - python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:RISCV --only-release-packages - python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:RISCV + python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:RISCV -s target --only-release-packages + python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:RISCV -s target Update.Repos.Factory: group: Factory.pkglistgen lock_behavior: unlockWhenFinished diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220303.003f0105/gocd/pkglistgen.opensuse.gocd.yaml.erb new/openSUSE-release-tools-20220304.1479a628/gocd/pkglistgen.opensuse.gocd.yaml.erb --- old/openSUSE-release-tools-20220303.003f0105/gocd/pkglistgen.opensuse.gocd.yaml.erb 2022-03-03 18:03:46.000000000 +0100 +++ new/openSUSE-release-tools-20220304.1479a628/gocd/pkglistgen.opensuse.gocd.yaml.erb 2022-03-04 14:18:20.000000000 +0100 @@ -22,6 +22,8 @@ if project.size > 1 options=" -s #{project[1]}" name = name + "_#{project[1]}" + else + options=" -s target" end -%> <%= name %>: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220303.003f0105/osclib/conf.py new/openSUSE-release-tools-20220304.1479a628/osclib/conf.py --- old/openSUSE-release-tools-20220303.003f0105/osclib/conf.py 2022-03-03 18:03:46.000000000 +0100 +++ new/openSUSE-release-tools-20220304.1479a628/osclib/conf.py 2022-03-04 14:18:20.000000000 +0100 @@ -94,7 +94,6 @@ # No special packages since they will pass through SLE first. 'splitter-special-packages': '', 'pkglistgen-archs': 'x86_64', - 'pkglistgen-scopes': 'target rings staging', 'pkglistgen-locales-from': 'openSUSE.product', 'pkglistgen-delete-kiwis-rings': 'openSUSE-ftp-ftp-x86_64.kiwi openSUSE-cd-mini-x86_64.kiwi', 'pkglistgen-delete-kiwis-staging': 'openSUSE-ftp-ftp-x86_64.kiwi openSUSE-cd-mini-x86_64.kiwi', @@ -145,18 +144,6 @@ 'repo_checker-project-skip': 'True', '_priority': '101', }, - r'openSUSE:(?P<project>Jump:(?P<version>[\d.]+))$': { - 'product': 'openSUSE.product', - 'openqa': 'https://openqa.opensuse.org', - 'lock-ns': 'openSUSE', - 'main-repo': 'standard', - 'pseudometa_package': 'openSUSE:%(project)s:Staging/dashboard', - 'download-baseurl': 'http://download.opensuse.org/distribution/leap/%(version)s/', - 'download-baseurl-update': 'http://download.opensuse.org/update/leap/%(version)s/', - 'pkglistgen-archs': 'x86_64 aarch64 ppc64le s390x', - 'pkglistgen-scopes': 'target', - 'pkglistgen-locales-from': 'openSUSE.product', - }, # Allows devel projects to utilize tools that require config, but not # complete StagingAPI support. r'(?P<project>.*$)': { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220303.003f0105/osclib/core.py new/openSUSE-release-tools-20220304.1479a628/osclib/core.py --- old/openSUSE-release-tools-20220303.003f0105/osclib/core.py 2022-03-03 18:03:46.000000000 +0100 +++ new/openSUSE-release-tools-20220304.1479a628/osclib/core.py 2022-03-04 14:18:20.000000000 +0100 @@ -1,9 +1,9 @@ from collections import namedtuple -from datetime import datetime -from datetime import timezone +from datetime import datetime, timezone from dateutil.parser import parse as date_parse import re import socket +import logging from lxml import etree as ET from urllib.error import HTTPError @@ -452,7 +452,12 @@ # The OBS API of attributes is super strange, POST to update. url = makeurl(apiurl, list(filter(None, ['source', project, package, '_attribute']))) - http_POST(url, data=ET.tostring(root)) + try: + http_POST(url, data=ET.tostring(root)) + except HTTPError as e: + if e.code == 404: + logging.error(f"Saving attribute {namespace}:{name} to {project} failed. You may need to create the type on your instance.") + raise e def attribute_value_delete(apiurl, project, name, namespace='OSRT', package=None): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220303.003f0105/osclib/freeze_command.py new/openSUSE-release-tools-20220304.1479a628/osclib/freeze_command.py --- old/openSUSE-release-tools-20220303.003f0105/osclib/freeze_command.py 2022-03-03 18:03:46.000000000 +0100 +++ new/openSUSE-release-tools-20220304.1479a628/osclib/freeze_command.py 2022-03-04 14:18:20.000000000 +0100 @@ -1,7 +1,9 @@ import time +from datetime import datetime, timezone from urllib.error import HTTPError from lxml import etree as ET import osc.core +from osclib.core import attribute_value_save MAX_FROZEN_AGE = 6.5 @@ -197,6 +199,7 @@ url = self.api.makeurl(['source', self.prj, '_project', '_frozenlinks'], {'meta': '1'}) self.api.retried_PUT(url, ET.tostring(flink)) + attribute_value_save(self.api.apiurl, self.prj, 'FreezeTime', datetime.now(timezone.utc).isoformat()) def receive_sources(self, prj, sources, flink): url = self.api.makeurl(['source', prj], {'view': 'info', 'nofilename': '1'}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220303.003f0105/osclib/stagingapi.py new/openSUSE-release-tools-20220304.1479a628/osclib/stagingapi.py --- old/openSUSE-release-tools-20220303.003f0105/osclib/stagingapi.py 2022-03-03 18:03:46.000000000 +0100 +++ new/openSUSE-release-tools-20220304.1479a628/osclib/stagingapi.py 2022-03-04 14:18:20.000000000 +0100 @@ -879,7 +879,14 @@ :param project: project to check :return age in days(float) of the last update """ - root = ET.fromstring(self._fetch_project_meta(project)) + freezetime = attribute_value_load(self.apiurl, project, 'FreezeTime') + if freezetime: + freezetime = datetime.fromisoformat(freezetime) + tz_info = freezetime.tzinfo + return (datetime.now(tz_info) - freezetime).total_seconds() / 3600 / 24 + # fallback: old method + url = self.makeurl(['source', project, '_project'], {'meta': '1'}) + root = ET.parse(http_GET(url)) for entry in root.findall('entry'): if entry.get('name') == '_frozenlinks': return (time.time() - float(entry.get('mtime'))) / 3600 / 24 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220303.003f0105/pkglistgen/cli.py new/openSUSE-release-tools-20220304.1479a628/pkglistgen/cli.py --- old/openSUSE-release-tools-20220303.003f0105/pkglistgen/cli.py 2022-03-03 18:03:46.000000000 +0100 +++ new/openSUSE-release-tools-20220304.1479a628/pkglistgen/cli.py 2022-03-04 14:18:20.000000000 +0100 @@ -5,6 +5,7 @@ import cmdln import os import re + import ToolBase import traceback import logging @@ -17,7 +18,7 @@ class CommandLineInterface(ToolBase.CommandLineInterface): - SCOPES = ['all', 'target', 'rings', 'staging'] + SCOPES = ['target', 'rings', 'staging'] def __init__(self, *args, **kwargs): ToolBase.CommandLineInterface.__init__(self, args, kwargs) @@ -64,8 +65,9 @@ opts.project = match.group(1) elif not opts.project: raise ValueError('project is required') - elif not opts.scope: - opts.scope = ['all'] + + if not opts.scope: + raise ValueError('--scope or --staging required') apiurl = conf.config['apiurl'] Config(apiurl, opts.project) @@ -85,10 +87,6 @@ if apiurl.find('opensuse.org') > 0: os.environ['OBS_NAME'] = 'build.opensuse.org' - # special case for all - if opts.scope == ['all']: - opts.scope = target_config.get('pkglistgen-scopes', 'target').split(' ') - self.error_occured = False def solve_project(project, scope): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220303.003f0105/pkglistgen/tool.py new/openSUSE-release-tools-20220304.1479a628/pkglistgen/tool.py --- old/openSUSE-release-tools-20220303.003f0105/pkglistgen/tool.py 2022-03-03 18:03:46.000000000 +0100 +++ new/openSUSE-release-tools-20220304.1479a628/pkglistgen/tool.py 2022-03-04 14:18:20.000000000 +0100 @@ -36,6 +36,10 @@ CACHEDIR = CacheManager.directory('repository-meta') +class MismatchedRepoException(Exception): + """raised on repos that restarted building""" + + class PkgListGen(ToolBase.ToolBase): def __init__(self): @@ -225,7 +229,7 @@ continue s = f'repo-{project}-{reponame}-{arch}-{state}.solv' if not repo.add_solv(s): - raise Exception('failed to add repo {}/{}/{}'.format(project, reponame, arch)) + raise MismatchedRepoException('failed to add repo {}/{}/{}'.format(project, reponame, arch)) for solvable in repo.solvables_iter(): if ignore_conflicts: solvable.unset(solv.SOLVABLE_CONFLICTS) @@ -428,7 +432,7 @@ fn = f'repo-{project}-{repo}-{arch}-{state}.solv' r = pool.add_repo('/'.join([project, repo])) if not r.add_solv(fn): - raise Exception('failed to add repo {}/{}/{}.'.format(project, repo, arch)) + raise MismatchedRepoException('failed to add repo {}/{}/{}.'.format(project, repo, arch)) pool.createwhatprovides() @@ -580,10 +584,10 @@ if self.dry_run: package = Package(path) for i in package.get_diff(): - print(''.join(i)) + logging.info(''.join(i)) else: # No proper API function to perform the same operation. - print(subprocess.check_output( + logging.debug(subprocess.check_output( ' '.join(['cd', path, '&&', 'osc', 'addremove']), shell=True, encoding='utf-8')) package = Package(path) package.commit(msg='Automatic update', skip_local_service_run=True) @@ -602,7 +606,7 @@ self.all_architectures = target_config.get('pkglistgen-archs').split(' ') self.use_newest_version = str2bool(target_config.get('pkglistgen-use-newest-version', 'False')) self.repos = self.expand_repos(project, main_repo) - print('[{}] {}/{}: update and solve'.format(scope, project, main_repo)) + logging.debug('[{}] {}/{}: update and solve'.format(scope, project, main_repo)) group = target_config.get('pkglistgen-group', '000package-groups') product = target_config.get('pkglistgen-product', '000product') @@ -615,13 +619,13 @@ if not self.dry_run: undelete_package(api.apiurl, project, product, 'revive') # TODO disable build. - print('{} undeleted, skip dvd until next cycle'.format(product)) + logging.info('{} undeleted, skip dvd until next cycle'.format(product)) return elif not force: root = ET.fromstringlist(show_results_meta(api.apiurl, project, product, repository=[main_repo], multibuild=True)) if len(root.xpath('result[@state="building"]')) or len(root.xpath('result[@state="dirty"]')): - print('{}/{} build in progress'.format(project, product)) + logging.info('{}/{} build in progress'.format(project, product)) return drop_list = api.item_exists(project, oldrepos) @@ -632,7 +636,7 @@ if packages.find('entry[@name="{}"]'.format(release)) is None: if not self.dry_run: undelete_package(api.apiurl, project, release, 'revive') - print('{} undeleted, skip dvd until next cycle'.format(release)) + logging.info('{} undeleted, skip dvd until next cycle'.format(release)) return # Cache dir specific to hostname and project. @@ -654,7 +658,7 @@ for package in checkout_list: if no_checkout: - print('Skipping checkout of {}/{}'.format(project, package)) + logging.debug('Skipping checkout of {}/{}'.format(project, package)) continue checkout_package(api.apiurl, project, package, expand_link=True, prj_dir=cache_dir, outdir=os.path.join(cache_dir, package)) @@ -668,7 +672,7 @@ file_utils.change_extension(product_dir, '.spec.in', '.spec') file_utils.change_extension(product_dir, '.product.in', '.product') - print('-> do_update') + logging.debug('-> do_update') # make sure we only calculcate existant architectures self.filter_architectures(target_archs(api.apiurl, project, main_repo)) self.update_repos(self.filtered_architectures) @@ -688,19 +692,23 @@ if drop_list and not only_release_packages: weakremovers_file = os.path.join(release_dir, 'weakremovers.inc') - self.create_weakremovers(project, target_config, oldrepos_dir, output=open(weakremovers_file, 'w')) + try: + self.create_weakremovers(project, target_config, oldrepos_dir, output=open(weakremovers_file, 'w')) + except MismatchedRepoException: + logging.error("Failed to create weakremovers.inc due to mismatch in repos - project most likey started building again.") + return delete_products = target_config.get('pkglistgen-delete-products', '').split(' ') file_utils.unlink_list(product_dir, delete_products) - print('-> product service') + logging.debug('-> product service') product_version = attribute_value_load(api.apiurl, project, 'ProductVersion') if not product_version: # for stagings the product version doesn't matter (I hope) product_version = '1' for product_file in glob.glob(os.path.join(product_dir, '*.product')): self.replace_product_version(product_file, product_version) - print(subprocess.check_output( + logging.debug(subprocess.check_output( [PRODUCT_SERVICE, product_file, product_dir, project], encoding='utf-8')) for delete_kiwi in target_config.get('pkglistgen-delete-kiwis-{}'.format(scope), '').split(' '): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220303.003f0105/staging-installcheck.py new/openSUSE-release-tools-20220304.1479a628/staging-installcheck.py --- old/openSUSE-release-tools-20220303.003f0105/staging-installcheck.py 2022-03-03 18:03:46.000000000 +0100 +++ new/openSUSE-release-tools-20220304.1479a628/staging-installcheck.py 2022-03-04 14:18:20.000000000 +0100 @@ -379,4 +379,4 @@ result = staging_report.staging(staging) and result if not result: - sys.exit(1) + logging.error("Found problem") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220303.003f0105/tests/OBSLocal.py new/openSUSE-release-tools-20220304.1479a628/tests/OBSLocal.py --- old/openSUSE-release-tools-20220303.003f0105/tests/OBSLocal.py 2022-03-03 18:03:46.000000000 +0100 +++ new/openSUSE-release-tools-20220304.1479a628/tests/OBSLocal.py 2022-03-04 14:18:20.000000000 +0100 @@ -382,6 +382,7 @@ # First ensure the existence of both the target project and the 'Config' attribute type self.create_target() self.create_attribute_type('OSRT', 'Config', 1) + self.create_attribute_type('OSRT', 'FreezeTime', 1) self.remote_config_set(self.initial_config(), replace_all=True) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220303.003f0105/tests/api_tests.py new/openSUSE-release-tools-20220304.1479a628/tests/api_tests.py --- old/openSUSE-release-tools-20220303.003f0105/tests/api_tests.py 2022-03-03 18:03:46.000000000 +0100 +++ new/openSUSE-release-tools-20220304.1479a628/tests/api_tests.py 2022-03-04 14:18:20.000000000 +0100 @@ -1,7 +1,5 @@ - import osc.core - -from mock import MagicMock +from osclib.core import attribute_value_delete, attribute_value_save from . import OBSLocal @@ -181,7 +179,7 @@ self.wf.create_staging('B', freeze=True, rings=1) self.assertLess(self.wf.api.days_since_last_freeze('openSUSE:Factory:Staging:B'), 1) - self.mock_project_meta() + attribute_value_save(self.wf.apiurl, 'openSUSE:Factory:Staging:B', 'FreezeTime', "2021-03-04T10:23:55.127903") self.assertGreater(self.wf.api.days_since_last_freeze('openSUSE:Factory:Staging:B'), 8) def test_frozen_enough(self): @@ -198,16 +196,13 @@ self.wf.create_staging('C', freeze=True, rings=1) self.assertEqual(self.wf.api.prj_frozen_enough('openSUSE:Factory:Staging:C'), True) - self.mock_project_meta() + # pretend it's old + attribute_value_save(self.wf.apiurl, 'openSUSE:Factory:Staging:C', 'FreezeTime', "2021-03-04T10:23:55.127903") self.assertEqual(self.wf.api.prj_frozen_enough('openSUSE:Factory:Staging:C'), False) - def mock_project_meta(self): - body = """<directory name="_project" rev="3" vrev="" srcmd5="9dd1ec5b77a9e953662eb32955e9066a"> - <entry name="_frozenlinks" md5="64127b7a5dabbca0ec2bf04cd04c9195" size="16" mtime="1555000000"/> - <entry name="_meta" md5="cf6fb1eac1a676d6c3707303ae2571ad" size="162" mtime="1555945413"/> - </directory>""" - - self.wf.api._fetch_project_meta = MagicMock(return_value=body) + # test old method (which still shows it's recent) + attribute_value_delete(self.wf.apiurl, 'openSUSE:Factory:Staging:C', 'FreezeTime') + self.assertEqual(self.wf.api.prj_frozen_enough('openSUSE:Factory:Staging:C'), True) def test_move(self): """Test package movement.""" ++++++ openSUSE-release-tools.obsinfo ++++++ --- /var/tmp/diff_new_pack.I20h3t/_old 2022-03-05 14:45:22.255730502 +0100 +++ /var/tmp/diff_new_pack.I20h3t/_new 2022-03-05 14:45:22.271730507 +0100 @@ -1,5 +1,5 @@ name: openSUSE-release-tools -version: 20220303.003f0105 -mtime: 1646327026 -commit: 003f010579af96ef6ffe09b700a50661ed29a9da +version: 20220304.1479a628 +mtime: 1646399900 +commit: 1479a628529da330c8b79c3c72580caa185e4bc9