mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-05-22 00:55:56 +02:00
database: Fail registration when encountering unregistered references.
* guix/store/database.scm (add-reference-sql): Remove nested SELECT.
(add-references): Expect REFERENCES to be a list of ids.
(sqlite-register): Call 'path-id' for each of REFERENCES and pass it to
'add-references'.
* tests/store-database.scm ("register-path with unregistered references"):
New test.
This commit is contained in:
@@ -74,4 +74,24 @@
|
||||
(list (path-id db "/gnu/foo")
|
||||
(path-id db "/gnu/bar")))))))
|
||||
|
||||
(test-assert "register-path with unregistered references"
|
||||
;; Make sure we get a "NOT NULL constraint failed: Refs.reference" error
|
||||
;; when we try to add references that are not registered yet. Better safe
|
||||
;; than sorry.
|
||||
(call-with-temporary-output-file
|
||||
(lambda (db-file port)
|
||||
(delete-file db-file)
|
||||
(catch 'sqlite-error
|
||||
(lambda ()
|
||||
(sqlite-register #:db-file db-file
|
||||
#:path "/gnu/foo"
|
||||
#:references '("/gnu/bar")
|
||||
#:deriver "/gnu/foo.drv"
|
||||
#:hash (string-append "sha256:" (make-string 64 #\e))
|
||||
#:nar-size 1234)
|
||||
#f)
|
||||
(lambda args
|
||||
(pk 'welcome-exception! args)
|
||||
#t)))))
|
||||
|
||||
(test-end "store-database")
|
||||
|
||||
Reference in New Issue
Block a user