Commit Briefs
regress: use seq instead of jot
This is just for -portable since jot is not always available. ok stsp@
replace "(cd path && git cmd)" with "git -C path cmd"
This matches the existing use of "got -r path cmd" and "git_commit path args".
regress: nix 'set -A' kshism from tests
As reported by naddy, this is a non-portable Korn shell construct. Instead, use the one argument array then make faux space-delimited string "arrays" for the other ids; they can still be indexed with pop_idx. improved by + ok naddy@
got: enable more commands to accept commit keywords
More work adding commit keyword support to the blame, cat, ref, tag, and tree commands. With this, all Got commands that take a <commit> option argument or operand now support keywords. Regress flub saved by op! fixes + ok op@
fix wrong assumption about author timestamp in test_blame_lines_shifted_skip
Not all commits will share the same author timestamp. This test would fail when run at the wrong time of day as found out by op@'s regress runner. ok op@
regress: replace "sed -i" with ed(1) for portable in-place editing
"sed -i" is fundamentally unportable. GNU and OpenBSD sed(1) treat the extension for the backup file as an optional argument and use "sed -i" for no backup file. FreeBSD sed(1) treats the extension as an obligatory argument and uses "sed -i ''" for no backup file. There is no single syntax that works for both. ok stsp op
fix regression test failures with Git 3.30.5 / 2.38.1 or later installed
The fix for CVE-2022-39253 in Git made our regression tests fail since creating submodules from local clones is no longer allowed by default. Add an override to our invocations of "git submodule add", the same which was added to Git's regression test suite as part of their fix. This CVE doesn't otherwise affect us. We do not implement submodules. Our use of them in regression tests exists only to ensure that Got does not freak out when it sees one. Precisely because automated support for nested repositories and/or working copies (as in Git Submodules, or Subversion Externals, etc.) have been an endless source of security problems in other systems. sudden test failures pointed out by naddy@
don't pass $ret to test_done on failure when it's known to be zero
Otherwise the test directory it's not left in place; ok tracey@
use test(1) -eq and -ne to compare integers, and reduce quoting
This brings the rest of the regression test scripts in line with patch.sh.
add a -q option to tests for quiet output and use it for 'make regress'
Previous default output remains when test cases are run individually. ok tracey
add submodule tests
ok semarie
always show numeric dates in ISO-8601/xkcd-1179 format
ok millert tracey sthen
show commit date's century in 'got blame' output (patch by Tracey Emery)
tests adjusted by me
fix and simplify blame algorithm
Always diff against latest version of file. This is much easier since there is no need to keep track of lines shifting around.