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

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

Download raw body.

Thread
On 23-04-15 09:52AM, Stefan Sperling wrote:
> On Sat, Apr 15, 2023 at 02:35:59PM +1000, Mark Jamsek wrote:
> > The below diff applies on top, and makes $testname global so we can use
> > that for each test script path. The objective is to minimise repeated
> > copypasta errors. With this, if a new test is written that copypastas an
> > existing similar one as a template, we don't have to worry about
> > changing the script path each time. What do you think?
> 
> I think it would make more sense to export the GOT_TOG_TEST variable
> to all tests, in order to match the name used by code in tog.c.
> 
> And could this variable be renamed to something that describes the
> prupose more clearly, like TOG_TEST_SCRIPT?
> (tog does not use a GOT_ prefix for its other environment variables)
> 
> Then the tests would read like this:
> 
> 	cat <<EOF >$TOG_TEST_SCRIPT
>   SCREENDUMP
>   EOF

Yes, I like that idea much better! I'll do that now.

Here's a basic tog blame test. We need some delay in order to capture
the blame view once it has finished annotating the file else we capture
the '........' instead of the hash prefix.

(btw, this applies on the previous $testname diff but I'll change that
now to your suggestion.)

diff /home/mark/src/got
commit - b55bf1964a4cd801e34c85182d9a2a59aa234e47
path + /home/mark/src/got
blob - ac485dd3c4b41a848f35a558031031452fc7aa5e
file + regress/tog/Makefile
--- regress/tog/Makefile
+++ regress/tog/Makefile
@@ -1,4 +1,4 @@
-REGRESS_TARGETS=log diff
+REGRESS_TARGETS=log diff blame
 NOOBJ=Yes
 
 GOT_TEST_ROOT=/tmp
@@ -9,4 +9,7 @@ diff:
 diff:
 	./diff.sh -q -r "$(GOT_TEST_ROOT)"
 
+blame:
+	./blame.sh -q -r "$(GOT_TEST_ROOT)"
+
 .include <bsd.regress.mk>
blob - /dev/null
file + regress/tog/blame.sh (mode 755)
--- /dev/null
+++ regress/tog/blame.sh
@@ -0,0 +1,80 @@
+#!/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_blame_basic()
+{
+	test_init blame_basic 80 8
+
+	local commit_id1=`git_show_head $testroot/repo`
+
+	got checkout $testroot/repo $testroot/wt > /dev/null
+	ret=$?
+	if [ $ret -ne 0 ]; then
+		test_done "$testroot" "$ret"
+		return 1
+	fi
+
+	echo aaaa >> $testroot/wt/alpha
+	(cd $testroot/wt && got commit -m "a change" > /dev/null)
+	local commit_id2=`git_show_head $testroot/repo`
+
+	echo bbbb >> $testroot/wt/alpha
+	(cd $testroot/wt && got commit -m "b change" > /dev/null)
+	local commit_id3=`git_show_head $testroot/repo`
+
+	echo cccc >> $testroot/wt/alpha
+	(cd $testroot/wt && got commit -m "c change" > /dev/null)
+	local commit_id4=`git_show_head $testroot/repo`
+	local author_time=`git_show_author_time $testroot/repo`
+	local ymd=`date -u -r $author_time +"%G-%m-%d"`
+
+	cat <<EOF >$testroot/$testname
+SLEEP 1		wait for blame to finish
+SCREENDUMP
+EOF
+
+	local commit_id1_short=`trim_obj_id 32 $commit_id1`
+	local commit_id2_short=`trim_obj_id 32 $commit_id2`
+	local commit_id3_short=`trim_obj_id 32 $commit_id3`
+	local commit_id4_short=`trim_obj_id 32 $commit_id4`
+
+	cat <<EOF >$testroot/view.expected
+commit $commit_id4
+[1/4] /alpha
+$commit_id1_short alpha
+$commit_id2_short aaaa
+$commit_id3_short bbbb
+$commit_id4_short cccc
+
+
+EOF
+
+	cd $testroot/wt && tog blame alpha
+	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_blame_basic
blob - b5cf65a5e0694a6e6d62637573d08fb3f28a2a6c
file + tog/tog.c
--- tog/tog.c
+++ tog/tog.c
@@ -1636,6 +1636,11 @@ tog_read_script_key(FILE *script, int *ch, int *done)
 			err = got_ferror(script, GOT_ERR_IO);
 			goto done;
 		}
+	}
+	if (strncasecmp(line, "SLEEP ", 6) == 0 &&
+	    isdigit((unsigned char)line[6])) {
+		sleep(line[6] - '0');
+		*ch = -1;
 	} else if (strncasecmp(line, "KEY_ENTER", 9) == 0)
 		*ch = KEY_ENTER;
 	else if (strncasecmp(line, "KEY_RIGHT", 9) == 0)

-- 
Mark Jamsek <fnc.bsdbox.org|got.bsdbox.org>
GPG: F2FF 13DE 6A06 C471 CA80  E6E2 2930 DC66 86EE CF68