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

Re: [PATCH v2 10/16] tag: change misleading --list <pattern> documentation

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 23, 2017, 00:46 UTC
Message-ID
<xmqqd1d8hlbg.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<CACBZZX7kJ_G8mAYd3mN5WtP0ZLUUOuWs4hu1fhTSspWuW_O=5A@mail.gmail.com>
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
Show 30 quoted lines
> Junio would you be fine with just this on top:
>
> diff --git a/t/README b/t/README
> index 4982d1c521..9e079a360a 100644
> --- a/t/README
> +++ b/t/README
> @@ -379,2 +379,5 @@ Do:
>
> + - Include tests which assert that the desired & recommended behavior
> +   of commands is preserved.
> +
>   - Put all code inside test_expect_success and other assertions.
> @@ -424,2 +427,17 @@ Don't:
>
> + - Include tests which exhaustively test for various edge cases or
> +   unintended emergent behavior which we're not interested in
> +   supporting in the future.
> +
> +   An exception to this is are cases where we don't care about
> +   different behaviors X and Y, but we need to check that it does one
> +   of them, and not Z.
> +
> +   Another exception are cases where our documentation might
> +   unintentionally stated or implied that something was supported or
> +   recommended, but we'd like to discourage its use going forward.
> +
> +   In both of the above cases please prominently comment the test
> +   indicating that you're testing for one of these two cases.
> +
>   - exit() within a <script> part.

This would probably be part of your other three-patch series for t/README? With a quick read-through I spotted nothing questionable, but I am not 100% sure about the value of going into that level of details, especially with the latter one about "discourage and wean off of".

Show 15 quoted lines
> diff --git a/t/t7004-tag.sh b/t/t7004-tag.sh
> index 0a7ebf5358..35402ad9a0 100755
> --- a/t/t7004-tag.sh
> +++ b/t/t7004-tag.sh
> @@ -350,2 +350,6 @@ test_expect_success 'tag -l can accept multiple patterns' '
>
> +# Between around v1.7.6.1 & v2.13.0 the documentation unintentionally
> +# implied that --list was what took the <pattern>, not that patterns
> +# should be clustered at the very end. This test should not imply that
> +# this is a sane thing to support.
>  test_expect_success 'tag -l can accept multiple patterns interleaved
> with -l or --list options' '
>
> Or do you think the "long documented but unintentional" argument isn't
> worth a test, in which case squash this:

Oh, I didn't know I was given two choices and the second one does address the "I am not 100% sure" above ;-).

Show 18 quoted lines
> diff --git a/t/README b/t/README
> index 9e079a360a..9f85b8d1cd 100644
> --- a/t/README
> +++ b/t/README
> @@ -433,12 +433,8 @@ Don't:
>     different behaviors X and Y, but we need to check that it does one
>     of them, and not Z.
>
> -   Another exception are cases where our documentation might
> -   unintentionally stated or implied that something was supported or
> -   recommended, but we'd like to discourage its use going forward.
> -
> -   In both of the above cases please prominently comment the test
> -   indicating that you're testing for one of these two cases.
> +   In that case please prominently comment the test indicating that
> +   you're testing for one of these two cases.
>
>   - exit() within a <script> part.

So for the doc part, I can go with either, but prefer the latter between the two.

Show 16 quoted lines
> diff --git a/t/t7004-tag.sh b/t/t7004-tag.sh
> index 35402ad9a0..83772f6003 100755
> --- a/t/t7004-tag.sh
> +++ b/t/t7004-tag.sh
> @@ -348,19 +348,6 @@ test_expect_success 'tag -l can accept multiple patterns' '
>         test_cmp expect actual
>  '
>
> -# Between around v1.7.6.1 & v2.13.0 the documentation unintentionally
> -# implied that --list was what took the <pattern>, not that patterns
> -# should be clustered at the very end. This test should not imply that
> -# this is a sane thing to support.
> -test_expect_success 'tag -l can accept multiple patterns interleaved
> with -l or --list options' '
> -       git tag -l "v1*" "v0*" >actual &&
> -       test_cmp expect actual &&

I'd actually think "multiple patterns" should be kept, as that is really what we want to support forever.

Acceptance of multiple and redundant "--list", e.g.
	git tag -l --list "v1*" "v0*" >actual &&
	test_cmp expect actual &&

immediately after the above may also be something worth protecting, but that is how OPT_CMDMODE works in general, so it may not be necessary to test it specifically in a test for "tag -l".

Acceptance of multiple and redundant "--list" that are given after a <pattern> is already given on the command line is not something we want to actively deprecate (it is not worth our time or effort) but it is not something we want to encourage, either. So I have a preference for dropping the ones below.

