"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Mark Jamsek <mark@jamsek.com>
Subject:
tog: basic diff regress
To:
Game of Trees <gameoftrees@openbsd.org>
Date:
Sat, 15 Apr 2023 02:00:31 +1000

Download raw body.

Thread
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 <bsd.regress.mk>
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 <mark@jamsek.dev>
+#
+# 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 <<EOF >$testroot/log_test
+SCREENDUMP
+EOF
+
+	cat <<EOF >$testroot/view.expected
+[1/20] diff $commit_id1 $head_id_truncated
+commit $head_id (master)
+from: Flan Hacker <flan_hacker@openbsd.org>
+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 <<EOF >$testroot/log_test
+SCREENDUMP
+EOF
+
+	cat <<EOF >$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 <fnc.bsdbox.org|got.bsdbox.org>
GPG: F2FF 13DE 6A06 C471 CA80  E6E2 2930 DC66 86EE CF68