diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+0.1.3.16 - 2022 Jan 24
+
+  - Fix test suite failure on case-insensitive file systems
+
 0.1.3.14 - 2022 Jan 13
 
   - Drop support for GHC 8.0 and 8.2
diff --git a/loc.cabal b/loc.cabal
--- a/loc.cabal
+++ b/loc.cabal
@@ -1,7 +1,7 @@
 cabal-version: 3.0
 
 name: loc
-version: 0.1.3.14
+version: 0.1.3.16
 
 synopsis: Types representing line and column positions and ranges in text files.
 
@@ -59,13 +59,13 @@
 test-suite doctest
     import: test
     type: exitcode-stdio-1.0
-    main-is: doctest.hs
+    main-is: test-with-doctest.hs
     build-depends: doctest >= 0.16 && < 0.21
 
 test-suite hedgehog
     import: test
     type: exitcode-stdio-1.0
-    main-is: hedgehog.hs
+    main-is: test-with-hedgehog.hs
     hs-source-dirs: loc-test-src
     build-depends: hedgehog ^>= 1.0
     other-modules: Test.Loc.Hedgehog.Gen
diff --git a/test/doctest.hs b/test/doctest.hs
deleted file mode 100644
--- a/test/doctest.hs
+++ /dev/null
@@ -1,6 +0,0 @@
-import Prelude
-import Test.DocTest
-
-main :: IO ()
-main =
-  doctest ["-XNoImplicitPrelude", "src"]
diff --git a/test/hedgehog.hs b/test/hedgehog.hs
deleted file mode 100644
--- a/test/hedgehog.hs
+++ /dev/null
@@ -1,118 +0,0 @@
-{-# LANGUAGE TemplateHaskell #-}
-
-import Data.Loc
-import Data.Loc.Internal.Prelude
-
-import qualified Data.Loc.Area as Area
-import qualified Data.Loc.Span as Span
-
-import Hedgehog
-import System.IO (hSetEncoding, stdout, stderr, utf8)
-
-import qualified Data.List as List
-import qualified Hedgehog.Gen as Gen
-import qualified Hedgehog.Range as Range
-import qualified Test.Loc.Hedgehog.Gen as Gen
-
-main :: IO ()
-main =
-  hSetEncoding stdout utf8 *>
-  hSetEncoding stderr utf8 *>
-  checkParallel $$discover >>= \ok ->
-  when (not ok) exitFailure
-
-prop_Span_add_mempty :: Property
-prop_Span_add_mempty =
-    property $
-    forAll Gen.span' >>= \a ->
-    spanArea a + mempty === spanArea a
-  where
-    (+) = (Area.+)
-
-prop_Span_subtract_mempty :: Property
-prop_Span_subtract_mempty =
-    property $
-    forAll Gen.span' >>= \a ->
-    spanArea a - mempty === spanArea a
-  where
-    (-) = (Area.-)
-
-prop_Area_addition_commutativity :: Property
-prop_Area_addition_commutativity =
-    property $
-    forAll Gen.area' >>= \a ->
-    forAll Gen.area' >>= \b ->
-    a + b === b + a
-  where
-    (+) = (Area.+)
-
-prop_Area_add_mempty :: Property
-prop_Area_add_mempty =
-    property $
-    forAll Gen.area' >>= \a ->
-    a + mempty === a
-  where
-    (+) = (Area.+)
-
-prop_Area_subtract_mempty :: Property
-prop_Area_subtract_mempty =
-    property $
-    forAll Gen.area' >>= \a ->
-    a - mempty === a
-  where
-    (-) = (Area.-)
-
-prop_Area_addition_and_subtraction :: Property
-prop_Area_addition_and_subtraction =
-    property $
-    forAll Gen.area' >>= \a ->
-    forAll Gen.area' >>= \b ->
-    forAll Gen.area' >>= \c ->
-    a - b - c === a - (b + c)
-  where
-    (+) = (Area.+)
-    (-) = (Area.-)
-
-prop_Span_joinAsc :: Property
-prop_Span_joinAsc =
-  property $
-  forAll (Gen.list (Range.linear 1 10) Gen.span') >>= \spans ->
-  areaSpansAsc (foldMap spanArea spans) === Span.joinAsc (List.sort spans)
-
-prop_Area_addSpan :: Property
-prop_Area_addSpan =
-  property $
-  forAll Gen.area' >>= \a ->
-  forAll Gen.span' >>= \s ->
-  Area.addSpan s a === areaUnion (spanArea s) a
-
-prop_Area_fromTo_mempty1 :: Property
-prop_Area_fromTo_mempty1 =
-  property $
-  forAll Gen.loc' >>= \x ->
-  forAll Gen.loc' >>= \y ->
-  (Area.fromTo x y == mempty) === (x == y)
-
-prop_Area_fromTo_mempty2 :: Property
-prop_Area_fromTo_mempty2 =
-  property $
-  forAll Gen.loc' >>= \x ->
-  Area.fromTo x x === mempty
-
-prop_Loc_read_show :: Property
-prop_Loc_read_show =
-  property $
-  forAll Gen.loc' >>= \x ->
-  read (show x) === x
-
-prop_Span_read_show :: Property
-prop_Span_read_show =
-  property $
-  forAll Gen.span' >>= \x ->
-  read (show x) === x
-
-prop_Area_read_show :: Property
-prop_Area_read_show =
-  property $
-  forAll Gen.area' >>= \x ->
-  read (show x) === x
diff --git a/test/test-with-doctest.hs b/test/test-with-doctest.hs
new file mode 100644
--- /dev/null
+++ b/test/test-with-doctest.hs
@@ -0,0 +1,6 @@
+import Prelude
+import Test.DocTest
+
+main :: IO ()
+main =
+  doctest ["-XNoImplicitPrelude", "src"]
diff --git a/test/test-with-hedgehog.hs b/test/test-with-hedgehog.hs
new file mode 100644
--- /dev/null
+++ b/test/test-with-hedgehog.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE TemplateHaskell #-}
+
+import Data.Loc
+import Data.Loc.Internal.Prelude
+
+import qualified Data.Loc.Area as Area
+import qualified Data.Loc.Span as Span
+
+import Hedgehog
+import System.IO (hSetEncoding, stdout, stderr, utf8)
+
+import qualified Data.List as List
+import qualified Hedgehog.Gen as Gen
+import qualified Hedgehog.Range as Range
+import qualified Test.Loc.Hedgehog.Gen as Gen
+
+main :: IO ()
+main =
+  hSetEncoding stdout utf8 *>
+  hSetEncoding stderr utf8 *>
+  checkParallel $$discover >>= \ok ->
+  when (not ok) exitFailure
+
+prop_Span_add_mempty :: Property
+prop_Span_add_mempty =
+    property $
+    forAll Gen.span' >>= \a ->
+    spanArea a + mempty === spanArea a
+  where
+    (+) = (Area.+)
+
+prop_Span_subtract_mempty :: Property
+prop_Span_subtract_mempty =
+    property $
+    forAll Gen.span' >>= \a ->
+    spanArea a - mempty === spanArea a
+  where
+    (-) = (Area.-)
+
+prop_Area_addition_commutativity :: Property
+prop_Area_addition_commutativity =
+    property $
+    forAll Gen.area' >>= \a ->
+    forAll Gen.area' >>= \b ->
+    a + b === b + a
+  where
+    (+) = (Area.+)
+
+prop_Area_add_mempty :: Property
+prop_Area_add_mempty =
+    property $
+    forAll Gen.area' >>= \a ->
+    a + mempty === a
+  where
+    (+) = (Area.+)
+
+prop_Area_subtract_mempty :: Property
+prop_Area_subtract_mempty =
+    property $
+    forAll Gen.area' >>= \a ->
+    a - mempty === a
+  where
+    (-) = (Area.-)
+
+prop_Area_addition_and_subtraction :: Property
+prop_Area_addition_and_subtraction =
+    property $
+    forAll Gen.area' >>= \a ->
+    forAll Gen.area' >>= \b ->
+    forAll Gen.area' >>= \c ->
+    a - b - c === a - (b + c)
+  where
+    (+) = (Area.+)
+    (-) = (Area.-)
+
+prop_Span_joinAsc :: Property
+prop_Span_joinAsc =
+  property $
+  forAll (Gen.list (Range.linear 1 10) Gen.span') >>= \spans ->
+  areaSpansAsc (foldMap spanArea spans) === Span.joinAsc (List.sort spans)
+
+prop_Area_addSpan :: Property
+prop_Area_addSpan =
+  property $
+  forAll Gen.area' >>= \a ->
+  forAll Gen.span' >>= \s ->
+  Area.addSpan s a === areaUnion (spanArea s) a
+
+prop_Area_fromTo_mempty1 :: Property
+prop_Area_fromTo_mempty1 =
+  property $
+  forAll Gen.loc' >>= \x ->
+  forAll Gen.loc' >>= \y ->
+  (Area.fromTo x y == mempty) === (x == y)
+
+prop_Area_fromTo_mempty2 :: Property
+prop_Area_fromTo_mempty2 =
+  property $
+  forAll Gen.loc' >>= \x ->
+  Area.fromTo x x === mempty
+
+prop_Loc_read_show :: Property
+prop_Loc_read_show =
+  property $
+  forAll Gen.loc' >>= \x ->
+  read (show x) === x
+
+prop_Span_read_show :: Property
+prop_Span_read_show =
+  property $
+  forAll Gen.span' >>= \x ->
+  read (show x) === x
+
+prop_Area_read_show :: Property
+prop_Area_read_show =
+  property $
+  forAll Gen.area' >>= \x ->
+  read (show x) === x
