summaryrefslogtreecommitdiff
path: root/source/Test
diff options
context:
space:
mode:
authoradelon <22380201+adelon@users.noreply.github.com>2026-07-27 16:34:17 +0200
committeradelon <22380201+adelon@users.noreply.github.com>2026-07-27 18:19:29 +0200
commit8256b05aafb89d6f1a1b407e9925e56afa0650ee (patch)
tree1002a776788f9b3bf4b876ea498317de216b133e /source/Test
parentcc31d5293e5f390e7d40d7c63071b049896766c6 (diff)
Reject non-directory source mounts
Diffstat (limited to 'source/Test')
-rw-r--r--source/Test/Unit/Source.hs22
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