From: Mark Jamsek Subject: tog: basic diff regress To: Game of Trees Date: Sat, 15 Apr 2023 02:00:31 +1000 The below diff adds two basic tog diff tests: one for contiguous (direct parent/child 'tog diff parent child') commits; and another for arbitrary commits. diff /home/mark/src/got commit - b568caa8aa856a6b8c4c435003250c6dd80b19a3 path + /home/mark/src/got blob - 01409b433f1bc9d3bbbc19b1428c29ddf72802e1 file + regress/tog/Makefile --- regress/tog/Makefile +++ regress/tog/Makefile @@ -1,4 +1,4 @@ -REGRESS_TARGETS=log +REGRESS_TARGETS=log diff NOOBJ=Yes GOT_TEST_ROOT=/tmp @@ -6,4 +6,7 @@ log: log: ./log.sh -q -r "$(GOT_TEST_ROOT)" +diff: + ./diff.sh -q -r "$(GOT_TEST_ROOT)" + .include blob - /dev/null file + regress/tog/diff.sh (mode 755) --- /dev/null +++ regress/tog/diff.sh @@ -0,0 +1,136 @@ +#!/bin/sh +# +# Copyright (c) 2023 Mark Jamsek +# +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +. ./common.sh + +test_diff_contiguous_commits() +{ + test_init diff_contiguous_commits + + local commit_id1=`git_show_head $testroot/repo` + local alpha_id_old=`get_blob_id $testroot/repo "" alpha` + + echo "modified alpha" > $testroot/repo/alpha + git_commit $testroot/repo -m "changed alpha" + local author_time=`git_show_author_time $testroot/repo` + local date=`date -u -r $author_time +"%a %b %e %X %Y UTC"` + local head_id=`git_show_head $testroot/repo` + local head_id_truncated=`trim_obj_id 13 $head_id` + local alpha_id=`get_blob_id $testroot/repo "" alpha` + + cat <$testroot/log_test +SCREENDUMP +EOF + + cat <$testroot/view.expected +[1/20] diff $commit_id1 $head_id_truncated +commit $head_id (master) +from: Flan Hacker +date: $date + +changed alpha + +M alpha | 1+ 1- + +1 file changed, 1 insertion(+), 1 deletion(-) + +commit - $commit_id1 +commit + $head_id +blob - $alpha_id_old +blob + $alpha_id +--- alpha ++++ alpha +@@ -1 +1 @@ +-alpha ++modified alpha + + + +(END) +EOF + + cd $testroot/repo && tog diff $commit_id1 $head_id + cmp -s $testroot/view.expected $testroot/view + ret=$? + if [ $ret -ne 0 ]; then + diff -u $testroot/view.expected $testroot/view + test_done "$testroot" "$ret" + return 1 + fi + + test_done "$testroot" "$ret" +} + +test_diff_arbitrary_commits() +{ + test_init diff_arbitrary_commits 80 18 + + local commit_id1=`git_show_head $testroot/repo` + local alpha_id_old=`get_blob_id $testroot/repo "" alpha` + + echo "modified alpha" > $testroot/repo/alpha + git_commit $testroot/repo -m "changed alpha" + local commit_id2=`git_show_head $testroot/repo` + + echo "modified alpha again" > $testroot/repo/alpha + echo "new file" > $testroot/repo/new + (cd $testroot/repo && git add new) + git_commit $testroot/repo -m "new file" + local head_id=`git_show_head $testroot/repo` + local head_id_truncated=`trim_obj_id 13 $head_id` + local alpha_id=`get_blob_id $testroot/repo "" alpha` + local new_id=`get_blob_id $testroot/repo "" new` + + cat <$testroot/log_test +SCREENDUMP +EOF + + cat <$testroot/view.expected +[1/16] diff $commit_id1 $head_id_truncated +commit - $commit_id1 +commit + $head_id +blob - $alpha_id_old +blob + $alpha_id +--- alpha ++++ alpha +@@ -1 +1 @@ +-alpha ++modified alpha again +blob - /dev/null +blob + $new_id (mode 644) +--- /dev/null ++++ new +@@ -0,0 +1 @@ ++new file + +(END) +EOF + + cd $testroot/repo && tog diff $commit_id1 $head_id + cmp -s $testroot/view.expected $testroot/view + ret=$? + if [ $ret -ne 0 ]; then + diff -u $testroot/view.expected $testroot/view + test_done "$testroot" "$ret" + return 1 + fi + + test_done "$testroot" "$ret" +} + +test_parseargs "$@" +run_test test_diff_contiguous_commits +run_test test_diff_arbitrary_commits -- Mark Jamsek GPG: F2FF 13DE 6A06 C471 CA80 E6E2 2930 DC66 86EE CF68