@@ -252,8 +252,3 @@ The `fileFilter` function takes a path, and not a file set, as its second argume
- (+) That can change depending on which files are included, so if it's used for `fileFilter`
it would change the `subpath`/`components` value depending on which files are included.
- (+) If necessary, this restriction can be relaxed later, the opposite wouldn't be possible
## To update in the future
Here's a list of places in the library that need to be updated in the future:
- If/Once a function exists that can optionally include a path depending on whether it exists, the error message for the path not existing in `_coerce` should mention the new function
\s*Note that this only works for sources created from paths.'
# Path coercion errors for non-existent paths
expectFailure 'toSource { root = ./.; fileset = ./a; }''lib.fileset.toSource: `fileset` \('"$work"'/a\) is a path that does not exist.'
expectFailure 'toSource { root = ./.; fileset = ./a; }''lib.fileset.toSource: `fileset` \('"$work"'/a\) is a path that does not exist.
\s*To create a file set from a path that may not exist, use `lib.fileset.maybeMissing`.'
# File sets cannot be evaluated directly
expectFailure 'union ./. ./.''lib.fileset: Directly evaluating a file set is not supported.
@@ -1450,6 +1451,40 @@ checkGitTracked
rm-rf--*
## lib.fileset.maybeMissing
# Argument must be a path
expectFailure 'maybeMissing "someString"''lib.fileset.maybeMissing: Argument \("someString"\) is a string-like value, but it should be a path instead.'
expectFailure 'maybeMissing null''lib.fileset.maybeMissing: Argument is of type null, but it should be a path instead.'
tree=(
)
checkFileset 'maybeMissing ./a'
checkFileset 'maybeMissing ./b'
checkFileset 'maybeMissing ./b/c'
# Works on single files
tree=(
[a]=1
[b/c]=0
[b/d]=0
)
checkFileset 'maybeMissing ./a'
tree=(
[a]=0
[b/c]=1
[b/d]=0
)
checkFileset 'maybeMissing ./b/c'
# Works on directories
tree=(
[a]=0
[b/c]=1
[b/d]=1
)
checkFileset 'maybeMissing ./b'
# TODO: Once we have combinators and a property testing library, derive property tests from https://en.wikipedia.org/wiki/Algebra_of_sets