Re: [PATCH v14 01/16] test: add test cases for relative_path
- From
Jiang Xin <worldhello.net@gmail.com>
- Date
- Jun 25, 2013, 01:06 UTC
- Message-ID
- <CANYiYbEK-vc2h64rfNDL5k5yhRsxQR=8xtNJJQwUXmyVHH4Cng@mail.gmail.com>
- In-Reply-To
- <7vli5z8ha0.fsf@alter.siamese.dyndns.org>
2013/6/25 Junio C Hamano <gitster@pobox.com>:
Show 38 quoted lines
> Jiang Xin <worldhello.net@gmail.com> 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, "<null>"))
>> + *var = NULL;
>> + else if (!strcmp(input, "<empty>"))
>> + *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 "<null>" to NULL. So that I can write test case in t/t0060-path-utils.sh like this:
relative_path "<null>" "<null>" ./
And for the same reason, output would be "(null)" for NULL pointer. Use "(null)" not "<null>" 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 "<empty>" 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