diff --git a/nix_update/eval.py b/nix_update/eval.py index 9d6f2c5..9fde03d 100644 --- a/nix_update/eval.py +++ b/nix_update/eval.py @@ -57,6 +57,7 @@ class Package: pnpm_deps: str | None yarn_deps: str | None composer_deps: str | None + composer_deps_old: str | None maven_deps: str | None mix_deps: str | None tests: list[str] @@ -185,7 +186,8 @@ def eval_expression( if res.success then res.value.file else false else null; - composer_deps = pkg.composerRepository.outputHash or null; + composer_deps = pkg.composerVendor.outputHash or null; + composer_deps_old = pkg.composerRepository.outputHash or null; npm_deps = pkg.npmDeps.outputHash or null; pnpm_deps = pkg.pnpmDeps.outputHash or null; yarn_deps = pkg.offlineCache.outputHash or null; diff --git a/nix_update/update.py b/nix_update/update.py index 7a78913..31eb781 100644 --- a/nix_update/update.py +++ b/nix_update/update.py @@ -322,6 +322,13 @@ def disable_copystat(): def update_composer_deps_hash(opts: Options, filename: str, current_hash: str) -> None: + target_hash = nix_prefetch(opts, "composerVendor") + replace_hash(filename, current_hash, target_hash) + + +def update_composer_deps_hash_old( + opts: Options, filename: str, current_hash: str +) -> None: target_hash = nix_prefetch(opts, "composerRepository") replace_hash(filename, current_hash, target_hash) @@ -467,6 +474,11 @@ def update(opts: Options) -> Package: if package.composer_deps: update_composer_deps_hash(opts, package.filename, package.composer_deps) + if package.composer_deps_old: + update_composer_deps_hash_old( + opts, package.filename, package.composer_deps_old + ) + if package.npm_deps: update_npm_deps_hash(opts, package.filename, package.npm_deps) diff --git a/tests/test_composer.py b/tests/test_composer.py index 3d0de85..b1647a8 100644 --- a/tests/test_composer.py +++ b/tests/test_composer.py @@ -4,18 +4,11 @@ from nix_update.options import Options from nix_update.update import update -from nix_update.version.version import VersionPreference def test_update(helpers: conftest.Helpers) -> None: with helpers.testpkgs() as path: - opts = Options( - attribute="composer", - import_path=str(path), - # For 0.14.0 we get inconsistent lock file errors - version="0.13.1", - version_preference=VersionPreference.FIXED, - ) + opts = Options(attribute="composer", import_path=str(path)) update(opts) version = subprocess.run( [ @@ -31,4 +24,4 @@ def test_update(helpers: conftest.Helpers) -> None: text=True, stdout=subprocess.PIPE, ).stdout.strip() - assert tuple(map(int, version.split("."))) >= (0, 11, 1) + assert tuple(map(int, version.split("."))) >= (11, 3, 1) diff --git a/tests/test_composer_old.py b/tests/test_composer_old.py new file mode 100644 index 0000000..9dac8ea --- /dev/null +++ b/tests/test_composer_old.py @@ -0,0 +1,34 @@ +import subprocess + +import conftest + +from nix_update.options import Options +from nix_update.update import update +from nix_update.version.version import VersionPreference + + +def test_update(helpers: conftest.Helpers) -> None: + with helpers.testpkgs() as path: + opts = Options( + attribute="composer-old", + import_path=str(path), + # For 0.14.0 we get inconsistent lock file errors + version="0.13.1", + version_preference=VersionPreference.FIXED, + ) + update(opts) + version = subprocess.run( + [ + "nix", + "eval", + "--raw", + "--extra-experimental-features", + "nix-command", + "-f", + path, + "composer-old.version", + ], + text=True, + stdout=subprocess.PIPE, + ).stdout.strip() + assert tuple(map(int, version.split("."))) >= (0, 11, 1) diff --git a/tests/testpkgs/composer-old.nix b/tests/testpkgs/composer-old.nix new file mode 100644 index 0000000..1643872 --- /dev/null +++ b/tests/testpkgs/composer-old.nix @@ -0,0 +1,17 @@ +{ fetchFromGitHub +, php +}: + +php.buildComposerProject (finalAttrs: { + pname = "castor"; + version = "0.10.0"; + + src = fetchFromGitHub { + owner = "jolicode"; + repo = "castor"; + rev = "v${finalAttrs.version}"; + hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; + }; + + vendorHash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; +}) diff --git a/tests/testpkgs/composer.nix b/tests/testpkgs/composer.nix index 1643872..672fbfe 100644 --- a/tests/testpkgs/composer.nix +++ b/tests/testpkgs/composer.nix @@ -2,14 +2,14 @@ , php }: -php.buildComposerProject (finalAttrs: { - pname = "castor"; - version = "0.10.0"; +php.buildComposerProject2 (finalAttrs: { + pname = "phpunit"; + version = "11.3.0"; src = fetchFromGitHub { - owner = "jolicode"; - repo = "castor"; - rev = "v${finalAttrs.version}"; + owner = "sebastianbergmann"; + repo = "phpunit"; + rev = finalAttrs.version; hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; }; diff --git a/tests/testpkgs/default.nix b/tests/testpkgs/default.nix index 006bfc0..3580d54 100644 --- a/tests/testpkgs/default.nix +++ b/tests/testpkgs/default.nix @@ -8,6 +8,7 @@ cargoLock.generate.with-lockfile-metadata-path-outside-workspace = pkgs.callPackage ./cargo-lock-generate/with-lockfile-metadata-path-outside-workspace { }; cargoLock.update = pkgs.callPackage ./cargo-lock-update { }; composer = pkgs.callPackage ./composer.nix { }; + composer-old = pkgs.callPackage ./composer-old.nix { }; crate = pkgs.callPackage ./crate.nix { }; gitea = pkgs.callPackage ./gitea.nix { }; github = pkgs.callPackage ./github.nix { };