summaryrefslogtreecommitdiff
path: root/tests/crate.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/crate.scm')
-rw-r--r--tests/crate.scm107
1 files changed, 84 insertions, 23 deletions
diff --git a/tests/crate.scm b/tests/crate.scm
index 02b708f9d9..2f1c37633c 100644
--- a/tests/crate.scm
+++ b/tests/crate.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2020 Martin Becze <[email protected]>
;;; Copyright © 2023, 2025 Efraim Flashner <[email protected]>
;;; Copyright © 2023 David Elsing <[email protected]>
+;;; Copyright © 2025 Herman Rimm <[email protected]>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -446,6 +447,29 @@
(define have-guile-semver?
(false-if-exception (resolve-interface '(semver))))
+(define rust-leaf-bob-3
+ (package
+ (name "rust-leaf-bob")
+ (version "3.0.1")
+ (source #f)
+ (build-system #f)
+ (home-page #f)
+ (synopsis #f)
+ (description #f)
+ (license #f)))
+
+(define rust-leaf-bob-3.0.2-yanked
+ (package
+ (name "rust-leaf-bob")
+ (version "3.0.2")
+ (source #f)
+ (properties '((crate-version-yanked? . #t)))
+ (build-system #f)
+ (home-page #f)
+ (synopsis #f)
+ (description #f)
+ (license #f)))
+
(test-begin "crate")
@@ -511,6 +535,66 @@
(pk 'fail x #f)))))
(unless have-guile-semver? (test-skip 1))
+(test-assert "crate->guix-package-marks-missing-packages"
+ (mock
+ ((gnu packages) find-packages-by-name
+ (lambda* (name #:optional version)
+ (match name
+ ("rust-leaf-bob"
+ (list rust-leaf-bob-3.0.2-yanked))
+ (_ '()))))
+ (mock
+ ((guix http-client) http-fetch
+ (lambda (url . rest)
+ (match url
+ ("https://crates.io/api/v1/crates/intermediate-b"
+ (open-input-string test-intermediate-b-crate))
+ ("https://crates.io/api/v1/crates/intermediate-b/1.2.3/download"
+ (set! test-source-hash
+ (bytevector->nix-base32-string
+ (gcrypt-sha256 (string->bytevector "empty file\n" "utf-8"))))
+ (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/leaf-bob"
+ (open-input-string test-leaf-bob-crate))
+ ("https://crates.io/api/v1/crates/leaf-bob/3.0.1/download"
+ (set! test-source-hash
+ (bytevector->nix-base32-string
+ (gcrypt-sha256 (string->bytevector "empty file\n" "utf-8"))))
+ (open-input-string "empty file\n"))
+ (_ (error "Unexpected URL: " url)))))
+ (match (crate->guix-package "intermediate-b" #:mark-missing? #t)
+ ((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
+ (#:skip-build? #t
+ #:cargo-inputs
+ (($ <comment> ";; rust-leaf-bob-3\n" #f)))))
+ (home-page "http://example.com")
+ (synopsis "summary")
+ (description "This package provides summary.")
+ (license (list license:expat license:asl2.0))))
+ #t)
+ (x
+ (pk 'fail
+ (pretty-print-with-comments (current-output-port) x)
+ #f))))))
+
+(unless have-guile-semver? (test-skip 1))
(test-assert "crate-recursive-import"
;; Replace network resources with sample data.
(mock ((guix http-client) http-fetch
@@ -883,29 +967,6 @@
-(define rust-leaf-bob-3
- (package
- (name "rust-leaf-bob")
- (version "3.0.1")
- (source #f)
- (build-system #f)
- (home-page #f)
- (synopsis #f)
- (description #f)
- (license #f)))
-
-(define rust-leaf-bob-3.0.2-yanked
- (package
- (name "rust-leaf-bob")
- (version "3.0.2")
- (source #f)
- (properties '((crate-version-yanked? . #t)))
- (build-system #f)
- (home-page #f)
- (synopsis #f)
- (description #f)
- (license #f)))
-
(unless have-guile-semver? (test-skip 1))
(test-assert "crate-recursive-import-honors-existing-packages"
(mock