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

From:
Mark Jamsek <mark@jamsek.com>
Subject:
Re: expand keyword support to more commands
To:
Omar Polo <op@omarpolo.com>
Cc:
Stefan Sperling <stsp@stsp.name>, gameoftrees@openbsd.org
Date:
Wed, 19 Jul 2023 00:42:20 +1000

Download raw body.

Thread
Omar Polo <op@omarpolo.com> wrote:
> On 2023/07/19 00:00:57 +1000, Mark Jamsek <mark@jamsek.com> wrote:
> > Here's the diff adding keyword support to 'got ref', I've rebased it and
> > the above diff you've already reviewed on top of main:
> 
> ok for me with comments below addressed:

Jeez, I don't even know how I did that. I must've originally had a
different assignment that I changed and then repeatedly copied for those
commands. I know I've done a lot of yyp's in vim with these keyword
tests. In any case, thanks for the big save! I must really need to zzz.

Committed with your fixes! Thanks again, op, you're a lifesaver :)

> > --- regress/cmdline/ref.sh
> > +++ regress/cmdline/ref.sh
> > @@ -438,7 +438,86 @@ test_parseargs "$@"
> >  	test_done "$testroot" "$ret"
> >  }
> >  
> > +test_ref_commit_keywords() {
> > +	local testroot=$(test_init ref_commit_keywords)
> > +	local repo="$testroot/repo"
> > +	local wt="$testroot/wt"
> > +
> > +	got checkout "$repo" "$wt" > /dev/null
> > +	ret=$?
> > +	if [ $ret -ne 0 ]; then
> > +		echo "checkout failed unexpectedly" >&2
> > +		test_done "$testroot" "$ret"
> > +		return 1
> > +	fi
> > +
> > +	for i in $(seq 8); do
> > +		echo "alpha change $i" > "$wt/alpha"
> > +
> > +		(cd "$wt" && got ci -m "commit number $i" > /dev/null)
> > +		ret=$?
> > +		if [ $ret -ne 0 ]; then
> > +			echo "commit failed unexpectedly" >&2
> > +			test_done "$testroot" "$ret"
> > +			return 1
> > +		fi
> > +
> > +		set -- "$ids" "$(git_show_head $repo)"
> > +		ids=$*
> > +	done
> > +
> > +	$(cd "$wt" && got ref -c:head:-4 refs/heads/head-4)
>        ^^^
> 
> it should be (cd ...) not $(cd ...).  We're lucky that `got ref'
> doesn't write anything to stdout.
> 
> I missed this in the previous review, but there were some already.
> copy-paste error likely.  I've not checked whether we have this error
> already in the tree somewhere else.
> 
> > +	ret=$?
> > +	if [ $ret -ne 0 ]; then
> > +		echo "got ref command failed unexpectedly"
> > +		test_done "$testroot" "$ret"
> > +		return 1
> > +	fi
> > +
> > +	(cd "$wt" && got up -c head-4 > /dev/null)
> > +	ret=$?
> > +	if [ $ret -ne 0 ]; then
> > +		echo "got checkout command failed unexpectedly"
> > +		test_done "$testroot" "$ret"
> > +		return 1
> > +	fi
> > +
> > +	$(cd "$wt" && got ref -c:base:+2 refs/heads/base+2)
> 
> same here.
> 
> > +	ret=$?
> > +	if [ $ret -ne 0 ]; then
> > +		echo "got ref command failed unexpectedly"
> > +		test_done "$testroot" "$ret"
> > +		return 1
> > +	fi
> 
> > [...]
> 
> > --- regress/cmdline/cat.sh
> > +++ regress/cmdline/cat.sh
> > @@ -338,9 +338,107 @@ test_parseargs "$@"
> >  	test_done "$testroot" "$ret"
> >  }
> >  
> > +test_cat_commit_keywords() {
> > +	local testroot=$(test_init cat_commit_keywords)
> > +	local repo="$testroot/repo"
> > +	local wt="$testroot/wt"
> > +
> > +	# :base requires work tree
> > +	echo "got: '-c :base' requires work tree" > "$testroot/stderr.expected"
> > +	got cat -r "$repo" -c:base alpha 2> "$testroot/stderr"
> > +	ret=$?
> > +	if [ $ret -eq 0 ]; then
> > +		echo "cat command succeeded unexpectedly" >&2
> > +		test_done "$testroot" "1"
> > +		return 1
> > +	fi
> > +
> > +	cmp -s "$testroot/stderr.expected" "$testroot/stderr"
> > +	ret=$?
> > +	if [ $ret -ne 0 ]; then
> > +		diff -u "$testroot/stderr.expected" "$testroot/stderr"
> > +		test_done "$testroot" "$ret"
> > +		return 1
> > +	fi
> > +
> > +	got checkout "$repo" "$wt" > /dev/null
> > +	ret=$?
> > +	if [ $ret -ne 0 ]; then
> > +		test_done "$testroot" "$ret"
> > +		return 1
> > +	fi
> > +
> > +	for i in $(seq 8); do
> > +		echo "change $i" > "$wt/alpha"
> > +		echo "delta $i" > "$wt/gamma/delta"
> > +
> > +		(cd "$wt" && got ci -m "commit $i" > /dev/null)
> > +		ret=$?
> > +		if [ $ret -ne 0 ]; then
> > +			echo "commit failed unexpectedly" >&2
> > +			test_done "$testroot" "$ret"
> > +			return 1
> > +		fi
> > +
> > +		local delta_id=$(got tree -r "$repo" -i gamma | \
> > +		    grep 'delta$' | cut -d' ' -f 1)
> > +		set -- "$delta_ids" "$delta_id"
> > +		delta_ids=$*
> > +	done
> > +
> > +	# cat blob by path
> > +	echo "change 6" > "$testroot/stdout.expected"
> > +	$(cd "$wt" && got cat -c:head:-2 alpha > "$testroot/stdout")
> 
> here too.
> 
> > +	cmp -s "$testroot/stdout.expected" "$testroot/stdout"
> > +	ret=$?
> > +	if [ $ret -ne 0 ]; then
> > +		diff -u "$testroot/stdout.expected" "$testroot/stdout"
> > +		test_done "$testroot" "$ret"
> > +		return 1
> > +	fi
> > +
> > +	# cat blob by path with -r repo
> > +	echo "delta 7" > "$testroot/stdout.expected"
> > +	got cat -r "$repo" -c:head:- gamma/delta > "$testroot/stdout"
> > +	cmp -s "$testroot/stdout.expected" "$testroot/stdout"
> > +	ret=$?
> > +	if [ $ret -ne 0 ]; then
> > +		diff -u "$testroot/stdout.expected" "$testroot/stdout"
> > +		test_done "$testroot" "$ret"
> > +		return 1
> > +	fi
> > +
> > +	# cat tree by path
> > +	echo "$(pop_id 4 $delta_ids) 0100644 delta" > \
> > +	    "$testroot/stdout.expected"
> > +	$(cd "$wt" && got cat -c:base:-4 gamma > "$testroot/stdout")
> 
> likewise
> 
> > +	cmp -s "$testroot/stdout.expected" "$testroot/stdout"
> > +	ret=$?
> > +	if [ $ret -ne 0 ]; then
> > +		diff -u "$testroot/stdout.expected" "$testroot/stdout"
> > +		test_done "$testroot" "$ret"
> > +		return 1
> > +	fi
> > +
> > +	# cat blob by path with -P
> > +	echo "delta 4" > "$testroot/stdout.expected"
> > +	$(cd "$wt" && got up -c:base:-8 > /dev/null)
> > +	$(cd "$wt" && got cat -c:base:+4 -P gamma/delta > "$testroot/stdout")
> 
> here too
> 
> > +	cmp -s "$testroot/stdout.expected" "$testroot/stdout"
> > +	ret=$?
> > +	if [ $ret -ne 0 ]; then
> > +		diff -u "$testroot/stdout.expected" "$testroot/stdout"
> > +		test_done "$testroot" "$ret"
> > +		return 1
> > +	fi
> > +
> > +	test_done "$testroot" "$ret"
> > +}
> > +
> >  test_parseargs "$@"
> >  run_test test_cat_basic
> >  run_test test_cat_path
> >  run_test test_cat_submodule
> >  run_test test_cat_submodule_of_same_repo
> >  run_test test_cat_symlink
> > +run_test test_cat_commit_keywords


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