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
List information: http://vger.kernel.org/majordomo-info.html
* 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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).