Show 9 quoted lines
> -       git tag -l "v1*" --list "v0*" >actual &&
> -       test_cmp expect actual &&
> -       git tag -l "v1*" "v0*" -l --list >actual &&
> -       test_cmp expect actual
> -'
> -
>  test_expect_success 'listing tags in column' '
>         COLUMNS=40 git tag -l --column=row >actual &&
>         cat >expected <<\EOF &&
Previous: Ævar Arnfjörð BjarmasonNext: Junio C Hamano
Message 41 of 45 in “Various changes to the "tag" command & related”
  1. 00/16 Various changes to the "tag" command & relatedÆvar Arnfjörð Bjarmason, Mar 21, 2017
  2. 01/16 tag doc: move the description of --[no-]merged earlierÆvar Arnfjörð Bjarmason, Mar 21, 2017
  3. Junio C HamanoMar 21, 2017
  4. 03/16 tag doc: reword --[no-]merged to talk about commits, not tipsÆvar Arnfjörð Bjarmason, Mar 21, 2017
  5. 14/16 ref-filter: reflow recently changed branch/tag/for-each-ref docsÆvar Arnfjörð Bjarmason, Mar 21, 2017
  6. Junio C HamanoMar 21, 2017
  7. Ævar Arnfjörð BjarmasonMar 21, 2017
  8. 15/16 tag: implicitly supply --list given the -n optionÆvar Arnfjörð Bjarmason, Mar 21, 2017
  9. Junio C HamanoMar 21, 2017
  10. Ævar Arnfjörð BjarmasonMar 21, 2017
  11. Junio C HamanoMar 21, 2017
  12. Ævar Arnfjörð BjarmasonMar 21, 2017
  13. 13/16 ref-filter: add --no-contains option to tag/branch/for-each-refÆvar Arnfjörð Bjarmason, Mar 21, 2017
  14. Junio C HamanoMar 21, 2017
  15. Ævar Arnfjörð BjarmasonMar 21, 2017
  16. 02/16 tag doc: split up the --[no-]merged documentationÆvar Arnfjörð Bjarmason, Mar 21, 2017
  17. Junio C HamanoMar 21, 2017
  18. 12/16 tag: change --point-at to default to HEADÆvar Arnfjörð Bjarmason, Mar 21, 2017
  19. Junio C HamanoMar 21, 2017
  20. 06/16 tag: remove a TODO item from the test suiteÆvar Arnfjörð Bjarmason, Mar 21, 2017
  21. 04/16 ref-filter: make combining --merged & --no-merged an errorÆvar Arnfjörð Bjarmason, Mar 21, 2017
  22. 05/16 ref-filter: add test for --contains on a non-commitÆvar Arnfjörð Bjarmason, Mar 21, 2017
  23. Junio C HamanoMar 21, 2017
  24. 07/16 tag tests: fix a typo in a test descriptionÆvar Arnfjörð Bjarmason, Mar 21, 2017
  25. 08/16 for-each-ref: partly change <object> to <commit> in helpÆvar Arnfjörð Bjarmason, Mar 21, 2017
  26. Junio C HamanoMar 21, 2017
  27. Ævar Arnfjörð BjarmasonMar 21, 2017
  28. Junio C HamanoMar 21, 2017
  29. 09/16 tag: add more incompatibles mode testsÆvar Arnfjörð Bjarmason, Mar 21, 2017
  30. Junio C HamanoMar 21, 2017
  31. Ævar Arnfjörð BjarmasonMar 21, 2017
  32. 16/16 tag: add tests for --with and --withoutÆvar Arnfjörð Bjarmason, Mar 21, 2017
  33. 10/16 tag: change misleading --list <pattern> documentationÆvar Arnfjörð Bjarmason, Mar 21, 2017
  34. Junio C HamanoMar 21, 2017
  35. Ævar Arnfjörð BjarmasonMar 22, 2017
  36. Junio C HamanoMar 22, 2017
  37. Ævar Arnfjörð BjarmasonMar 22, 2017
  38. Junio C HamanoMar 22, 2017
  39. Jeff KingMar 22, 2017
  40. Ævar Arnfjörð BjarmasonMar 22, 2017
  41. Junio C HamanoMar 23, 2017
  42. Junio C HamanoMar 22, 2017
  43. 11/16 tag: implicitly supply --list given another list-like optionÆvar Arnfjörð Bjarmason, Mar 21, 2017
  44. Junio C HamanoMar 21, 2017
  45. Junio C HamanoMar 21, 2017

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.