diff mbox series

[v3,2/3] repo-settings: fix error handling for unknown values

Message ID 23f692b81be26072f44609df8c78d1b8d81f01d3.1643734828.git.gitgitgadget@gmail.com (mailing list archive)
State Superseded
Headers show
Series repo-settings: fix checking for fetch.negotiationAlgorithm=default | expand

Commit Message

Elijah Newren Feb. 1, 2022, 5 p.m. UTC
From: Elijah Newren <newren@gmail.com>

In commit af3a67de01 ("negotiator: unknown fetch.negotiationAlgorithm
should error out", 2018-08-01), error handling for an unknown
fetch.negotiationAlgorithm was added with the code die()ing.  This was
also added to the documentation for the fetch.negotiationAlgorithm
option, to make it explicit that the code would die on unknown values.

This behavior was lost with commit aaf633c2ad ("repo-settings: create
feature.experimental setting", 2019-08-13).  Restore it so that the
behavior again matches the documentation.

Signed-off-by: Elijah Newren <newren@gmail.com>
---
 repo-settings.c       | 2 ++
 t/t5500-fetch-pack.sh | 7 +++++++
 2 files changed, 9 insertions(+)

Comments

Junio C Hamano Feb. 1, 2022, 6:21 p.m. UTC | #1
"Elijah Newren via GitGitGadget" <gitgitgadget@gmail.com> writes:

> From: Elijah Newren <newren@gmail.com>
>
> In commit af3a67de01 ("negotiator: unknown fetch.negotiationAlgorithm
> should error out", 2018-08-01), error handling for an unknown
> fetch.negotiationAlgorithm was added with the code die()ing.  This was
> also added to the documentation for the fetch.negotiationAlgorithm
> option, to make it explicit that the code would die on unknown values.
>
> This behavior was lost with commit aaf633c2ad ("repo-settings: create
> feature.experimental setting", 2019-08-13).  Restore it so that the
> behavior again matches the documentation.
>
> Signed-off-by: Elijah Newren <newren@gmail.com>
> ---
>  repo-settings.c       | 2 ++
>  t/t5500-fetch-pack.sh | 7 +++++++
>  2 files changed, 9 insertions(+)
>
> diff --git a/repo-settings.c b/repo-settings.c
> index 38c10f9977b..41e1c30845f 100644
> --- a/repo-settings.c
> +++ b/repo-settings.c
> @@ -87,6 +87,8 @@ void prepare_repo_settings(struct repository *r)
>  			r->settings.fetch_negotiation_algorithm = FETCH_NEGOTIATION_NOOP;
>  		else if (!strcasecmp(strval, "default"))
>  			r->settings.fetch_negotiation_algorithm = FETCH_NEGOTIATION_DEFAULT;
> +		else
> +			die("unknown fetch negotiation algorithm '%s'", strval);
>  	}

Makes sense.

> diff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh
> index 666502ed832..41ea9f25de6 100755
> --- a/t/t5500-fetch-pack.sh
> +++ b/t/t5500-fetch-pack.sh
> @@ -971,6 +971,13 @@ test_expect_success 'same as last but with config overrides' '
>  		-c fetch.negotiationAlgorithm=default
>  '
>  
> +test_expect_success 'ensure bogus fetch.negotiationAlgorithm yields error' '
> +	test_when_finished rm -rf clientv0 &&
> +	cp -r client clientv0 &&
> +	test_must_fail git -C clientv0 --fetch.negotiationAlgorithm=bogus \
> +		       fetch origin server_has both_have_2
> +'
> +
>  test_expect_success 'filtering by size' '
>  	rm -rf server client &&
>  	test_create_repo server &&
diff mbox series

Patch

diff --git a/repo-settings.c b/repo-settings.c
index 38c10f9977b..41e1c30845f 100644
--- a/repo-settings.c
+++ b/repo-settings.c
@@ -87,6 +87,8 @@  void prepare_repo_settings(struct repository *r)
 			r->settings.fetch_negotiation_algorithm = FETCH_NEGOTIATION_NOOP;
 		else if (!strcasecmp(strval, "default"))
 			r->settings.fetch_negotiation_algorithm = FETCH_NEGOTIATION_DEFAULT;
+		else
+			die("unknown fetch negotiation algorithm '%s'", strval);
 	}
 
 	/*
diff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh
index 666502ed832..41ea9f25de6 100755
--- a/t/t5500-fetch-pack.sh
+++ b/t/t5500-fetch-pack.sh
@@ -971,6 +971,13 @@  test_expect_success 'same as last but with config overrides' '
 		-c fetch.negotiationAlgorithm=default
 '
 
+test_expect_success 'ensure bogus fetch.negotiationAlgorithm yields error' '
+	test_when_finished rm -rf clientv0 &&
+	cp -r client clientv0 &&
+	test_must_fail git -C clientv0 --fetch.negotiationAlgorithm=bogus \
+		       fetch origin server_has both_have_2
+'
+
 test_expect_success 'filtering by size' '
 	rm -rf server client &&
 	test_create_repo server &&