git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 5/7] t0000: verify that real_path() works correctly with absolute paths

From
Johannes Sixt <j.sixt@viscovery.net>
Date
Sep 5, 2012, 08:40 UTC
Message-ID
<50470FFB.2070204@viscovery.net>
In-Reply-To
<1346746470-23127-6-git-send-email-mhagger@alum.mit.edu>
Am 9/4/2012 10:14, schrieb mhagger@alum.mit.edu:
Show 20 quoted lines
> From: Michael Haggerty <mhagger@alum.mit.edu>
> 
> There is currently a bug: if passed an absolute top-level path that
> doesn't exist (e.g., "/foo") it incorrectly interprets the path as a
> relative path (e.g., returns "$(pwd)/foo").  So mark the test as
> failing.
> 
> Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
> ---
>  t/t0000-basic.sh | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh
> index 1a51634..ad002ee 100755
> --- a/t/t0000-basic.sh
> +++ b/t/t0000-basic.sh
> @@ -458,7 +458,17 @@ test_expect_success 'real path rejects the empty string' '
>  	test_must_fail test-path-utils real_path ""
>  '
>  
These tests should really be in t0060-path-utils.sh.
Show 5 quoted lines
> -test_expect_success SYMLINKS 'real path works as expected' '
> +test_expect_failure 'real path works on absolute paths' '
> +	nopath="hopefully-absent-path" &&
> +	test "/" = "$(test-path-utils real_path "/")" &&
> +	test "/$nopath" = "$(test-path-utils real_path "/$nopath")" &&

These tests fail on Windows because test-path-utils operates on a DOS-style absolute path even if a POSIX style absolute path is passed as argument. The best thing would be to move this to a separate test that is protected by a POSIX prerequisite (which is set in t0060).

> +	# Find an existing top-level directory for the remaining tests:
> +	d=$(pwd -P | sed -e "s|^\(/[^/]*\)/.*|\1|") &&

pwd -P actually expands to pwd -W on Windows, and produces a DOS-style path. I suggest to insert [^/]* to skip drive letter-colon like so:

	d=$(pwd -P | sed -e "s|^\([^/]*/[^/]*\)/.*|\1|") &&
> +	test "$d" = "$(test-path-utils real_path "$d")" &&
> +	test "$d/$nopath" = "$(test-path-utils real_path "$d/$nopath")"
Then these tests pass.
-- Hannes
Previous: mhagger@alum.mit.eduNext: Michael Haggerty
Message 7 of 25 in “Fix some bugs in abspath.c”
  1. 0/7 Fix some bugs in abspath.cmhagger@alum.mit.edu, Sep 4, 2012
  2. 1/7 t0000: verify that absolute_path() fails if passed the empty stringmhagger@alum.mit.edu, Sep 4, 2012
  3. 2/7 absolute_path(): reject the empty stringmhagger@alum.mit.edu, Sep 4, 2012
  4. 3/7 t0000: verify that real_path() fails if passed the empty stringmhagger@alum.mit.edu, Sep 4, 2012
  5. 4/7 real_path(): reject the empty stringmhagger@alum.mit.edu, Sep 4, 2012
  6. 5/7 t0000: verify that real_path() works correctly with absolute pathsmhagger@alum.mit.edu, Sep 4, 2012
  7. Johannes SixtSep 5, 2012
  8. Michael HaggertySep 6, 2012
  9. Junio C HamanoSep 6, 2012
  10. Michael HaggertySep 9, 2012
  11. Junio C HamanoSep 9, 2012
  12. Junio C HamanoSep 9, 2012
  13. 6/7 real_path(): properly handle nonexistent top-level pathsmhagger@alum.mit.edu, Sep 4, 2012
  14. 7/7 t0000: verify that real_path() removes extra slashesmhagger@alum.mit.edu, Sep 4, 2012
  15. Junio C HamanoSep 4, 2012
  16. Nguyen Thai Ngoc DuySep 5, 2012
  17. Junio C HamanoSep 6, 2012
  18. Nguyen Thai Ngoc DuySep 6, 2012
  19. Junio C HamanoSep 6, 2012
  20. Nguyen Thai Ngoc DuySep 7, 2012
  21. Johannes SixtSep 5, 2012
  22. Michael HaggertySep 6, 2012
  23. Junio C HamanoSep 4, 2012
  24. Junio C HamanoSep 4, 2012
  25. Nguyen Thai Ngoc DuySep 5, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.