aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDavid Elsing <david.elsing@posteo.net>2023-12-21 22:01:50 +0000
committerEfraim Flashner <efraim@flashner.co.il>2024-01-09 09:38:38 +0200
commit9f44ff2bb47c964d53905cea17c4bda758cce509 (patch)
treef902e562dc7fedb465d4cc3fec710664921450dd /tests
parent4b0aa65c0a9301a70c798ea76a493f67ef8371f4 (diff)
downloadguix-9f44ff2bb47c964d53905cea17c4bda758cce509.tar.gz
guix-9f44ff2bb47c964d53905cea17c4bda758cce509.zip
import: crate: Optionally import dev-dependencies recursively.
If --recursive-dev-dependencies is specified, development dependencies are also included for all recursively imported packages. * doc/guix.texi (Invoking guix import): Mention --recursive-dev-dependencies. * guix/import/crate.scm (crate-recursive-import): Add recursive-dev-dependencies? argument. * guix/scripts/import/crate.scm (show-help, guix-import-crate): Add "--recursive-dev-dependencies". * tests/crate.scm: Test both #f and #t for #:recursive-dev-dependencies? in the 'cargo-recursive-import' test. (test-root-dependencies): Add intermediate-c as dev-dependency. (test-intermediate-c-crate, test-intermediate-c-dependencies): New variables. Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Change-Id: Iae89794681155d77f128733120e60f03bc297717
Diffstat (limited to 'tests')
-rw-r--r--tests/crate.scm228
1 files changed, 224 insertions, 4 deletions
diff --git a/tests/crate.scm b/tests/crate.scm
index 5aea5efaf3..1b9ad88358 100644
--- a/tests/crate.scm
+++ b/tests/crate.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2019, 2020, 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2023 David Elsing <david.elsing@posteo.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -40,10 +41,11 @@
;;
;; root-1.0.0
;; root-1.0.4
-;; intermediate-a 1.0.42
-;; intermeidate-b ^1.0.0
+;; intermediate-a 1.0.42
+;; intermediate-b ^1.0.0
;; leaf-alice ^0.7
-;; leaf-bob ^3
+;; leaf-bob ^3
+;; intermediate-c 1 (dev-dependency)
;;
;; intermediate-a-1.0.40
;; intermediate-a-1.0.42
@@ -55,6 +57,9 @@
;; intermediate-b-1.2.3
;; leaf-bob 3.0.1
;;
+;; intermediate-c-1.0.1
+;; leaf-alice 0.7.5 (dev-dependency)
+;;
;; leaf-alice-0.7.3
;; leaf-alice-0.7.5
;;
@@ -164,6 +169,11 @@
\"crate_id\": \"leaf-bob\",
\"kind\": \"normal\",
\"req\": \"^3\"
+ },
+ {
+ \"crate_id\": \"intermediate-c\",
+ \"kind\": \"dev\",
+ \"req\": \"1\"
}
]
}")
@@ -262,6 +272,40 @@
]
}")
+(define test-intermediate-c-crate
+ "{
+ \"crate\": {
+ \"max_version\": \"1.0.1\",
+ \"name\": \"intermediate-c\",
+ \"description\": \"summary\",
+ \"homepage\": \"http://example.com\",
+ \"repository\": \"http://example.com\",
+ \"keywords\": [\"dummy\", \"test\"],
+ \"categories\": [\"test\"],
+ \"actual_versions\": [
+ { \"id\": 234290,
+ \"num\": \"1.0.1\",
+ \"license\": \"MIT OR Apache-2.0\",
+ \"links\": {
+ \"dependencies\": \"/api/v1/crates/intermediate-c/1.0.1/dependencies\"
+ },
+ \"yanked\": false
+ }
+ ]
+ }
+}")
+
+(define test-intermediate-c-dependencies
+ "{
+ \"dependencies\": [
+ {
+ \"crate_id\": \"leaf-alice\",
+ \"kind\": \"dev\",
+ \"req\": \"0.7.5\"
+ }
+ ]
+}")
+
(define test-leaf-alice-crate
"{
\"crate\": {
@@ -430,6 +474,15 @@
(open-input-string "empty file\n"))
("https://crates.io/api/v1/crates/intermediate-b/1.2.3/dependencies"
(open-input-string test-intermediate-b-dependencies))
+ ("https://crates.io/api/v1/crates/intermediate-c"
+ (open-input-string test-intermediate-c-crate))
+ ("https://crates.io/api/v1/crates/intermediate-c/1.0.1/download"
+ (set! test-source-hash
+ (bytevector->nix-base32-string
+ (sha256 (string->bytevector "empty file\n" "utf-8"))))
+ (open-input-string "empty file\n"))
+ ("https://crates.io/api/v1/crates/intermediate-c/1.0.1/dependencies"
+ (open-input-string test-intermediate-c-dependencies))
("https://crates.io/api/v1/crates/leaf-alice"
(open-input-string test-leaf-alice-crate))
("https://crates.io/api/v1/crates/leaf-alice/0.7.5/download"
@@ -452,7 +505,27 @@
(match (crate-recursive-import "root")
;; rust-intermediate-b has no dependency on the rust-leaf-alice
;; package, so this is a valid ordering
- (((define-public 'rust-leaf-alice-0.7
+ (((define-public 'rust-intermediate-c-1
+ (package
+ (name "rust-intermediate-c")
+ (version "1.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "intermediate-c" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ (? string? hash)))))
+ (build-system cargo-build-system)
+ (arguments
+ ('quasiquote (#:skip-build? #t)))
+ (home-page "http://example.com")
+ (synopsis "summary")
+ (description "summary")
+ (license (list license:expat license:asl2.0))))
+ (define-public 'rust-leaf-alice-0.7
(package
(name "rust-leaf-alice")
(version "0.7.5")
@@ -563,10 +636,157 @@
("rust-leaf-alice"
('unquote 'rust-leaf-alice-0.7))
("rust-leaf-bob"
+ ('unquote rust-leaf-bob-3)))
+ #:cargo-development-inputs
+ (("rust-intermediate-c"
+ ('unquote rust-intermediate-c-1))))))
+ (home-page "http://example.com")
+ (synopsis "summary")
+ (description "summary")
+ (license (list license:expat license:asl2.0)))))
+ #t)
+ (x
+ (pk 'fail x #f)))
+ (match (crate-recursive-import "root"
+ #:recursive-dev-dependencies? #t)
+ ;; rust-intermediate-b has no dependency on the rust-leaf-alice
+ ;; package, so this is a valid ordering
+ (((define-public 'rust-intermediate-c-1
+ (package
+ (name "rust-intermediate-c")
+ (version "1.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "intermediate-c" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ (? string? hash)))))
+ (build-system cargo-build-system)
+ (arguments
+ ('quasiquote (#:cargo-development-inputs
+ (("rust-leaf-alice"
+ ('unquote rust-leaf-alice-0.7))))))
+ (home-page "http://example.com")
+ (synopsis "summary")
+ (description "summary")
+ (license (list license:expat license:asl2.0))))
+ (define-public 'rust-leaf-alice-0.7
+ (package
+ (name "rust-leaf-alice")
+ (version "0.7.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "leaf-alice" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ (? string? hash)))))
+ (build-system cargo-build-system)
+ (home-page "http://example.com")
+ (synopsis "summary")
+ (description "summary")
+ (license (list license:expat license:asl2.0))))
+ (define-public 'rust-leaf-bob-3
+ (package
+ (name "rust-leaf-bob")
+ (version "3.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "leaf-bob" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ (? string? hash)))))
+ (build-system cargo-build-system)
+ (home-page "http://example.com")
+ (synopsis "summary")
+ (description "summary")
+ (license (list license:expat license:asl2.0))))
+ (define-public 'rust-intermediate-b-1
+ (package
+ (name "rust-intermediate-b")
+ (version "1.2.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "intermediate-b" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ (? string? hash)))))
+ (build-system cargo-build-system)
+ (arguments
+ ('quasiquote (#:cargo-inputs
+ (("rust-leaf-bob"
+ ('unquote rust-leaf-bob-3))))))
+ (home-page "http://example.com")
+ (synopsis "summary")
+ (description "summary")
+ (license (list license:expat license:asl2.0))))
+ (define-public 'rust-intermediate-a-1
+ (package
+ (name "rust-intermediate-a")
+ (version "1.0.42")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "intermediate-a" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ (? string? hash)))))
+ (build-system cargo-build-system)
+ (arguments
+ ('quasiquote (#:cargo-inputs
+ (("rust-intermediate-b"
+ ('unquote rust-intermediate-b-1))
+ ("rust-leaf-alice"
+ ('unquote 'rust-leaf-alice-0.7))
+ ("rust-leaf-bob"
('unquote rust-leaf-bob-3))))))
(home-page "http://example.com")
(synopsis "summary")
(description "summary")
+ (license (list license:expat license:asl2.0))))
+ (define-public 'rust-root-1
+ (package
+ (name "rust-root")
+ (version "1.0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "root" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ (? string? hash)))))
+ (build-system cargo-build-system)
+ (arguments
+ ('quasiquote (#:cargo-inputs
+ (("rust-intermediate-a"
+ ('unquote rust-intermediate-a-1))
+ ("rust-intermediate-b"
+ ('unquote rust-intermediate-b-1))
+ ("rust-leaf-alice"
+ ('unquote 'rust-leaf-alice-0.7))
+ ("rust-leaf-bob"
+ ('unquote rust-leaf-bob-3)))
+ #:cargo-development-inputs
+ (("rust-intermediate-c"
+ ('unquote rust-intermediate-c-1))))))
+ (home-page "http://example.com")
+ (synopsis "summary")
+ (description "summary")
(license (list license:expat license:asl2.0)))))
#t)
(x