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

Re: [PATCH] Prototype PATH_MAX length detection in tests, demonstrated in t0001-init.sh

From
Johannes Sixt <j6t@kdbg.org>
Date
Jan 9, 2018, 23:00 UTC
Message-ID
<47197839-720f-3c8d-729c-3fcb615aeb36@kdbg.org>
In-Reply-To
<f08a9506afb73c57751d3d413bfb433a.squirrel@secure.elehost.com>
Am 09.01.2018 um 19:12 schrieb Randall S. Becker:
Show 11 quoted lines
> This patch create a configuration variable PATH_MAX that
> corresponds with the value in limits.h. The value of PATH_MAX,
> if supplied, is added to BASIC_CFLAGS and will validate with
> limits.h. PATH_MAX is also added to GIT-BUILD-OPTIONS and is
> available in the git test suite.
> 
> This patch also creates a test_expected_success_cond, taking a
> single function as first argument. In the t0001-init.sh case,
> subtest 34 this function is test_path_max_is_sane, although any
> 0/1 returning function can be used. The prototype allows the long base
> path test to be skipped if PATH_MAX is less than 2048 bytes.
OK, but...
Show 13 quoted lines
> diff --git a/t/t0001-init.sh b/t/t0001-init.sh
> index c4814d2..58dad87 100755
> --- a/t/t0001-init.sh
> +++ b/t/t0001-init.sh
> @@ -315,7 +315,7 @@ test_expect_success 'init with separate gitdir' '
>   	test_path_is_dir realgitdir/refs
>   '
> 
> -test_expect_success 'init in long base path' '
> +test_expect_success_cond 'test_path_max_is_sane' 'init in long base path' '
>   	# exceed initial buffer size of strbuf_getcwd()
>   	component=123456789abcdef &&
>   	test_when_finished "chmod 0700 $component; rm -rf $component" &&

... why would you want to skip this test? If I'm reading the test case correctly, it requires only a path length of 127 plus whatever your build directory is plus a score for the trash directory. That should pose a problem only if your system is even more crippled than Windows with its PATH_MAX of 260.

Show 12 quoted lines
> +test_path_max_is_sane() {
> +	if test -z "$PATH_MAX"
> +	then
> +		retval=1
> +	elif test $PATH_MAX -ge 2048
> +	then
> +		retval=1
> +	else
> +		retval=0
> +	fi
> +	return "$retval"
> +}
This can probably be reduced to
test_path_max_is_sane () {
	test "${PATH_MAX:-4000}" -ge 2048
}
(Style note: we have a blank before the () pair in shell scripts.)
-- Hannes
Previous: Randall S. BeckerNext: Randall S. Becker
Message 3 of 6 in “Prototype PATH_MAX length detection in tests, demonstrated in t0001-init.sh”
  1. Prototype PATH_MAX length detection in tests, demonstrated in t0001-init.shRandall S. Becker, Jan 9, 2018
  2. Randall S. BeckerJan 9, 2018
  3. Johannes SixtJan 9, 2018
  4. Randall S. BeckerJan 10, 2018
  5. Johannes SixtJan 10, 2018
  6. Randall S. BeckerJan 10, 2018

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.