1
0
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:
Ludovic Courtès
2018-06-04 18:33:19 +02:00
parent 3931c76154
commit f8f9f7cabc
2 changed files with 31 additions and 7 deletions
+20
View File
@@ -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")