diff options
author | Marius Bakke <marius@gnu.org> | 2020-06-08 19:05:56 +0200 |
---|---|---|
committer | Marius Bakke <marius@gnu.org> | 2020-06-08 19:05:56 +0200 |
commit | dd2d3ed2d30b5d705f9ed8695ab3171c29469f76 (patch) | |
tree | 22e909cfe9de99fab471621a907b9f87045bb3bd /tests/git-authenticate.scm | |
parent | 24b61fb8ea8a9e8c5320d1db1447f9b62ad04b3d (diff) | |
parent | 1fd2c00efbe701a81d86c254d5f4f285e63c1cde (diff) | |
download | guix-dd2d3ed2d30b5d705f9ed8695ab3171c29469f76.tar.gz |
Merge branch 'master' into staging
Diffstat (limited to 'tests/git-authenticate.scm')
-rw-r--r-- | tests/git-authenticate.scm | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/git-authenticate.scm b/tests/git-authenticate.scm index 5937c37ee6..84689d628e 100644 --- a/tests/git-authenticate.scm +++ b/tests/git-authenticate.scm @@ -282,5 +282,46 @@ merge master3) #:keyring-reference "master")))))) +(unless (gpg+git-available?) (test-skip 1)) +(test-assert "signed commits, .guix-authorizations removed" + (with-fresh-gnupg-setup (list %ed25519-public-key-file + %ed25519-secret-key-file) + (with-temporary-git-repository directory + `((add "signer.key" ,(call-with-input-file %ed25519-public-key-file + get-string-all)) + (add ".guix-authorizations" + ,(object->string + `(authorizations (version 0) + ((,(key-fingerprint + %ed25519-public-key-file) + (name "Charlie")))))) + (commit "zeroth commit") + (add "a.txt" "A") + (commit "first commit" + (signer ,(key-fingerprint %ed25519-public-key-file))) + (remove ".guix-authorizations") + (commit "second commit" + (signer ,(key-fingerprint %ed25519-public-key-file))) + (add "b.txt" "B") + (commit "third commit" + (signer ,(key-fingerprint %ed25519-public-key-file)))) + (with-repository directory repository + (let ((commit1 (find-commit repository "first")) + (commit2 (find-commit repository "second")) + (commit3 (find-commit repository "third"))) + ;; COMMIT1 and COMMIT2 are fine. + (and (authenticate-commits repository (list commit1 commit2) + #:keyring-reference "master") + + ;; COMMIT3 is rejected because COMMIT2 removes + ;; '.guix-authorizations'. + (guard (c ((unauthorized-commit-error? c) + (oid=? (git-authentication-error-commit c) + (commit-id commit2)))) + (authenticate-commits repository + (list commit1 commit2 commit3) + #:keyring-reference "master") + 'failed))))))) + (test-end "git-authenticate") |