diff options
author | Ludovic Courtès <ludo@gnu.org> | 2022-01-28 16:59:30 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2022-02-14 11:23:07 +0100 |
commit | 87d49346f3072f7b4343b6fb387ee5f9311493b7 (patch) | |
tree | 3d232980d2ff6e8276a5c698568d7429cbbf6ef3 /tests | |
parent | 36cb04df96623ffe8f1074172a4ed9e51bcf6e3a (diff) |
git: Add 'commit-descendant?'.
* guix/git.scm (commit-descendant?): New procedure.
* tests/git.scm ("commit-descendant?"): New test.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/git.scm | 52 |
1 files changed, 51 insertions, 1 deletions
diff --git a/tests/git.scm b/tests/git.scm index d0646bbc85..ca59d2a33e 100644 --- a/tests/git.scm +++ b/tests/git.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2019, 2020, 2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz ;;; ;;; This file is part of GNU Guix. @@ -163,6 +163,56 @@ (commit-relation merge master1)))))) (unless (which (git-command)) (test-skip 1)) +(test-equal "commit-descendant?" + '((master3 master3 => #t) + (master1 master3 => #f) + (master3 master1 => #t) + (master2 branch1 => #f) + (master2 branch1 master1 => #t) + (branch1 master2 => #f) + (branch1 merge => #f) + (merge branch1 => #t) + (master1 merge => #f) + (merge master1 => #t)) + (with-temporary-git-repository directory + '((add "a.txt" "A") + (commit "first commit") + (branch "hack") + (checkout "hack") + (add "1.txt" "1") + (commit "branch commit") + (checkout "master") + (add "b.txt" "B") + (commit "second commit") + (add "c.txt" "C") + (commit "third commit") + (merge "hack" "merge")) + (with-repository directory repository + (let ((master1 (find-commit repository "first")) + (master2 (find-commit repository "second")) + (master3 (find-commit repository "third")) + (branch1 (find-commit repository "branch")) + (merge (find-commit repository "merge"))) + (letrec-syntax ((verify + (syntax-rules () + ((_) '()) + ((_ (new old ...) rest ...) + (cons `(new old ... => + ,(commit-descendant? new + (list old ...))) + (verify rest ...)))))) + (verify (master3 master3) + (master1 master3) + (master3 master1) + (master2 branch1) + (master2 branch1 master1) + (branch1 master2) + (branch1 merge) + (merge branch1) + (master1 merge) + (merge master1))))))) + +(unless (which (git-command)) (test-skip 1)) (test-equal "remote-refs" '("refs/heads/develop" "refs/heads/master" "refs/tags/v1.0" "refs/tags/v1.1") |