From: Jiang Xin Date: Tue, 25 Jun 2013 01:06:51 GMT Subject: Re: [PATCH v14 01/16] test: add test cases for relative_path Message-ID: In-Reply-To: <7vli5z8ha0.fsf@alter.siamese.dyndns.org> 2013/6/25 Junio C Hamano : > Jiang Xin writes: > >> diff --git a/test-path-utils.c b/test-path-utils.c >> index 0092cb..dcc530 100644 >> --- a/test-path-utils.c >> +++ b/test-path-utils.c >> @@ -28,6 +28,19 @@ static int normalize_ceiling_entry(struct string_list_item *item, void *unused) >> return 1; >> } >> >> +static void normalize_argv_string(const char **var, const char *input) >> +{ >> + if (!strcmp(input, "")) >> + *var = NULL; >> + else if (!strcmp(input, "")) >> + *var = ""; >> + else >> + *var = input; >> + >> + if (*var && (**var == '<' || **var == '(')) >> + die("Bad value: %s\n", input); >> +} >> + > > If you have to munge the input string like this anyway, perhaps you > can work around the command line mangling done by Windows bash > runtime, perhaps add something like: > > if (*input == '_') > input++; > > and then protecting the path with the underscore, like so? > > relative_path _/a/b/c/ _/a/b/ c/ > > Wouldn't that let you avoid having to handle "POSIX" prereq for > these paths? > In order to test NULL pointer in t/t0060, I have to write normalize_argv_string to convert "" to NULL. So that I can write test case in t/t0060-path-utils.sh like this: relative_path "" "" ./ And for the same reason, output would be "(null)" for NULL pointer. Use "(null)" not "" for output, because I want to make sure the conversion must happen for input and output. I found it would be nice to wrap input empty string as "" and wrap output of empty string as "(empty)" for the readability of both input and output of test cases. Add prefix _ to workaround the absolute path rewritten issue in msysGit is interesting, but these test cases have already been tested in Linux, right? Patch 16/16 turns on most of the test cases which could only run under POSIX previously, and test these test cases in Windows way. -- Jiang Xin