commit: 4e3854cb75cdf223504b10d73aeb0981218d4ea0
parent d270ca83b129714c7b6168bd0b571b0633272784
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Wed,  2 Mar 2022 19:17:56 +0100
test-bin/basename: Add tests on doubledash
Diffstat:
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/bin/basename.c b/bin/basename.c
@@ -5,7 +5,7 @@
 #include <assert.h> // assert()
 #include <libgen.h> // basename()
 #include <stdio.h>  // fprintf(), puts(), perror()
-#include <string.h> // strlen(), strcmp()
+#include <string.h> // strlen(), strncmp()
 
 static char *
 suffix_basename(char *name, char *suffix)
@@ -30,7 +30,7 @@ main(int argc, char *argv[])
 {
 	int ret = 0;
 
-	if((argc > 1) && (strcmp(argv[1], "--") == 0))
+	if((argc > 1) && (strncmp(argv[1], "--", 3) == 0))
 	{
 		argv++;
 		argc--;
diff --git a/test-bin/basename b/test-bin/basename
@@ -50,6 +50,14 @@ nullarg_body() {
 	atf_check -e "inline:bin\n" ../bin/basename "/usr/bin" "$(printf '\x00')"
 }
 
+atf_test_case doubledash
+doubledash_body() {
+	atf_check -o 'inline:-\n' -- ../bin/basename '-'
+	atf_check -o 'inline:.\n' -- ../bin/basename '--'
+	atf_check -o 'inline:--\n' -- ../bin/basename --a a
+	atf_check -o 'inline:---\n' -- ../bin/basename '---'
+}
+
 atf_init_test_cases() {
 	cd "$(atf_get_srcdir)" || exit 1
 	atf_add_test_case noargs
@@ -64,4 +72,6 @@ atf_init_test_cases() {
 
 	# Broken behavior in ATF, might be caused by stripping out \x00
 	#atf_add_test_case nullarg
+
+	atf_add_test_case doubledash
 }