From 7247ec07ba5d78f7ce93b89461a1503a9a1b021f Mon Sep 17 00:00:00 2001 From: Silvan Mosberger Date: Mon, 16 Oct 2023 15:49:53 +0200 Subject: [PATCH] lib.fileset: Improved error for unsupported coercion values --- lib/fileset/internal.nix | 4 ++-- lib/fileset/tests.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/fileset/internal.nix b/lib/fileset/internal.nix index 546b93f158a1..9892172955c3 100644 --- a/lib/fileset/internal.nix +++ b/lib/fileset/internal.nix @@ -172,11 +172,11 @@ rec { else if ! isPath value then if isStringLike value then throw '' - ${context} ("${toString value}") is a string-like value, but it should be a path instead. + ${context} ("${toString value}") is a string-like value, but it should be a file set or a path instead. Paths represented as strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.'' else throw '' - ${context} is of type ${typeOf value}, but it should be a path instead.'' + ${context} is of type ${typeOf value}, but it should be a file set or a path instead.'' else if ! pathExists value then throw '' ${context} (${toString value}) does not exist.'' diff --git a/lib/fileset/tests.sh b/lib/fileset/tests.sh index 7a104654983f..529f23ae8871 100755 --- a/lib/fileset/tests.sh +++ b/lib/fileset/tests.sh @@ -355,8 +355,8 @@ expectFailure 'toSource { root = ./a; fileset = ./.; }' 'lib.fileset.toSource: ` rm -rf * # Path coercion only works for paths -expectFailure 'toSource { root = ./.; fileset = 10; }' 'lib.fileset.toSource: `fileset` is of type int, but it should be a path instead.' -expectFailure 'toSource { root = ./.; fileset = "/some/path"; }' 'lib.fileset.toSource: `fileset` \("/some/path"\) is a string-like value, but it should be a path instead. +expectFailure 'toSource { root = ./.; fileset = 10; }' 'lib.fileset.toSource: `fileset` is of type int, but it should be a file set or a path instead.' +expectFailure 'toSource { root = ./.; fileset = "/some/path"; }' 'lib.fileset.toSource: `fileset` \("/some/path"\) is a string-like value, but it should be a file set or a path instead. \s*Paths represented as strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.' # Path coercion errors for non-existent paths