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

Re: [PATCH 7/7] t0000: verify that real_path() removes extra slashes

From
Johannes Sixt <j.sixt@viscovery.net>
Date
Sep 5, 2012, 08:40 UTC
Message-ID
<50471003.9010207@viscovery.net>
In-Reply-To
<1346746470-23127-8-git-send-email-mhagger@alum.mit.edu>
Am 9/4/2012 10:14, schrieb mhagger@alum.mit.edu:
Show 26 quoted lines
> From: Michael Haggerty <mhagger@alum.mit.edu>
> 
> These tests already pass, but make sure they don't break in the
> future.
> 
> Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
> ---
> 
> It would be great if somebody would check whether these tests pass on
> Windows, and if not, give me a tip about how to fix them.
> 
>  t/t0000-basic.sh | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh
> index d929578..3c75e97 100755
> --- a/t/t0000-basic.sh
> +++ b/t/t0000-basic.sh
> @@ -468,6 +468,17 @@ test_expect_success 'real path works on absolute paths' '
>  	test "$d/$nopath" = "$(test-path-utils real_path "$d/$nopath")"
>  '
>  
> +test_expect_success 'real path removes extra slashes' '
> +	nopath="hopefully-absent-path" &&
> +	test "/" = "$(test-path-utils real_path "///")" &&
> +	test "/$nopath" = "$(test-path-utils real_path "///$nopath")" &&

Same here: test-path-utils operates on a DOS-style absolute path. Furthermore, as Junio pointed out elsewhere, it is desirable that slashes (dir-separators) at the beginning are not collapsed if there are exactly two of them. Three or more can be collapsed to a single slash.

> +	# We need an existing top-level directory to use in the
> +	# remaining tests.  Use the top-level ancestor of $(pwd):
> +	d=$(pwd -P | sed -e "s|^\(/[^/]*\)/.*|\1|") &&
Same here: Account for the drive letter-colon.
> +	test "$d" = "$(test-path-utils real_path "//$d///")" &&
> +	test "$d/$nopath" = "$(test-path-utils real_path "//$d///$nopath")"

Since $d is a DOS-style path on Windows, //$d means something entirely different than $d. You should split the test in two: One test checks that slashes at the end or before $nopath are collapsed (this must work on Windows as well), and another test protected by POSIX prerequisite to check that slashes at the beginning are collapsed.

-- Hannes
Previous: Nguyen Thai Ngoc DuyNext: Michael Haggerty
Message 21 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.