# Re: \[Outreachy PATCH v3\] t1402: test --no-allow-onelevel option precedence

- From: Junio C Hamano \<hidden\>
- Date: 2026-10-29 18:54:07 
- List: git
- Page: https://ratatoskr.run/git/2026/10/17829047
- Thread: https://ratatoskr.run/git/2026/10/17804673/t.md

```text
Fien Dora [ref] writes:

> Unlike most Git commands that use the parse_options() API,
> check-ref-format relies on a handcrafted loop to parse command-line
> options. Although the --no- prefix is commonly used to negate options
> in Git, the precedence of --allow-onelevel and --no-allow-onelevel
> is not explicitly covered by the existing tests.
>
> Add regression tests for both orders of --allow-onelevel and
> --no-allow-onelevel to verify that the last option takes precedence.
> The tests confirm that --no-allow-onelevel overrides a preceding
> --allow-onelevel, and that --allow-onelevel similarly overrides a
> preceding --no-allow-onelevel.
>
> To improve Git's command-line argument parsing, I plan to
> explore converting check-ref-format's handcrafted parser to
> parse_options() API in a separate patch series. These tests
> establish the current option-precedence behavior that the
> conversion would need to preserve.
>
> Signed-off-by: Fien Dora <redacted>
> ---

Well explained.

> diff --git a/t/t1402-check-ref-format.sh b/t/t1402-check-ref-format.sh
> index 9dd64662b2..6036df0210 100755
> --- a/t/t1402-check-ref-format.sh
> +++ b/t/t1402-check-ref-format.sh
> @@ -74,6 +74,8 @@ invalid_ref 'heads/foo*/bar*' --refspec-pattern
>  ref='foo'
>  invalid_ref "$ref"
>  valid_ref "$ref" --allow-onelevel
> +invalid_ref "$ref" '--allow-onelevel --no-allow-onelevel'
> +valid_ref "$ref" '--no-allow-onelevel --allow-onelevel'
>  invalid_ref "$ref" --refspec-pattern
>  valid_ref "$ref" '--refspec-pattern --allow-onelevel'
>  invalid_ref "$ref" --normalize

Will queue.  Thanks.
```
