diff options
author | Ludovic Courtès <ludo@gnu.org> | 2016-09-06 23:14:07 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2016-09-06 23:22:10 +0200 |
commit | 01afdab89c6a91f4cd05d3c4f4ff95a0402703eb (patch) | |
tree | 7be146245b7b7053532f38476399e5b8f5b2f9c4 /tests | |
parent | 03763d6473bcd6c7a84bcc3a6aa7bc2d1ee1e44f (diff) | |
download | guix-01afdab89c6a91f4cd05d3c4f4ff95a0402703eb.tar.gz guix-01afdab89c6a91f4cd05d3c4f4ff95a0402703eb.zip |
packages: Add 'package-superseded' and associated support.
This provides a way to mark a package as superseded by another one.
Upgrades replace superseded packages with their replacement.
* guix/packages.scm (package-superseded, deprecated-package): New
procedures.
* gnu/packages.scm (%find-package): Check for 'package-superseded'.
* guix/scripts/package.scm (transaction-upgrade-entry)[supersede]: New
procedure. Call it when 'package-superseded' is true.
* tests/guix-build.sh: Add test for a superseded package.
* tests/packages.scm ("package-superseded")
("transaction-upgrade-entry, superseded package"): New tests.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/guix-build.sh | 6 | ||||
-rw-r--r-- | tests/packages.scm | 30 |
2 files changed, 36 insertions, 0 deletions
diff --git a/tests/guix-build.sh b/tests/guix-build.sh index 6d4f97019a..9e9788bca0 100644 --- a/tests/guix-build.sh +++ b/tests/guix-build.sh @@ -93,6 +93,9 @@ cat > "$module_dir/foo.scm"<<EOF (define-public baz (dummy-package "baz" (replacement foo))) +(define-public superseded + (deprecated-package "superseded" bar)) + EOF GUIX_PACKAGE_PATH="$module_dir" @@ -168,6 +171,9 @@ test "$drv1" = "$drv2" if guix build guile --with-input=libunistring=something-really-silly then false; else true; fi +# Deprecated/superseded packages. +test "`guix build superseded -d`" = "`guix build bar -d`" + # Parsing package names and versions. guix build -n time # PASS guix build -n time@1.7 # PASS, version found diff --git a/tests/packages.scm b/tests/packages.scm index 456e691962..b8e1f111cd 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -84,6 +84,15 @@ (and (hidden-package? (hidden-package (dummy-package "foo"))) (not (hidden-package? (dummy-package "foo"))))) +(test-assert "package-superseded" + (let* ((new (dummy-package "bar")) + (old (deprecated-package "foo" new))) + (and (eq? (package-superseded old) new) + (mock ((gnu packages) find-best-packages-by-name (const (list old))) + (specification->package "foo") + (and (eq? new (specification->package "foo")) + (eq? new (specification->package+output "foo"))))))) + (test-assert "transaction-upgrade-entry, zero upgrades" (let* ((old (dummy-package "foo" (version "1"))) (tx (mock ((gnu packages) find-newest-available-packages @@ -112,6 +121,27 @@ (eq? item new))) (null? (manifest-transaction-remove tx))))) +(test-assert "transaction-upgrade-entry, superseded package" + (let* ((old (dummy-package "foo" (version "1"))) + (new (dummy-package "bar" (version "2"))) + (dep (deprecated-package "foo" new)) + (tx (mock ((gnu packages) find-newest-available-packages + (const (vhash-cons "foo" (list "2" dep) vlist-null))) + ((@@ (guix scripts package) transaction-upgrade-entry) + (manifest-entry + (inherit (package->manifest-entry old)) + (item (string-append (%store-prefix) "/" + (make-string 32 #\e) "-foo-1"))) + (manifest-transaction))))) + (and (match (manifest-transaction-install tx) + ((($ <manifest-entry> "bar" "2" "out" item)) + (eq? item new))) + (match (manifest-transaction-remove tx) + (((? manifest-pattern? pattern)) + (and (string=? (manifest-pattern-name pattern) "foo") + (string=? (manifest-pattern-version pattern) "1") + (string=? (manifest-pattern-output pattern) "out"))))))) + (test-assert "package-field-location" (let () (define (goto port line column) |