From 0110f33aa8b08f339b78b9fccd3b9f256202c276 Mon Sep 17 00:00:00 2001 From: Fien Dora Date: Thu, 29 Oct 2026 13:17:15 +0100 Subject: [PATCH] t1402: test --no-allow-onelevel option precedence 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 Signed-off-by: Junio C Hamano --- t/t1402-check-ref-format.sh | 2 ++ 1 file changed, 2 insertions(+) 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