diff options
| author | adelon <22380201+adelon@users.noreply.github.com> | 2026-07-27 16:34:17 +0200 |
|---|---|---|
| committer | adelon <22380201+adelon@users.noreply.github.com> | 2026-07-27 18:19:29 +0200 |
| commit | 8256b05aafb89d6f1a1b407e9925e56afa0650ee (patch) | |
| tree | 1002a776788f9b3bf4b876ea498317de216b133e /source/Test | |
| parent | cc31d5293e5f390e7d40d7c63071b049896766c6 (diff) | |
Reject non-directory source mounts
Diffstat (limited to 'source/Test')
| -rw-r--r-- | source/Test/Unit/Source.hs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/source/Test/Unit/Source.hs b/source/Test/Unit/Source.hs index 31af325..372f3a9 100644 --- a/source/Test/Unit/Source.hs +++ b/source/Test/Unit/Source.hs @@ -41,6 +41,8 @@ unitTests = testGroup "Source resolution" [ testCase "validates mount-root-relative POSIX paths" validatesRelativePaths , testCase "rejects duplicate source mount ids" rejectsDuplicateMountIds , testCase "rejects duplicate canonical mount roots" rejectsDuplicateMountRoots + , testCase "permits missing and rejects non-directory mounts" + validatesMountRootTypes , testCase "rejects relative exact roots" rejectsRelativeExactRoots , testCase "retains exact root spelling as diagnostic trivia" retainsRootSpelling , testCase "searched and exact roots share canonical identity" rootFormsShareIdentity @@ -132,6 +134,26 @@ rejectsDuplicateMountRoots = Right mounts -> assertFailure ("expected duplicate-root rejection, got " <> show mounts) +validatesMountRootTypes :: Assertion +validatesMountRootTypes = + withTemporaryDirectory "felix-source-mount-type" \temp -> do + let ident = sourceMountId "project" + missing = temp Posix.</> "missing" + regularFile = temp Posix.</> "file" + assertRight =<< prepareSourceMounts [(ident, missing)] + + writeFile regularFile "" + result <- prepareSourceMounts [(ident, regularFile)] + case result of + Left SourceMountNotDirectory{} -> + pure () + Left err -> + assertFailure + ("expected SourceMountNotDirectory, got " <> show err) + Right mounts -> + assertFailure + ("expected non-directory rejection, got " <> show mounts) + rejectsRelativeExactRoots :: Assertion rejectsRelativeExactRoots = assertEqual |
