From: Johannes Sixt <j6t@kdbg.org>
To: Jiang Xin <worldhello.net@gmail.com>
Cc: Junio C Hamano <gitster@pobox.com>, Git List <git@vger.kernel.org>
Subject: Re: [PATCH v14 16/16] test: run testcases with POSIX absolute paths on Windows
Date: Mon, 24 Jun 2013 20:56:21 +0200 [thread overview]
Message-ID: <51C89655.4070208@kdbg.org> (raw)
In-Reply-To: <7b6237d76d53c240daf4641a00a09af5135fbba7.1372087065.git.worldhello.net@gmail.com>
Am 24.06.2013 17:21, schrieb Jiang Xin:
> Add new subcommand "mingw_path" in test-path-utils, so that we can get
> the expected absolute paths on Windows. For example:
>
> COMMAND LINE Linux Windows
> ================================== ===== ===============
> test-path-utils mingw_path / / C:/msysgit
> test-path-utils mingw_path /a/b/ /a/b/ C:/msysgit/a/b/
>
> With this utility, most skipped test cases in t0060 can be runcorrectly
> on Windows.
Thanks for working on this. Did you have an opportunity to test on Windows?
> +mingw_path() {
> + case $2 in
> + NO_MINGW)
> + echo "$1"
> + ;;
> + *)
> + test-path-utils mingw_path "$1"
> + ;;
> + esac
> +}
> +
> +get_prereq_flag() {
> + case $1 in
> + POSIX)
> + echo $1
> + ;;
> + *)
> + ;;
> + esac
> +}
It took me a while to notice that the token POSIX serves a different
purpose than NO_MINGW: POSIX is only needed to skip a test, NO_MINGW is
only used to avoid a test-path-utils call. The reason for the complexity
is that you put both tokens in the same parameter position in the
invocations of the test cases.
You use NO_MINGW only twice. I would just skip these two tests, then the
parameter position is reserved for the prerequisite, and things stay simple.
> +
> norm_path() {
> - test_expect_success $3 "normalize path: $1 => $2" \
> - "test \"\$(test-path-utils normalize_path_copy '$1')\" = '$2'"
> + expected=$(mingw_path "$2" "$3")
> + prereq=$(get_prereq_flag $3)
> + test_expect_success $prereq "normalize path: $1 => $2" \
> + "test \"\$(test-path-utils normalize_path_copy '$1')\" = '$expected'"
> }
>
> relative_path() {
> - test_expect_success $4 "relative path: $1 $2 => $3" \
> - "test \"\$(test-path-utils relative_path '$1' '$2')\" = '$3'"
> + expected=$(mingw_path "$3" "$4")
> + prereq=$(get_prereq_flag $4)
> + test_expect_success $prereq "relative path: $1 $2 => $3" \
> + "test \"\$(test-path-utils relative_path '$1' '$2')\" = '$expected'"
> }
>
> # On Windows, we are using MSYS's bash, which mangles the paths.
> @@ -39,8 +64,8 @@ ancestor() {
> test \"\$actual\" = '$expected'"
> }
>
> -# Absolute path tests must be skipped on Windows because due to path mangling
> -# the test program never sees a POSIX-style absolute path
> +# Some absolute path tests should be skipped on Windows due to path mangling
> +# on POSIX-style absolute paths
> case $(uname -s) in
> *MINGW*)
> ;;
> @@ -73,10 +98,10 @@ norm_path d1/s1//../s2/../../d2 d2
> norm_path d1/.../d2 d1/.../d2
> norm_path d1/..././../d2 d1/d2
>
> -norm_path / / POSIX
> -norm_path // / POSIX
> -norm_path /// / POSIX
> -norm_path /. / POSIX
> +norm_path / /
> +norm_path // / NO_MINGW
> +norm_path /// / NO_MINGW
> +norm_path /. /
> norm_path /./ / POSIX
> norm_path /./.. ++failed++ POSIX
> norm_path /../. ++failed++ POSIX
> @@ -84,19 +109,19 @@ norm_path /./../.// ++failed++ POSIX
> norm_path /dir/.. / POSIX
> norm_path /dir/sub/../.. / POSIX
> norm_path /dir/sub/../../.. ++failed++ POSIX
> -norm_path /dir /dir POSIX
> -norm_path /dir// /dir/ POSIX
> -norm_path /./dir /dir POSIX
> -norm_path /dir/. /dir/ POSIX
> -norm_path /dir///./ /dir/ POSIX
> -norm_path /dir//sub/.. /dir/ POSIX
> -norm_path /dir/sub/../ /dir/ POSIX
> +norm_path /dir /dir
> +norm_path /dir// /dir/
> +norm_path /./dir /dir
> +norm_path /dir/. /dir/
> +norm_path /dir///./ /dir/
> +norm_path /dir//sub/.. /dir/
> +norm_path /dir/sub/../ /dir/
> norm_path //dir/sub/../. /dir/ POSIX
> -norm_path /dir/s1/../s2/ /dir/s2/ POSIX
> -norm_path /d1/s1///s2/..//../s3/ /d1/s3/ POSIX
> -norm_path /d1/s1//../s2/../../d2 /d2 POSIX
> -norm_path /d1/.../d2 /d1/.../d2 POSIX
> -norm_path /d1/..././../d2 /d1/d2 POSIX
> +norm_path /dir/s1/../s2/ /dir/s2/
> +norm_path /d1/s1///s2/..//../s3/ /d1/s3/
> +norm_path /d1/s1//../s2/../../d2 /d2
> +norm_path /d1/.../d2 /d1/.../d2
> +norm_path /d1/..././../d2 /d1/d2
>
> ancestor / / -1
> ancestor /foo / 0
> @@ -197,8 +222,8 @@ relative_path /a /a/b ../
> relative_path / /a/b/ ../../
> relative_path /a/c /a/b/ ../c
> relative_path /a/c /a/b ../c
> -relative_path /a/b "<empty>" /a/b POSIX
> -relative_path /a/b "<null>" /a/b POSIX
> +relative_path /a/b "<empty>" /a/b
> +relative_path /a/b "<null>" /a/b
> relative_path "<empty>" /a/b ./
> relative_path "<empty>" "<empty>" ./
> relative_path "<empty>" "<null>" ./
> diff --git a/test-path-utils.c b/test-path-utils.c
> index 95ef4..699ef 100644
> --- a/test-path-utils.c
> +++ b/test-path-utils.c
> @@ -116,6 +116,11 @@ int main(int argc, char **argv)
> return 0;
> }
>
> + if (argc == 3 && !strcmp(argv[1], "mingw_path")) {
> + puts(argv[2]);
> + return 0;
> + }
> +
> if (argc == 4 && !strcmp(argv[1], "relative_path")) {
> struct strbuf sb = STRBUF_INIT;
> const char *abs, *base, *rel;
>
next prev parent reply other threads:[~2013-06-24 18:56 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-13 8:23 [PATCH jx/clean-interactive] t0060: skip a few relative_path tests on Windows Johannes Sixt
2013-06-13 9:40 ` Jiang Xin
2013-06-24 15:21 ` [PATCH v14 00/16] Interactive git-clean Jiang Xin
2013-06-24 15:21 ` [PATCH v14 01/16] test: add test cases for relative_path Jiang Xin
2013-06-24 19:01 ` Junio C Hamano
2013-06-25 1:06 ` Jiang Xin
2013-06-25 4:57 ` Junio C Hamano
2013-06-25 7:02 ` Jiang Xin
2013-06-24 15:21 ` [PATCH v14 02/16] path.c: refactor relative_path(), not only strip prefix Jiang Xin
2013-06-24 15:21 ` [PATCH v14 03/16] quote.c: remove path_relative, use relative_path instead Jiang Xin
2013-06-24 19:11 ` Junio C Hamano
2013-06-25 11:09 ` Jiang Xin
2013-06-25 19:23 ` Junio C Hamano
2013-06-24 15:21 ` [PATCH v14 04/16] Refactor quote_path_relative, remove unused params Jiang Xin
2013-06-24 19:15 ` Junio C Hamano
2013-06-25 11:39 ` Jiang Xin
2013-06-24 15:21 ` [PATCH v14 05/16] Refactor write_name_quoted_relative, " Jiang Xin
2013-06-24 19:19 ` Junio C Hamano
2013-06-25 11:51 ` Jiang Xin
2013-06-24 15:21 ` [PATCH v14 06/16] git-clean: refactor git-clean into two phases Jiang Xin
2013-06-24 19:22 ` Junio C Hamano
2013-06-24 15:21 ` [PATCH v14 07/16] git-clean: add support for -i/--interactive Jiang Xin
2013-06-24 15:21 ` [PATCH v14 08/16] git-clean: show items of del_list in columns Jiang Xin
2013-06-24 15:21 ` [PATCH v14 09/16] git-clean: add colors to interactive git-clean Jiang Xin
2013-06-24 15:21 ` [PATCH v14 10/16] git-clean: use a git-add-interactive compatible UI Jiang Xin
2013-06-24 15:21 ` [PATCH v14 11/16] git-clean: add filter by pattern interactive action Jiang Xin
2013-06-24 15:21 ` [PATCH v14 12/16] git-clean: add select by numbers " Jiang Xin
2013-06-24 15:21 ` [PATCH v14 13/16] git-clean: add ask each " Jiang Xin
2013-06-24 15:21 ` [PATCH v14 14/16] git-clean: add documentation for interactive git-clean Jiang Xin
2013-06-24 15:21 ` [PATCH v14 15/16] test: add t7301 for git-clean--interactive Jiang Xin
2013-06-24 15:21 ` [PATCH v14 16/16] test: run testcases with POSIX absolute paths on Windows Jiang Xin
2013-06-24 18:56 ` Johannes Sixt [this message]
2013-06-25 0:40 ` Jiang Xin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51C89655.4070208@kdbg.org \
--to=j6t@kdbg.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=worldhello.net@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.