mirror of
				https://github.com/arcan1s/ahriman.git
				synced 2025-10-31 13:53:41 +00:00 
			
		
		
		
	feat: calculate changes on package addition as well
This commit is contained in:
		| @ -266,6 +266,8 @@ def _set_package_add_parser(root: SubParserAction) -> argparse.ArgumentParser: | |||||||
|                                     "5) and finally you can add package from AUR.", |                                     "5) and finally you can add package from AUR.", | ||||||
|                              formatter_class=_formatter) |                              formatter_class=_formatter) | ||||||
|     parser.add_argument("package", help="package source (base name, path to local files, remote URL)", nargs="+") |     parser.add_argument("package", help="package source (base name, path to local files, remote URL)", nargs="+") | ||||||
|  |     parser.add_argument("--changes", help="calculate changes from the latest known commit if available", | ||||||
|  |                         action=argparse.BooleanOptionalAction, default=True) | ||||||
|     parser.add_argument("--dependencies", help="process missing package dependencies", |     parser.add_argument("--dependencies", help="process missing package dependencies", | ||||||
|                         action=argparse.BooleanOptionalAction, default=True) |                         action=argparse.BooleanOptionalAction, default=True) | ||||||
|     parser.add_argument("-e", "--exit-code", help="return non-zero exit status if result is empty", action="store_true") |     parser.add_argument("-e", "--exit-code", help="return non-zero exit status if result is empty", action="store_true") | ||||||
| @ -534,8 +536,7 @@ def _set_repo_check_parser(root: SubParserAction) -> argparse.ArgumentParser: | |||||||
|                              description="check for packages updates. Same as repo-update --dry-run --no-manual", |                              description="check for packages updates. Same as repo-update --dry-run --no-manual", | ||||||
|                              formatter_class=_formatter) |                              formatter_class=_formatter) | ||||||
|     parser.add_argument("package", help="filter check by package base", nargs="*") |     parser.add_argument("package", help="filter check by package base", nargs="*") | ||||||
|     parser.add_argument("--changes", help="calculate changes from the latest known commit if available. " |     parser.add_argument("--changes", help="calculate changes from the latest known commit if available", | ||||||
|                                           "Only applicable in dry run mode", |  | ||||||
|                         action=argparse.BooleanOptionalAction, default=True) |                         action=argparse.BooleanOptionalAction, default=True) | ||||||
|     parser.add_argument("--check-files", help="enable or disable checking of broken dependencies " |     parser.add_argument("--check-files", help="enable or disable checking of broken dependencies " | ||||||
|                                               "(e.g. dynamically linked libraries or modules directories)", |                                               "(e.g. dynamically linked libraries or modules directories)", | ||||||
|  | |||||||
| @ -57,6 +57,9 @@ class Add(Handler): | |||||||
|             return |             return | ||||||
|  |  | ||||||
|         packages = application.updates(args.package, aur=False, local=False, manual=True, vcs=False, check_files=False) |         packages = application.updates(args.package, aur=False, local=False, manual=True, vcs=False, check_files=False) | ||||||
|  |         if args.changes:  # generate changes if requested | ||||||
|  |             application.changes(packages) | ||||||
|  |  | ||||||
|         packages = application.with_dependencies(packages, process_dependencies=args.dependencies) |         packages = application.with_dependencies(packages, process_dependencies=args.dependencies) | ||||||
|         packagers = Packagers(args.username, {package.base: package.packager for package in packages}) |         packagers = Packagers(args.username, {package.base: package.packager for package in packages}) | ||||||
|  |  | ||||||
|  | |||||||
| @ -24,6 +24,7 @@ def _default_args(args: argparse.Namespace) -> argparse.Namespace: | |||||||
|         argparse.Namespace: generated arguments for these test cases |         argparse.Namespace: generated arguments for these test cases | ||||||
|     """ |     """ | ||||||
|     args.package = ["ahriman"] |     args.package = ["ahriman"] | ||||||
|  |     args.changes = True | ||||||
|     args.exit_code = False |     args.exit_code = False | ||||||
|     args.increment = True |     args.increment = True | ||||||
|     args.now = False |     args.now = False | ||||||
| @ -82,6 +83,7 @@ def test_run_with_updates(args: argparse.Namespace, configuration: Configuration | |||||||
|     mocker.patch("ahriman.core.repository.Repository.load", return_value=repository) |     mocker.patch("ahriman.core.repository.Repository.load", return_value=repository) | ||||||
|     application_mock = mocker.patch("ahriman.application.application.Application.update", return_value=result) |     application_mock = mocker.patch("ahriman.application.application.Application.update", return_value=result) | ||||||
|     check_mock = mocker.patch("ahriman.application.handlers.Handler.check_if_empty") |     check_mock = mocker.patch("ahriman.application.handlers.Handler.check_if_empty") | ||||||
|  |     changes_mock = mocker.patch("ahriman.application.application.Application.changes") | ||||||
|     updates_mock = mocker.patch("ahriman.application.application.Application.updates", return_value=[package_ahriman]) |     updates_mock = mocker.patch("ahriman.application.application.Application.updates", return_value=[package_ahriman]) | ||||||
|     dependencies_mock = mocker.patch("ahriman.application.application.Application.with_dependencies", |     dependencies_mock = mocker.patch("ahriman.application.application.Application.with_dependencies", | ||||||
|                                      return_value=[package_ahriman]) |                                      return_value=[package_ahriman]) | ||||||
| @ -91,6 +93,7 @@ def test_run_with_updates(args: argparse.Namespace, configuration: Configuration | |||||||
|     Add.run(args, repository_id, configuration, report=False) |     Add.run(args, repository_id, configuration, report=False) | ||||||
|     updates_mock.assert_called_once_with(args.package, |     updates_mock.assert_called_once_with(args.package, | ||||||
|                                          aur=False, local=False, manual=True, vcs=False, check_files=False) |                                          aur=False, local=False, manual=True, vcs=False, check_files=False) | ||||||
|  |     changes_mock.assert_called_once_with([package_ahriman]) | ||||||
|     application_mock.assert_called_once_with([package_ahriman], |     application_mock.assert_called_once_with([package_ahriman], | ||||||
|                                              Packagers(args.username, {package_ahriman.base: "packager"}), |                                              Packagers(args.username, {package_ahriman.base: "packager"}), | ||||||
|                                              bump_pkgrel=args.increment) |                                              bump_pkgrel=args.increment) | ||||||
| @ -99,6 +102,28 @@ def test_run_with_updates(args: argparse.Namespace, configuration: Configuration | |||||||
|     print_mock.assert_called_once_with([package_ahriman], log_fn=pytest.helpers.anyvar(int)) |     print_mock.assert_called_once_with([package_ahriman], log_fn=pytest.helpers.anyvar(int)) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def test_run_no_changes(args: argparse.Namespace, configuration: Configuration, repository: Repository, | ||||||
|  |                         mocker: MockerFixture) -> None: | ||||||
|  |     """ | ||||||
|  |     must skip changes calculation during package addition | ||||||
|  |     """ | ||||||
|  |     args = _default_args(args) | ||||||
|  |     args.now = True | ||||||
|  |     args.changes = False | ||||||
|  |     mocker.patch("ahriman.application.application.Application.add") | ||||||
|  |     mocker.patch("ahriman.core.repository.Repository.load", return_value=repository) | ||||||
|  |     mocker.patch("ahriman.application.application.Application.update") | ||||||
|  |     mocker.patch("ahriman.application.handlers.Handler.check_if_empty") | ||||||
|  |     mocker.patch("ahriman.application.application.Application.updates") | ||||||
|  |     mocker.patch("ahriman.application.application.Application.with_dependencies") | ||||||
|  |     mocker.patch("ahriman.application.application.Application.print_updates") | ||||||
|  |     changes_mock = mocker.patch("ahriman.application.application.Application.changes") | ||||||
|  |  | ||||||
|  |     _, repository_id = configuration.check_loaded() | ||||||
|  |     Add.run(args, repository_id, configuration, report=False) | ||||||
|  |     changes_mock.assert_not_called() | ||||||
|  |  | ||||||
|  |  | ||||||
| def test_run_empty_exception(args: argparse.Namespace, configuration: Configuration, repository: Repository, | def test_run_empty_exception(args: argparse.Namespace, configuration: Configuration, repository: Repository, | ||||||
|                              mocker: MockerFixture) -> None: |                              mocker: MockerFixture) -> None: | ||||||
|     """ |     """ | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user