diff options
author | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2022-08-09 23:06:16 -0400 |
---|---|---|
committer | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2022-08-09 23:14:42 -0400 |
commit | 97cb43e732a38758c95b7caf3963507188d011cf (patch) | |
tree | 8ac940da8b320712564fb49e477a4b31b26bde17 | |
parent | 02b69362cb5922e3e2579b120a12afcc6167a46e (diff) |
tests: configuration: Add a test to cover 'unset regression.
The regression was introduced with a2b89a3319dc1d621c546855f578acae5baaf6da,
and introduce a risk that 'unset leaks to serialized configuration files.
* tests/services/configuration.scm (maybe-symbol): New type.
(config-with-maybe-symbol): New configuration.
("symbol maybe value serialization, unspecified"): New test.
Reported-by: Attila Lendvai <attila@lendvai.name>
-rw-r--r-- | tests/services/configuration.scm | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/tests/services/configuration.scm b/tests/services/configuration.scm index 548c400bfe..649dad26e8 100644 --- a/tests/services/configuration.scm +++ b/tests/services/configuration.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org> ;;; @@ -141,6 +141,24 @@ (config-with-maybe-number (port 42)))) +(define (serialize-symbol name value) + (format #f "~a=~a~%" name value)) + +(define-maybe symbol) + +(define-configuration config-with-maybe-symbol + (protocol maybe-symbol "")) + +;;; Maybe symbol values are currently seen as serializable, because the +;;; unspecified value is 'unset, which is a symbol itself. +;;; TODO: Remove expected fail marker after resolution. +(test-expect-fail 1) +(test-equal "symbol maybe value serialization, unspecified" + "" + (gexp->approximate-sexp + (serialize-configuration (config-with-maybe-symbol) + config-with-maybe-symbol-fields))) + (define-maybe/no-serialization string) (define-configuration config-with-maybe-string/no-serialization |