git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCHv5 16/16] Introduce portable_unset and use it to ensure proper && chaining

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 3, 2010, 23:34 UTC
Message-ID
<7vzkuudf5p.fsf@alter.siamese.dyndns.org>
In-Reply-To
<20101003145122.GF17084@burratino>
Jonathan Nieder <jrnieder@gmail.com> writes:
Show 25 quoted lines
> Elijah Newren wrote:
>
>> --- a/t/test-lib.sh
>> +++ b/t/test-lib.sh
>> @@ -268,6 +268,10 @@ remove_cr () {
>>  	tr '\015' Q | sed -e 's/Q$//'
>>  }
>>  
>> +portable_unset () {
>> +	unset $* || true
>> +}
>
> I think this should read
>
> 	portable_unset () {
> 		unset "$@"
> 		return 0
> 	}
>
> (or || true).  That is, if I try
>
> 	portable_unset "foo bar"
>
> then on platforms where an envvar named "foo bar" is allowed,
> this should unset it, no?
Yes, or closer to Elijah's original:
	unset "$@" || true

I do not think calling this "portable_" makes much sense, though. Maybe depending on the exit status of "unset" may be unportable, but the wrapper does not make unset portable. It just picks one behaviour we happen to like among the possible two (one being "unset always succeeds" vs the other being "unset errors out if you feed an unset variable").

I have no objection against calling it "sane_unset", though. It makes it crystal clear that the semantics wrapper implements is what we picked because we like (i.e. deem the sanest among alternatives).

Previous: Elijah NewrenNext: Jonathan Nieder
Message 31 of 32 in “[PATCHv5 00/16] Add missing &&'s in the testsuite”
  1. Elijah NewrenOct 3, 2010
  2. 01/16 test-lib: make test_expect_code a test commandElijah Newren, Oct 3, 2010
  3. Jonathan NiederOct 3, 2010
  4. Elijah NewrenOct 3, 2010
  5. 02/16 t3020 (ls-files-error-unmatch): remove stray '1' from end of fileElijah Newren, Oct 3, 2010
  6. 03/16 t4017 (diff-retval): replace manual exit code check with test_expect_codeElijah Newren, Oct 3, 2010
  7. Jonathan NiederOct 3, 2010
  8. Elijah NewrenOct 3, 2010
  9. 04/16 t100[12] (read-tree-m-2way, read_tree_m_u_2way): add missing &&Elijah Newren, Oct 3, 2010
  10. 05/16 t4002 (diff-basic): use test_might_fail for commands that might failElijah Newren, Oct 3, 2010
  11. 06/16 t4202 (log): Replace '<git-command> || :' with test_might_failElijah Newren, Oct 3, 2010
  12. 07/16 t3600 (rm): add lots of missing &&Elijah Newren, Oct 3, 2010
  13. Jonathan NiederOct 3, 2010
  14. Elijah NewrenOct 3, 2010
  15. 08/16 t4019 (diff-wserror): add lots of missing &&Elijah Newren, Oct 3, 2010
  16. Jonathan NiederOct 3, 2010
  17. Ævar Arnfjörð BjarmasonOct 4, 2010
  18. 09/16 t4026 (color): remove unneeded and unchained commandElijah Newren, Oct 3, 2010
  19. 10/16 t5602 (clone-remote-exec): add missing &&Elijah Newren, Oct 3, 2010
  20. 11/16 t6016 (rev-list-graph-simplify-history): add missing &&Elijah Newren, Oct 3, 2010
  21. 12/16 t7001 (mv): add missing &&Elijah Newren, Oct 3, 2010
  22. 13/16 t7601 (merge-pull-config): add missing &&Elijah Newren, Oct 3, 2010
  23. 14/16 t7800 (difftool): add missing &&Elijah Newren, Oct 3, 2010
  24. 15/16 Add missing &&'s throughout the testsuiteElijah Newren, Oct 3, 2010
  25. Jonathan NiederOct 3, 2010
  26. Elijah NewrenOct 3, 2010
  27. Junio C HamanoOct 3, 2010
  28. 16/16 Introduce portable_unset and use it to ensure proper && chainingElijah Newren, Oct 3, 2010
  29. Jonathan NiederOct 3, 2010
  30. Elijah NewrenOct 3, 2010
  31. Junio C HamanoOct 3, 2010
  32. Jonathan NiederOct 3, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.