Download raw body.
prevent got from creating unsigned tags when the key file is missing
prevent got from creating unsigned tags when the key file is missing
Josh Rickmar <openbsd+lists@zettaport.com> wrote: > If anyone asks, I don't know why ssh-keygen(1) is printing a CRLF for > the missing key message to stderr. I still have to understand the bigger picture of how tag signing works, but I agree on the diff: it's not a bad idea to look at the exit code before considering the output. This behavior of ssh-keygen of printing error smells like an error to me tho, someone has tried to report it or dig further? anyway, ok for me, nit below > [...] > blob - b39af2be74c1e13b37e5bb89219e62eed8046e23 > blob + 4e419b6cf54d84e3a2f5547f84bacb65e3f5c5dc > --- regress/cmdline/tag.sh > +++ regress/cmdline/tag.sh > @@ -417,8 +417,46 @@ test_tag_create_ssh_signed() { > test_done "$testroot" "$ret" > } > > +test_tag_create_ssh_signed_missing_key() { > + local testroot=`test_init tag_create` > + local commit_id=`git_show_head $testroot/repo` > + local tag=1.0.0 > + > + # Fail to create a signed tag due to a missing SSH key > + got tag -s $testroot/bogus -m 'test' -r $testroot/repo \ > + -c HEAD $tag > $testroot/stdout 2> $testroot/stderr > + ret=$? > + if [ $ret -eq 0 ]; then > + echo "got tag command succeeded unexpectedly" > + test_done "$testroot" 1 > + return 1 > + fi > + trailing tab > + got ref -r $testroot/repo -l > $testroot/stdout > + echo "HEAD: refs/heads/master" > $testroot/stdout.expected > + echo "refs/heads/master: $commit_id" >> $testroot/stdout.expected > + cmp -s $testroot/stdout $testroot/stdout.expected > + ret=$? > + if [ $ret -ne 0 ]; then > + diff -u $testroot/stdout.expected $testroot/stdout > + test_done "$testroot" "$ret" > + return 1 > + fi > + echo "Couldn't load public key $testroot/bogus: No such file or directory > +"\ this caused some head scratching. CR isn't safe to round trip through diff/patch (don't know if exist implementation of diff that preserve CR, OpenBSD' diff(1) and got diff don't, and patch(1) and got patch doesn't even try to care about it.) Furthermore, I fear that this could be mangled by an editor in the future. I'd suggest to use printf here: printf "Couldn't load public key $testroot/bogus: " \ > $testroot/stderr.expected printf "No such file or directory\r\n" >> $testroot/stderr.expected > + >> $testroot/stderr.expected > + echo "got: unable to sign tag" >> $testroot/stderr.expected > + cmp -s $testroot/stderr $testroot/stderr.expected > + ret=$? > + if [ $ret -ne 0 ]; then > + diff -u $testroot/stderr.expected $testroot/stderr > + fi > + test_done "$testroot" "$ret" > +} > + > test_parseargs "$@" > run_test test_tag_create > run_test test_tag_list > run_test test_tag_list_lightweight > run_test test_tag_create_ssh_signed > +run_test test_tag_create_ssh_signed_missing_key
prevent got from creating unsigned tags when the key file is missing
prevent got from creating unsigned tags when the key file is missing