diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog
 
+## [0.15.1.2] - 2024-07-18
+
+* Fix parsing filter flags so it becomes easy to select tests with spaces in their description
+
 ## [0.15.1.1] - 2023-10-04
 
 * Compatibility with `optparse-applicative > 0.18`.
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -3,3 +3,4 @@
 mrcjkb
 L7R7
 TheOddler
+Nova In Silico
diff --git a/LICENSE.md b/LICENSE.md
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -1,6 +1,6 @@
 # Sydtest License
 
-Copyright (c) 2020-2022 Tom Sydney Kerckhove
+Copyright (c) 2020-2024 Tom Sydney Kerckhove
 
 ## Anyone
 
diff --git a/multi-discover-test/Bar/BarSpec.hs b/multi-discover-test/Bar/BarSpec.hs
deleted file mode 100644
--- a/multi-discover-test/Bar/BarSpec.hs
+++ /dev/null
@@ -1,12 +0,0 @@
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE TypeOperators #-}
-
-module Bar.BarSpec where
-
-import Test.Syd
-
-spec :: TestDef (String : otherOuters) ()
-spec = do
-  describe "can access outer resource" $
-    itWithOuter "bar is bar" $
-      \s -> s `shouldBe` "bar"
diff --git a/multi-discover-test/Bar/Spec.hs b/multi-discover-test/Bar/Spec.hs
deleted file mode 100644
--- a/multi-discover-test/Bar/Spec.hs
+++ /dev/null
@@ -1,1 +0,0 @@
-{-# OPTIONS_GHC -F -pgmF sydtest-discover -optF --no-main #-}
diff --git a/multi-discover-test/Baz/Qux/QuxSpec.hs b/multi-discover-test/Baz/Qux/QuxSpec.hs
deleted file mode 100644
--- a/multi-discover-test/Baz/Qux/QuxSpec.hs
+++ /dev/null
@@ -1,8 +0,0 @@
-module Baz.Qux.QuxSpec where
-
-import Test.Syd
-
-spec :: Spec
-spec = do
-  describe "several nesting levels" $
-    it "works" True
diff --git a/multi-discover-test/Baz/Qux/Spec.hs b/multi-discover-test/Baz/Qux/Spec.hs
deleted file mode 100644
--- a/multi-discover-test/Baz/Qux/Spec.hs
+++ /dev/null
@@ -1,1 +0,0 @@
-{-# OPTIONS_GHC -F -pgmF sydtest-discover -optF --no-main #-}
diff --git a/multi-discover-test/DoNotDiscover/FooSpec.hs b/multi-discover-test/DoNotDiscover/FooSpec.hs
deleted file mode 100644
--- a/multi-discover-test/DoNotDiscover/FooSpec.hs
+++ /dev/null
@@ -1,11 +0,0 @@
-{-# LANGUAGE TypeApplications #-}
-
-module DoNotDiscover.FooSpec where
-
-import Test.Syd
-
-spec :: Spec
-spec = do
-  describe "do not discover" $
-    it "always fails" $
-      expectationFailure @() "This test fails because sydtest-discover isn't working properly. This spec should not be discovered"
diff --git a/multi-discover-test/Foo/FooSpec.hs b/multi-discover-test/Foo/FooSpec.hs
deleted file mode 100644
--- a/multi-discover-test/Foo/FooSpec.hs
+++ /dev/null
@@ -1,9 +0,0 @@
-module Foo.FooSpec where
-
-import Test.Syd
-
-spec :: Spec
-spec = do
-  describe "plain test" $
-    it "simple example" $
-      2 + 3 == (5 :: Int)
diff --git a/multi-discover-test/Foo/Spec.hs b/multi-discover-test/Foo/Spec.hs
deleted file mode 100644
--- a/multi-discover-test/Foo/Spec.hs
+++ /dev/null
@@ -1,1 +0,0 @@
-{-# OPTIONS_GHC -F -pgmF sydtest-discover -optF --no-main #-}
diff --git a/multi-discover-test/Main.hs b/multi-discover-test/Main.hs
deleted file mode 100644
--- a/multi-discover-test/Main.hs
+++ /dev/null
@@ -1,12 +0,0 @@
-module Main where
-
-import qualified Bar.Spec as Bar
-import qualified Baz.Qux.QuxSpec as Qux
-import qualified Foo.Spec as Foo
-import Test.Syd
-
-main :: IO ()
-main = sydTest $ do
-  Foo.spec
-  beforeAll (pure "bar") Bar.spec
-  Qux.spec
diff --git a/output-test/Main.hs b/output-test/Main.hs
deleted file mode 100644
--- a/output-test/Main.hs
+++ /dev/null
@@ -1,58 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# OPTIONS_GHC -fno-warn-missing-fields -fno-warn-missing-methods -fno-warn-partial-fields -fno-warn-incomplete-uni-patterns -fno-warn-incomplete-record-updates #-}
-
-module Main where
-
-import qualified Data.Text.Encoding as TE
-import qualified Data.Text.Lazy as LT
-import qualified Data.Text.Lazy.Builder as TLB
-import Spec (spec)
-import Test.Syd
-import Test.Syd.OptParse
-import Text.Colour
-
-main :: IO ()
-main = do
-  settings <- getSettings
-  testForest <- execTestDefM settings spec
-
-  putStrLn "Synchronous, non-interleaved"
-  rf1 <- timeItT 0 $ runSpecForestSynchronously settings testForest
-  printOutputSpecForest settings rf1
-
-  putStrLn "Synchronous, interleaved"
-  _ <- runSpecForestInterleavedWithOutputSynchronously settings testForest
-
-  putStrLn "Asynchronous, non-interleaved"
-  rf2 <- timeItT 0 $ runSpecForestAsynchronously settings 8 testForest
-  printOutputSpecForest settings rf2
-
-  putStrLn "Asynchronous, interleaved"
-  _ <- runSpecForestInterleavedWithOutputAsynchronously settings 8 testForest
-
-  putStrLn "Golden test of output"
-  sydTest $
-    describe "Golden Output" $
-      it "renders output in the same way as before" $
-        goldenByteStringFile "test_resources/output-test.txt" $ do
-          testForestInOrder <- execTestDefM settings $ doNotRandomiseExecutionOrder spec
-          rf <- timeItT 0 $ runSpecForestSynchronously settings testForestInOrder
-          let eraseTimed :: Timed a -> Timed a
-              eraseTimed t =
-                t
-                  { timedBegin = 0,
-                    timedEnd = 0,
-                    timedWorker = 0
-                  }
-
-              erasedTimedInResultForest :: ResultForest -> ResultForest
-              erasedTimedInResultForest = fmap (fmap (fmap eraseTimed))
-              eraseTiming :: Timed ResultForest -> Timed ResultForest
-              eraseTiming = fmap erasedTimedInResultForest . eraseTimed
-          pure
-            $ TE.encodeUtf8
-              . LT.toStrict
-              . TLB.toLazyText
-              . renderResultReport defaultSettings With24BitColours
-            $ eraseTiming rf
diff --git a/output-test/Spec.hs b/output-test/Spec.hs
deleted file mode 100644
--- a/output-test/Spec.hs
+++ /dev/null
@@ -1,350 +0,0 @@
-{-# LANGUAGE NumericUnderscores #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# OPTIONS_GHC -fno-warn-missing-fields -fno-warn-missing-methods -fno-warn-partial-fields -fno-warn-incomplete-uni-patterns -fno-warn-incomplete-record-updates -fno-warn-overlapping-patterns #-}
-
-module Spec where
-
-import Control.Concurrent
-import Control.Concurrent.STM
-import Control.Exception
-import Control.Monad
-import Data.ByteString (ByteString)
-import Data.List
-import Data.Text (Text)
-import qualified Data.Text.Lazy as LT
-import qualified Data.Text.Lazy.Builder as TLB
-import System.Exit
-import System.Random (randomRIO)
-import Test.QuickCheck
-import Test.Syd
-import Test.Syd.OptParse
-import Text.Colour
-
-data DangerousRecord = Cons1 {field :: String} | Cons2
-
-class ToUnit a where
-  toUnit :: a -> ()
-
-instance ToUnit Int -- No implementation on purpose
-
-spec :: Spec
-spec = do
-  it "Passes" (pure () :: IO ())
-  describe "error" $ do
-    it "Pure error" (pure (error "foobar") :: IO ())
-    it "Impure error" (error "foobar" :: IO ())
-  describe "undefined" $ do
-    it "Pure undefined" (pure undefined :: IO ())
-    it "Impure undefined" (undefined :: IO ())
-  it "Exit code" $ do
-    exitWith $ ExitFailure 1 :: IO ()
-  describe "exceptions" $ do
-    let exceptionTest :: String -> a -> Spec
-        exceptionTest s a = describe s $ do
-          it "fails in IO, as the result" (pure (seq a ()) :: IO ())
-          it "fails in IO, as the action" (seq a (pure ()) :: IO ())
-          it "fails in pure code" $ seq a True
-    it "Record construction error" (throw $ RecConError "test" :: IO ())
-    exceptionTest "Record construction error" $ let c = Cons1 {} in field c
-    it "Record selection error" (throw $ RecSelError "test" :: IO ())
-    exceptionTest "Record selection error" $ let c = Cons2 in field c
-    it "Record update error" (throw $ RecUpdError "test" :: IO ())
-    exceptionTest "Record update error" $ let c = Cons2 in c {field = "this will throw"}
-    it "Pattern matching error" (throw $ PatternMatchFail "test" :: IO ())
-    exceptionTest "Pattern matching error" $ let Cons1 s = Cons2 in s
-    it "ArithException" (throw Underflow :: IO ())
-    exceptionTest "Pattern matching error" $ 1 `div` (0 :: Int)
-    it "NoMethodError" (throw (NoMethodError "test") :: IO ())
-    exceptionTest "Pattern matching error" $ toUnit (5 :: Int)
-  describe "Printing" $ do
-    it "print" $ print 'a'
-    it "putStrLn" $ putStrLn "hi"
-  modifyMaxSuccess (`div` 10) $
-    modifyMaxSize (`div` 1) $
-      modifyMaxShrinks (const 1) $
-        modifyMaxDiscardRatio (const 1) $
-          describe "Property tests" $ do
-            describe "pure" $ do
-              it "reversing a list twice is the same as reversing it once" $
-                property $
-                  \ls -> reverse (reverse ls) == (ls :: [Int])
-              it "should fail to show that sorting does nothing" $
-                property $
-                  \ls -> sort ls == (ls :: [Int])
-              it "should work with custom generators too" $ forAll arbitrary $ \b -> b || True
-            describe "impure" $ do
-              it "reversing a list twice is the same as reversing it once" $
-                property $
-                  \ls -> reverse (reverse ls) `shouldBe` (ls :: [Int])
-              it "should fail to show that sorting does nothing" $
-                property $
-                  \ls -> sort ls `shouldBe` (ls :: [Int])
-              it "should work with custom generators too" $ forAll arbitrary $ \b -> (b || True) `shouldBe` True
-  describe "Long running tests" $
-    forM_ [1 :: Int .. 10] $
-      \i ->
-        it (concat ["takes a while (", show i, ")"]) $
-          threadDelay 100_000
-  describe "Diff" $ do
-    it "shows nice multi-line diffs" $
-      ("foo", replicate 7 "quux", "bar") `shouldBe` (("foofoo", replicate 6 "quux", "baz") :: (String, [String], String))
-    it "shows nice multi-line diffs" $
-      ("foo", [], "bar") `shouldBe` (("foofoo", replicate 6 "quux", "baz") :: (String, [String], String))
-  describe "assertions" $ do
-    it "shouldBe" $ 3 `shouldBe` (4 :: Int)
-    it "shouldNotBe" $ 3 `shouldNotBe` (3 :: Int)
-    it "shouldSatisfy" $ (3 :: Int) `shouldSatisfy` even
-    it "shouldNotSatisfy" $ (3 :: Int) `shouldNotSatisfy` odd
-    it "shouldSatisfyNamed" $ shouldSatisfyNamed (3 :: Int) "even" even
-    it "shouldNotSatisfyNamed" $ shouldNotSatisfyNamed (3 :: Int) "odd" odd
-  pending "pending test"
-  describe "Golden" $ do
-    it "does not fail the suite when an exception happens while reading" $
-      GoldenTest
-        { goldenTestRead = die "test",
-          goldenTestProduce = pure (),
-          goldenTestWrite = \() -> do
-            pure (),
-          goldenTestCompare = \() () -> Nothing
-        }
-    it "does not fail the suite when an exception happens while producing" $
-      GoldenTest
-        { goldenTestRead = pure Nothing,
-          goldenTestProduce = die "test",
-          goldenTestWrite = \() -> do
-            pure (),
-          goldenTestCompare = \() () -> Nothing
-        }
-    it "does not fail the suite when an exception happens while writing" $
-      GoldenTest
-        { goldenTestRead = pure Nothing,
-          goldenTestProduce = pure (),
-          goldenTestWrite = \() -> die "test",
-          goldenTestCompare = \() () -> Nothing
-        }
-    it "does not fail the suite when an exception happens while checking for equality" $
-      GoldenTest
-        { goldenTestRead = pure (Just ()),
-          goldenTestProduce = pure (),
-          goldenTestWrite = \() -> pure (),
-          goldenTestCompare = \actual expected -> case 1 `div` (0 :: Int) of
-            1 -> Nothing
-            _ ->
-              if actual == expected
-                then Nothing
-                else Just $ NotEqualButShouldHaveBeenEqual (show actual) (show expected)
-        }
-
-    describe "outputResultForest" $ do
-      it "outputs the same as last time" $ do
-        pureGoldenTextFile
-          "test_resources/output.golden"
-          (LT.toStrict $ TLB.toLazyText $ renderResultReport defaultSettings With24BitColours (Timed {timedValue = [], timedBegin = 0, timedEnd = 0, timedWorker = 0}))
-
-  doNotRandomiseExecutionOrder $
-    describe "Around" $ do
-      describe "before" $ do
-        before (void (throwIO (userError "test"))) $
-          it "does not kill the test suite" $ \() ->
-            pure () :: IO ()
-
-      describe "before_" $ do
-        before_ (throwIO (userError "test")) $
-          it "does not kill the test suite" $ \() ->
-            pure () :: IO ()
-
-      describe "after" $ do
-        after (\_ -> throwIO (userError "test")) $
-          it "does not kill the test suite" $ \() ->
-            pure () :: IO ()
-
-      describe "after_" $ do
-        after_ (throwIO (userError "test")) $
-          it "does not kill the test suite" $ \() ->
-            pure () :: IO ()
-
-      describe "around" $ do
-        around (\_ -> throwIO (userError "test")) $
-          it "does not kill the test suite" $ \() ->
-            pure () :: IO ()
-
-      describe "around_" $ do
-        around_ (\_ -> throwIO (userError "test")) $
-          it "does not kill the test suite" $ \() ->
-            pure () :: IO ()
-
-      describe "aroundWith" $ do
-        aroundWith (\_ () -> throwIO (userError "test")) $
-          it "does not kill the test suite" $ \() ->
-            pure () :: IO ()
-
-      describe "aroundWith'" $ do
-        aroundWith' (\_ () () -> throwIO (userError "test")) $
-          it "does not kill the test suite" $ \() ->
-            pure () :: IO ()
-
-  it "expectationFailure" (expectationFailure "fails" :: IO ())
-
-  describe "String" $ do
-    it "compares strings" $ ("foo\nbar\tquux " :: String) `shouldBe` "foq\nbaz\tqex"
-    it "compares strings" $ ("foo\nbar\tquux " :: String) `stringShouldBe` "foq\nbaz\tqex"
-    it "compares texts" $ ("foo\nbar\tquux " :: Text) `shouldBe` "foq\nbaz\tqex"
-    it "compares texts" $ ("foo\nbar\tquux " :: Text) `textShouldBe` "foq\nbaz\tqex"
-    it "compares bytestrings" $ ("foo\nbar\tquux " :: ByteString) `shouldBe` "foq\nbaz\tqex"
-
-  describe "Context" $ do
-    it "shows a nice context" $ context "Context" $ True `shouldBe` False
-    it "shows a nice context multiple levels deep" $
-      context "Context1" $
-        context "Context2" $
-          context "Context3" $
-            True `shouldBe` False
-    it "shows a context when an exception is thrown as well" $
-      context "context" (undefined :: IO ())
-
-  modifyMaxSize (`div` 10) $
-    describe "Property" $ do
-      describe "0 tests run" $ modifyMaxSuccess (const 0) $ it "shows a red '0 tests' when no tests are run" $ property $ \b -> b `shouldBe` False
-      describe "generated values" $
-        it "shows many generated values too" $
-          property $ \i ->
-            property $ \j ->
-              property $ \k ->
-                property $ \l ->
-                  property $ \m ->
-                    i + j + k + l + m `shouldBe` m + l + k + j + i + (1 :: Int)
-      let magnitude :: Int -> Int
-          magnitude = max 0 . (ceiling :: Double -> Int) . logBase 10 . fromIntegral
-      describe "labels" $ do
-        it "shows the labels in use on success" $
-          property $ \xs ->
-            label ("length of input is " ++ show (length xs)) $
-              reverse (reverse xs) `shouldBe` (xs :: [Int])
-        it "shows the labels in use on success" $
-          property $ \xs ->
-            label ("length of input is " ++ show (length xs)) $
-              label ("magnitude (digits) of sum of input is " ++ show (magnitude (sum xs))) $
-                reverse (reverse xs) `shouldBe` (xs :: [Int])
-        it "shows the labels in use on failure" $
-          property $ \xs ->
-            label ("length of input is " ++ show (length xs)) $
-              label ("magnitude (digits) of sum of input is " ++ show (magnitude (sum xs))) $
-                reverse (reverse xs) `shouldBe` (0 : xs :: [Int])
-
-      describe "classes" $ do
-        it "shows the classes in use on success" $
-          forAll (sort <$> arbitrary) $ \xs ->
-            classify (length xs > 1) "non-trivial" $
-              sort xs `shouldBe` (xs :: [Int])
-        it "shows the classes in use on success" $
-          forAll (sort <$> arbitrary) $ \xs ->
-            classify (null xs) "empty" $
-              classify (length xs == 1) "single element" $
-                classify (length xs > 1) "non-trivial" $
-                  sort xs `shouldBe` (xs :: [Int])
-        it "shows the classes in use on failure" $
-          forAll (sort <$> arbitrary) $ \xs ->
-            classify (null xs) "empty" $
-              classify (length xs == 1) "single element" $
-                classify (length xs > 1) "non-trivial" $
-                  sort xs `shouldBe` (0 : xs :: [Int])
-
-      describe "tables" $ do
-        it "shows the tables in use on success" $
-          forAll (sort <$> arbitrary) $ \xs ->
-            tabulate "List elements" (map show xs) $
-              sort xs `shouldBe` (xs :: [Int])
-
-  modifyMaxSize (const 30) $ -- Bigger than the 20 below
-    modifyMaxShrinks (const 30) $ -- Definitely not zero
-      describe "Shrinking" $ do
-        var <- liftIO newEmptyMVar
-        let withVar func = do
-              putMVar var ()
-              r <- func
-              takeMVar var
-              pure r
-        around_ withVar $
-          it "can grab the mvar during shrinking" $
-            forAllShrink (sized $ \n -> pure n) shrink $ \i -> do
-              () <- readMVar var
-              i `shouldSatisfy` (< 20)
-
-  describe "Retries" $ do
-    withoutRetries $
-      it "does not retry if the test is configured withoutRetries" False
-    withRetries 5 $
-      it "Retries this five times" False
-
-  describe "Flakiness" $ do
-    potentiallyFlaky $ do
-      it "Allows flakiness on True eventhough there is none (should succeed)" True
-      it "Allows flakiness on False eventhough there is none (should fail)" False
-    potentiallyFlakyWith "We're on it!" $ do
-      var <- liftIO $ newTVarIO (0 :: Int)
-      it "allows this intentionally flaky test with the default number of retries" $ do
-        atomically $ modifyTVar' var succ
-        i <- readTVarIO var
-        i `shouldBe` 2
-    notFlaky $ do
-      var <- liftIO $ newTVarIO (0 :: Int)
-      it "Does not allow flakiness if flakiness is not allowed even if retries happen" $ do
-        atomically $ modifyTVar' var succ
-        i <- readTVarIO var
-        i `shouldBe` 2
-    flaky 5 $ it "Allows flakiness in this boolean five times (should fail with 5 retries)" False
-    flakyWith 4 "We're on it!" $ do
-      var <- liftIO $ newTVarIO (0 :: Int)
-      it "allows this intentionally flaky test with up to four retries" $ do
-        atomically $ modifyTVar' var succ
-        i <- readTVarIO var
-        i `shouldBe` 2
-
-  describe "xdescribe" $ do
-    xdescribe "two pending tests below here" $ do
-      it "one" False
-      it "two" True
-    xdescribe "four pending tests below here" $ do
-      it "one" False
-      it "two" True
-      describe "wat" $ do
-        it "three" False
-        it "four" True
-
-  describe "callstack" $ do
-    it "it" False
-    specify "specify" False
-    prop "prop" False
-    describe "describe" $ do
-      it "describe-it" False
-      specify "describe-specify" False
-
-  describe "expectations" $ do
-    expectFailing $ do
-      it "considered passing" False
-      expectPassing $ it "considered passing" True
-    expectPassing $ do
-      it "considered failing" False
-      expectFailing $ it "considered failing" True
-
-  describe "combinators" $ do
-    let somePropertyCombinator :: Gen Int -> (Int -> Int) -> Property
-        somePropertyCombinator gen func =
-          forAll gen $ \i ->
-            even (func i)
-    it "should fail" $ somePropertyCombinator arbitrary (* 3)
-    it "should pass" $ somePropertyCombinator arbitrary (* 4)
-    it "should not crash (undefined value)" $ somePropertyCombinator arbitrary undefined
-    it "should not crash (undefined generator)" $ somePropertyCombinator undefined (* 2)
-
-    let someTestSuiteCombinator i =
-          it "should be even" $ even (i :: Int)
-    someTestSuiteCombinator 1
-    someTestSuiteCombinator 2
-    someTestSuiteCombinator undefined
-
-  describe "randomness" $
-    it "always outputs the same pseudorandomness" $ do
-      i <- randomRIO (1, 100)
-      i `shouldBe` (2 :: Int)
diff --git a/src/Test/Syd/Def/Around.hs b/src/Test/Syd/Def/Around.hs
--- a/src/Test/Syd/Def/Around.hs
+++ b/src/Test/Syd/Def/Around.hs
@@ -4,7 +4,6 @@
 {-# LANGUAGE GADTs #-}
 {-# LANGUAGE IncoherentInstances #-}
 {-# LANGUAGE LambdaCase #-}
-{-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TypeFamilies #-}
 
@@ -60,7 +59,7 @@
 -- Note that this function turns off shrinking.
 -- See https://github.com/nick8325/quickcheck/issues/331
 beforeWith' ::
-  HContains outers outer =>
+  (HContains outers outer) =>
   (outer -> oldInner -> IO newInner) ->
   TestDefM outers newInner result ->
   TestDefM outers oldInner result
@@ -169,7 +168,7 @@
 -- See https://github.com/nick8325/quickcheck/issues/331
 aroundWith' ::
   forall newInner oldInner outer result (outers :: [Type]).
-  HContains outers outer =>
+  (HContains outers outer) =>
   -- | The function that provides the new inner resource using the old resource.
   -- It can also use and modify the outer resource
   ((outer -> newInner -> IO ()) -> (outer -> oldInner -> IO ())) ->
@@ -185,7 +184,7 @@
         -- d: oldInner
         let modifyVal ::
               forall x.
-              HContains x outer =>
+              (HContains x outer) =>
               (ProgressReporter -> ((HList x -> newInner -> IO ()) -> IO ()) -> IO TestRunResult) ->
               ProgressReporter ->
               ((HList x -> oldInner -> IO ()) -> IO ()) ->
@@ -202,7 +201,7 @@
 
             -- For this function to work recursively, the first parameter of the input and the output types must be the same
             modifyTree ::
-              forall x extra. HContains x outer => SpecDefTree x newInner extra -> SpecDefTree x oldInner extra
+              forall x extra. (HContains x outer) => SpecDefTree x newInner extra -> SpecDefTree x oldInner extra
             modifyTree = \case
               DefDescribeNode t sdf -> DefDescribeNode t $ modifyForest sdf
               DefPendingNode t mr -> DefPendingNode t mr
@@ -221,7 +220,7 @@
               DefExpectationNode f sdf -> DefExpectationNode f $ modifyForest sdf
             modifyForest ::
               forall x extra.
-              HContains x outer =>
+              (HContains x outer) =>
               SpecDefForest x newInner extra ->
               SpecDefForest x oldInner extra
             modifyForest = map modifyTree
diff --git a/src/Test/Syd/Def/Golden.hs b/src/Test/Syd/Def/Golden.hs
--- a/src/Test/Syd/Def/Golden.hs
+++ b/src/Test/Syd/Def/Golden.hs
@@ -140,11 +140,11 @@
     }
 
 -- | Test that the show instance has not changed for the given value.
-goldenShowInstance :: Show a => FilePath -> a -> GoldenTest String
+goldenShowInstance :: (Show a) => FilePath -> a -> GoldenTest String
 goldenShowInstance fp a = pureGoldenStringFile fp (show a)
 
 -- | Test that the show instance has not changed for the given value, via `ppShow`.
-goldenPrettyShowInstance :: Show a => FilePath -> a -> GoldenTest String
+goldenPrettyShowInstance :: (Show a) => FilePath -> a -> GoldenTest String
 goldenPrettyShowInstance fp a = pureGoldenStringFile fp (ppShow a)
 
 -- | The golden test context for adding context to a golden test assertion:
diff --git a/src/Test/Syd/Def/SetupFunc.hs b/src/Test/Syd/Def/SetupFunc.hs
--- a/src/Test/Syd/Def/SetupFunc.hs
+++ b/src/Test/Syd/Def/SetupFunc.hs
@@ -83,7 +83,7 @@
 
 -- | Use 'aroundWith'' with a 'SetupFunc'
 setupAroundWith' ::
-  HContains outers outer =>
+  (HContains outers outer) =>
   (outer -> oldInner -> SetupFunc newInner) ->
   TestDefM outers newInner result ->
   TestDefM outers oldInner result
diff --git a/src/Test/Syd/Def/Specify.hs b/src/Test/Syd/Def/Specify.hs
--- a/src/Test/Syd/Def/Specify.hs
+++ b/src/Test/Syd/Def/Specify.hs
@@ -134,7 +134,7 @@
 -- This test sets up a temporary directory as an inner resource, and makes it available to each test in the group below.
 --
 -- > let setUpTempDir func = withSystemTempDir $ \tempDir -> func tempDir
--- > in around setUpTempDir describe "readFile and writeFile" $
+-- > in around setUpTempDir $ describe "readFile and writeFile" $
 -- >     it "reads back what it wrote for this example" $ \tempDir -> do
 -- >         let cts = "hello world"
 -- >         let fp = tempDir </> "test.txt"
@@ -155,7 +155,7 @@
 -- ===== IO property test
 --
 -- > let setUpTempDir func = withSystemTempDir $ \tempDir -> func tempDir
--- > in around setUpTempDir describe "readFile and writeFile" $
+-- > in around setUpTempDir $ describe "readFile and writeFile" $
 -- >     it "reads back what it wrote for this example" $ \tempDir ->
 -- >         property $ \cts -> do
 -- >             let fp = tempDir </> "test.txt"
@@ -492,7 +492,7 @@
 -- | Convenience function for backwards compatibility with @hspec@
 --
 -- > prop s p = it s $ property p
-prop :: Testable prop => String -> prop -> Spec
+prop :: (Testable prop) => String -> prop -> Spec
 prop s p = withFrozenCallStack $ it s $ property p
 
 -- | Declare a test that has not been written yet.
diff --git a/src/Test/Syd/Expectation.hs b/src/Test/Syd/Expectation.hs
--- a/src/Test/Syd/Expectation.hs
+++ b/src/Test/Syd/Expectation.hs
@@ -99,14 +99,14 @@
 --
 -- Note that using function could mess up the colours in your terminal if the Texts contain ANSI codes.
 -- In that case you may want to `show` your values first or use `shouldBe` instead.
-stringShouldBe :: HasCallStack => String -> String -> IO ()
+stringShouldBe :: (HasCallStack) => String -> String -> IO ()
 stringShouldBe actual expected = unless (actual == expected) $ throwIO $ stringsNotEqualButShouldHaveBeenEqual actual expected
 
 -- | Assert that two 'Text's are equal according to `==`.
 --
 -- Note that using function could mess up the colours in your terminal if the Texts contain ANSI codes.
 -- In that case you may want to `show` your values first or use `shouldBe` instead.
-textShouldBe :: HasCallStack => Text -> Text -> IO ()
+textShouldBe :: (HasCallStack) => Text -> Text -> IO ()
 textShouldBe actual expected = unless (actual == expected) $ throwIO $ textsNotEqualButShouldHaveBeenEqual actual expected
 
 -- | An assertion that says two 'String's should have been equal according to `==`.
@@ -131,7 +131,7 @@
 --
 -- Note that this is mostly backward compatible, but it has return type 'a' instead of '()' because execution will not continue beyond this function.
 -- In this way it is not entirely backward compatible with hspec because now there could be an ambiguous type error.
-expectationFailure :: HasCallStack => String -> IO a
+expectationFailure :: (HasCallStack) => String -> IO a
 expectationFailure = throwIO . ExpectationFailed
 
 -- | Annotate a given action with a context, for contextual assertions
diff --git a/src/Test/Syd/HList.hs b/src/Test/Syd/HList.hs
--- a/src/Test/Syd/HList.hs
+++ b/src/Test/Syd/HList.hs
@@ -29,5 +29,5 @@
 instance HContains (a ': l) a where
   getElem (HCons a _) = a
 
-instance HContains l a => HContains (b ': l) a where
+instance (HContains l a) => HContains (b ': l) a where
   getElem (HCons _ hl) = getElem hl
diff --git a/src/Test/Syd/OptParse.hs b/src/Test/Syd/OptParse.hs
--- a/src/Test/Syd/OptParse.hs
+++ b/src/Test/Syd/OptParse.hs
@@ -11,7 +11,6 @@
 import Autodocodec.Yaml
 import Control.Applicative
 import Control.Monad
-import Data.Functor ((<&>))
 import Data.Maybe
 import Data.String
 import Data.Text (Text)
@@ -666,8 +665,8 @@
     <*> doubleSwitch ["debug"] (help "Turn on debug mode. This implies --no-randomise-execution-order, --synchronous, --progress and --fail-fast.")
     <*> doubleSwitch ["profile"] (help "Turn on profiling mode.")
 
-manyOptional :: OptParse.Mod OptionFields [Text] -> OptParse.Parser [Text]
-manyOptional modifier = mconcat <$> many (option (str <&> T.words) modifier)
+manyOptional :: OptParse.Mod OptionFields Text -> OptParse.Parser [Text]
+manyOptional modifier = many (option str modifier)
 
 seedSettingFlags :: OptParse.Parser (Maybe SeedSetting)
 seedSettingFlags =
diff --git a/src/Test/Syd/Output.hs b/src/Test/Syd/Output.hs
--- a/src/Test/Syd/Output.hs
+++ b/src/Test/Syd/Output.hs
@@ -208,11 +208,11 @@
       executionTimeText = T.pack (printf "%10.2f ms" t)
       withTimingColour =
         if
-            | t < 10 -> fore green
-            | t < 100 -> fore yellow
-            | t < 1_000 -> fore orange
-            | t < 10_000 -> fore red
-            | otherwise -> fore darkRed
+          | t < 10 -> fore green
+          | t < 100 -> fore yellow
+          | t < 1_000 -> fore orange
+          | t < 10_000 -> fore red
+          | otherwise -> fore darkRed
    in withTimingColour $ chunk executionTimeText
 
 retriesChunks :: TestRunReport -> [[Chunk]]
diff --git a/src/Test/Syd/Run.hs b/src/Test/Syd/Run.hs
--- a/src/Test/Syd/Run.hs
+++ b/src/Test/Syd/Run.hs
@@ -468,14 +468,14 @@
 -- 'SomeException', so that we can unwrap it.
 -- (For some unknown reason, that doesn't work otherwise.)
 data Contextual
-  = forall e. Exception e => Contextual !e !String
+  = forall e. (Exception e) => Contextual !e !String
 
 instance Show Contextual where
   showsPrec d (Contextual e s) = showParen (d > 10) $ showString "Contextual " . showsPrec 11 (displayException e) . showString " " . showsPrec 11 s
 
 instance Exception Contextual
 
-addContextToException :: Exception e => e -> String -> Contextual
+addContextToException :: (Exception e) => e -> String -> Contextual
 addContextToException e = Contextual e
 
 data GoldenCase
@@ -495,17 +495,17 @@
 data Progress
   = ProgressTestStarting
   | ProgressExampleStarting
+      -- Total examples
       !Word
-      -- ^ Total examples
+      -- Example number
       !Word
-      -- ^ Example number
   | ProgressExampleDone
+      -- Total examples
       !Word
-      -- ^ Total examples
+      -- Example number
       !Word
-      -- ^ Example number
+      -- Time it took
       !Word64
-      -- ^ Time it took
   | ProgressTestDone
   deriving (Show, Eq, Generic)
 
@@ -515,7 +515,7 @@
 -- That means that any waiting, like with 'threadDelay' would not be counted.
 --
 -- Note that this does not evaluate the result, on purpose.
-timeItT :: MonadIO m => Int -> m a -> m (Timed a)
+timeItT :: (MonadIO m) => Int -> m a -> m (Timed a)
 timeItT worker func = do
   (r, (begin, end)) <- timeItBeginEnd func
   pure
@@ -526,12 +526,12 @@
         timedEnd = end
       }
 
-timeItDuration :: MonadIO m => m a -> m (a, Word64)
+timeItDuration :: (MonadIO m) => m a -> m (a, Word64)
 timeItDuration func = do
   (r, (begin, end)) <- timeItBeginEnd func
   pure (r, end - begin)
 
-timeItBeginEnd :: MonadIO m => m a -> m (a, (Word64, Word64))
+timeItBeginEnd :: (MonadIO m) => m a -> m (a, (Word64, Word64))
 timeItBeginEnd func = do
   begin <- liftIO getMonotonicTimeNSec
   r <- func
diff --git a/src/Test/Syd/Runner/Wrappers.hs b/src/Test/Syd/Runner/Wrappers.hs
--- a/src/Test/Syd/Runner/Wrappers.hs
+++ b/src/Test/Syd/Runner/Wrappers.hs
@@ -26,7 +26,7 @@
     else Continue td
 
 applySimpleWrapper ::
-  MonadIO m =>
+  (MonadIO m) =>
   ((a -> m ()) -> (b -> m ())) ->
   (a -> m r) ->
   (b -> m r)
@@ -41,7 +41,7 @@
   liftIO $ readMVar var
 
 applySimpleWrapper' ::
-  MonadIO m =>
+  (MonadIO m) =>
   ((a -> m ()) -> m ()) ->
   (a -> m r) ->
   m r
@@ -56,7 +56,7 @@
   liftIO $ readMVar var
 
 applySimpleWrapper'' ::
-  MonadIO m =>
+  (MonadIO m) =>
   (m () -> m ()) ->
   m r ->
   m r
@@ -69,7 +69,7 @@
   liftIO $ readMVar var
 
 applySimpleWrapper2 ::
-  MonadIO m =>
+  (MonadIO m) =>
   ((a -> b -> m ()) -> (c -> d -> m ())) ->
   (a -> b -> m r) ->
   (c -> d -> m r)
diff --git a/src/Test/Syd/SpecDef.hs b/src/Test/Syd/SpecDef.hs
--- a/src/Test/Syd/SpecDef.hs
+++ b/src/Test/Syd/SpecDef.hs
@@ -166,7 +166,7 @@
           DefExpectationNode p sdf -> DefExpectationNode p $ goF sdf
 
 instance Foldable (SpecDefTree a c) where
-  foldMap :: forall e m. Monoid m => (e -> m) -> SpecDefTree a c e -> m
+  foldMap :: forall e m. (Monoid m) => (e -> m) -> SpecDefTree a c e -> m
   foldMap f =
     let goF :: forall x y. SpecDefForest x y e -> m
         goF = foldMap (foldMap f)
@@ -188,7 +188,7 @@
           DefExpectationNode _ sdf -> goF sdf
 
 instance Traversable (SpecDefTree a c) where
-  traverse :: forall u w f. Applicative f => (u -> f w) -> SpecDefTree a c u -> f (SpecDefTree a c w)
+  traverse :: forall u w f. (Applicative f) => (u -> f w) -> SpecDefTree a c u -> f (SpecDefTree a c w)
   traverse f =
     let goF :: forall x y. SpecDefForest x y u -> f (SpecDefForest x y w)
         goF = traverse (traverse f)
@@ -247,12 +247,12 @@
       DefFlakinessNode func sdf -> DefFlakinessNode func <$> goForest dl sdf
       DefExpectationNode func sdf -> DefExpectationNode func <$> goForest dl sdf
 
-randomiseTestForest :: MonadRandom m => SpecDefForest outers inner result -> m (SpecDefForest outers inner result)
+randomiseTestForest :: (MonadRandom m) => SpecDefForest outers inner result -> m (SpecDefForest outers inner result)
 randomiseTestForest = goForest
   where
-    goForest :: MonadRandom m => SpecDefForest a b c -> m (SpecDefForest a b c)
+    goForest :: (MonadRandom m) => SpecDefForest a b c -> m (SpecDefForest a b c)
     goForest = traverse goTree >=> shuffleM
-    goTree :: MonadRandom m => SpecDefTree a b c -> m (SpecDefTree a b c)
+    goTree :: (MonadRandom m) => SpecDefTree a b c -> m (SpecDefTree a b c)
     goTree = \case
       DefSpecifyNode t td e -> pure $ DefSpecifyNode t td e
       DefPendingNode t mr -> pure $ DefPendingNode t mr
diff --git a/sydtest.cabal b/sydtest.cabal
--- a/sydtest.cabal
+++ b/sydtest.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.35.2.
+-- This file has been generated from package.yaml by hpack version 0.36.0.
 --
 -- see: https://github.com/sol/hpack
 
 name:           sydtest
-version:        0.15.1.1
+version:        0.15.1.2
 synopsis:       A modern testing framework for Haskell with good defaults and advanced testing features.
 description:    A modern testing framework for Haskell with good defaults and advanced testing features. Sydtest aims to make the common easy and the hard possible. See https://github.com/NorfairKing/sydtest#readme for more information.
 category:       Testing
@@ -13,7 +13,7 @@
 bug-reports:    https://github.com/NorfairKing/sydtest/issues
 author:         Tom Sydney Kerckhove
 maintainer:     syd@cs-syd.eu
-copyright:      Copyright (c) 2020-2023 Tom Sydney Kerckhove
+copyright:      Copyright (c) 2020-2024 Tom Sydney Kerckhove
 license:        OtherLicense
 license-file:   LICENSE.md
 build-type:     Simple
@@ -21,14 +21,6 @@
     LICENSE.md
     CHANGELOG.md
     CONTRIBUTORS
-    test_resources/defaultSettings-show.golden
-    test_resources/even/2
-    test_resources/even/4
-    test_resources/even/odd/3
-    test_resources/odd/3
-    test_resources/odd/deep/5
-    test_resources/output-test.txt
-    test_resources/output.golden
 
 source-repository head
   type: git
@@ -100,84 +92,3 @@
   else
     build-depends:
         safe-coloured-text-terminfo
-
-test-suite sydtest-multi-discover-test
-  type: exitcode-stdio-1.0
-  main-is: Main.hs
-  other-modules:
-      Bar.BarSpec
-      Bar.Spec
-      Baz.Qux.QuxSpec
-      Baz.Qux.Spec
-      DoNotDiscover.FooSpec
-      Foo.FooSpec
-      Foo.Spec
-      Paths_sydtest
-  hs-source-dirs:
-      multi-discover-test
-  ghc-options: -threaded -rtsopts -with-rtsopts=-N
-  build-tool-depends:
-      sydtest-discover:sydtest-discover
-  build-depends:
-      base >=4.7 && <5
-    , sydtest
-  default-language: Haskell2010
-
-test-suite sydtest-output-test
-  type: exitcode-stdio-1.0
-  main-is: Main.hs
-  other-modules:
-      Spec
-      Paths_sydtest
-  hs-source-dirs:
-      output-test
-  ghc-options: -threaded -rtsopts -with-rtsopts=-N
-  build-depends:
-      QuickCheck
-    , base >=4.7 && <5
-    , bytestring
-    , random
-    , safe-coloured-text
-    , stm
-    , sydtest
-    , text
-  default-language: Haskell2010
-
-test-suite sydtest-test
-  type: exitcode-stdio-1.0
-  main-is: Spec.hs
-  other-modules:
-      Test.Syd.AroundAllSpec
-      Test.Syd.AroundCombinationSpec
-      Test.Syd.AroundSpec
-      Test.Syd.DescriptionsSpec
-      Test.Syd.DiffSpec
-      Test.Syd.ExpectationSpec
-      Test.Syd.FootgunSpec
-      Test.Syd.GoldenSpec
-      Test.Syd.OptParseSpec
-      Test.Syd.PathSpec
-      Test.Syd.ScenarioSpec
-      Test.Syd.SequentialSpec
-      Test.Syd.Specify.AllOuterSpec
-      Test.Syd.SpecifySpec
-      Test.Syd.TimingSpec
-      Paths_sydtest
-  hs-source-dirs:
-      test
-  ghc-options: -threaded -rtsopts -with-rtsopts=-N
-  build-tool-depends:
-      sydtest-discover:sydtest-discover
-  build-depends:
-      QuickCheck
-    , base >=4.7 && <5
-    , bytestring
-    , fast-myers-diff
-    , path
-    , path-io
-    , safe-coloured-text
-    , stm
-    , sydtest
-    , text
-    , vector
-  default-language: Haskell2010
diff --git a/test/Spec.hs b/test/Spec.hs
deleted file mode 100644
--- a/test/Spec.hs
+++ /dev/null
@@ -1,1 +0,0 @@
-{-# OPTIONS_GHC -F -pgmF sydtest-discover #-}
diff --git a/test/Test/Syd/AroundAllSpec.hs b/test/Test/Syd/AroundAllSpec.hs
deleted file mode 100644
--- a/test/Test/Syd/AroundAllSpec.hs
+++ /dev/null
@@ -1,145 +0,0 @@
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE TypeFamilies #-}
-
-module Test.Syd.AroundAllSpec (spec) where
-
-import Control.Concurrent.STM
-import Control.Monad.IO.Class
-import Test.Syd
-
-spec :: Spec
-spec = sequential $ do
-  describe "beforeAll" $ do
-    var <- liftIO $ newTVarIO (0 :: Int)
-    let readAndIncrement :: IO Int
-        readAndIncrement = atomically $ stateTVar var $ \i -> (i + 1, i + 1)
-    beforeAll readAndIncrement $ do
-      let t :: Int -> IO ()
-          t i = i `shouldBe` 1
-      itWithOuter "reads 1" t
-      itWithOuter "reads 1" t
-
-  describe "beforeAll_" $ do
-    var <- liftIO $ newTVarIO (0 :: Int)
-    let increment :: IO ()
-        increment = atomically $ modifyTVar var (+ 1)
-    beforeAll_ increment $ do
-      let t :: IO ()
-          t = do
-            i <- readTVarIO var
-            i `shouldBe` 1
-      it "reads 1" t
-      it "reads 1" t
-
-  describe "beforeAllWith" $ do
-    var <- liftIO $ newTVarIO (0 :: Int)
-    let readAndIncrement :: IO Int
-        readAndIncrement = atomically $ stateTVar var $ \i -> (i + 1, i + 1)
-    let increment :: IO ()
-        increment = atomically $ modifyTVar var (+ 1)
-    let incrementBeforeAndAfterWith :: Int -> IO Int
-        incrementBeforeAndAfterWith j = do
-          i <- readAndIncrement
-          increment
-          pure (i + j)
-    beforeAll readAndIncrement $ do
-      beforeAllWith incrementBeforeAndAfterWith $ do
-        let t :: Int -> IO ()
-            t i = i `shouldBe` 3
-        itWithOuter "reads 3" t
-        itWithOuter "reads 3" t
-
-  describe "afterAll" $ do
-    var <- liftIO $ newTVarIO (0 :: Int)
-    let readAndIncrement :: IO Int
-        readAndIncrement = atomically $ stateTVar var $ \i -> (i + 1, i + 1)
-        addExtra :: Int -> IO ()
-        addExtra i = atomically $ modifyTVar var (+ i)
-    beforeAll readAndIncrement $
-      afterAll addExtra $ do
-        let t :: Int -> IO ()
-            t i = i `shouldBe` 1
-        itWithOuter "reads 1" t
-        itWithOuter "reads 1" t
-
-  describe "afterAll'" $ do
-    var <- liftIO $ newTVarIO (0 :: Int)
-    let readAndIncrement :: IO Int
-        readAndIncrement = atomically $ stateTVar var $ \i -> (i + 1, i + 1)
-        addExtra :: HList '[Int] -> IO ()
-        addExtra (HCons i HNil) = atomically $ modifyTVar var (+ i)
-    beforeAll readAndIncrement $
-      afterAll' addExtra $ do
-        let t :: Int -> IO ()
-            t i = i `shouldBe` 1
-        itWithOuter "reads 1" t
-        itWithOuter "reads 1" t
-
-  describe "afterAll_" $ do
-    var <- liftIO $ newTVarIO (0 :: Int)
-    let increment :: IO ()
-        increment = atomically $ modifyTVar var (+ 1)
-    afterAll_ increment $ do
-      let t :: IO ()
-          t = do
-            i <- readTVarIO var
-            i `shouldBe` 0
-      it "reads 0" t
-      it "reads 0" t
-
-  describe "aroundAll" $ do
-    var <- liftIO $ newTVarIO (0 :: Int)
-    let readAndIncrement :: IO Int
-        readAndIncrement = atomically $ stateTVar var $ \i -> (i + 1, i + 1)
-    let increment :: IO ()
-        increment = atomically $ modifyTVar var (+ 1)
-    let incrementBeforeAndAfter :: (Int -> IO ()) -> IO ()
-        incrementBeforeAndAfter func = do
-          i <- readAndIncrement
-          func i
-          increment
-    aroundAll incrementBeforeAndAfter $ do
-      let t :: Int -> IO ()
-          t i = i `shouldBe` 1
-      itWithOuter "reads 1" t
-      itWithOuter "reads 1" t
-
-  describe "aroundAll_" $ do
-    var <- liftIO $ newTVarIO (0 :: Int)
-    let increment :: IO ()
-        increment = atomically $ modifyTVar var (+ 1)
-    let incrementBeforeAndAfter :: IO () -> IO ()
-        incrementBeforeAndAfter func = do
-          increment
-          func
-          increment
-    aroundAll_ incrementBeforeAndAfter $ do
-      let t :: IO ()
-          t = do
-            i <- readTVarIO var
-            i `shouldBe` 1
-      it "reads 1" t
-      it "reads 1" t
-
-  describe "aroundAllWith" $ do
-    var <- liftIO $ newTVarIO (0 :: Int)
-    let readAndIncrement :: IO Int
-        readAndIncrement = atomically $ stateTVar var $ \i -> (i + 1, i + 1)
-    let increment :: IO ()
-        increment = atomically $ modifyTVar var (+ 1)
-    let incrementBeforeAndAfter :: (Int -> IO ()) -> IO ()
-        incrementBeforeAndAfter func = do
-          i <- readAndIncrement
-          func i
-          increment
-    let incrementBeforeAndAfterWith :: (Int -> IO ()) -> Int -> IO ()
-        incrementBeforeAndAfterWith func j = do
-          i <- readAndIncrement
-          func (i + j)
-          increment
-    aroundAll incrementBeforeAndAfter $
-      aroundAllWith incrementBeforeAndAfterWith $ do
-        let t :: Int -> IO ()
-            t i = i `shouldBe` 3
-        itWithOuter "reads correctly" t
-        itWithOuter "reads correctly" t
diff --git a/test/Test/Syd/AroundCombinationSpec.hs b/test/Test/Syd/AroundCombinationSpec.hs
deleted file mode 100644
--- a/test/Test/Syd/AroundCombinationSpec.hs
+++ /dev/null
@@ -1,44 +0,0 @@
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TypeFamilies #-}
-
-module Test.Syd.AroundCombinationSpec (spec) where
-
-import Control.Concurrent.STM
-import Control.Monad.IO.Class
-import Test.Syd
-
-spec :: Spec
-spec = sequential $
-  doNotRandomiseExecutionOrder $ do
-    describe "aroundAll + aroundAllWith + around + aroundWith'" $ do
-      var <- liftIO $ newTVarIO (0 :: Int)
-      let readAndIncrement :: IO Int
-          readAndIncrement = atomically $ stateTVar var $ \i -> (i + 1, i + 1)
-      let increment :: IO ()
-          increment = atomically $ modifyTVar var (+ 1)
-      let incrementAround :: (Int -> IO ()) -> IO ()
-          incrementAround func = do
-            i <- readAndIncrement
-            func i
-            increment
-      let incrementAroundWith :: (Int -> IO ()) -> Int -> IO ()
-          incrementAroundWith func j = do
-            i <- readAndIncrement
-            func (i + j)
-            increment
-      let incrementAroundWith2 :: (Int -> Int -> IO ()) -> Int -> Int -> IO ()
-          incrementAroundWith2 func j k = do
-            i <- readAndIncrement
-            func (i + j) k
-            increment
-      aroundAll incrementAround $
-        aroundAllWith incrementAroundWith $
-          around incrementAround $
-            aroundWith' incrementAroundWith2 $ do
-              itWithBoth "reads correctly" $
-                \i k ->
-                  (i, k) `shouldBe` (3, 3)
-              itWithBoth "reads correctly" $
-                \i k ->
-                  (i, k) `shouldBe` (3, 7)
diff --git a/test/Test/Syd/AroundSpec.hs b/test/Test/Syd/AroundSpec.hs
deleted file mode 100644
--- a/test/Test/Syd/AroundSpec.hs
+++ /dev/null
@@ -1,133 +0,0 @@
-module Test.Syd.AroundSpec (spec) where
-
-import Control.Concurrent.STM
-import Control.Monad.IO.Class
-import Test.Syd
-
-spec :: Spec
-spec = sequential . doNotRandomiseExecutionOrder $ do
-  describe "before" $ do
-    var <- liftIO $ newTVarIO (1 :: Int)
-    let readAndIncrement = atomically $ stateTVar var $ \i -> (i + 1, i + 1)
-    before readAndIncrement $ do
-      it "reads 2" $ \i ->
-        i `shouldBe` 2
-      it "reads 4" $ \i ->
-        i `shouldBe` 3
-      it "reads 6" $ \i ->
-        i `shouldBe` 4
-
-  describe "before_" $ do
-    var <- liftIO $ newTVarIO (1 :: Int)
-    let increment = atomically $ modifyTVar var succ
-    before_ increment $ do
-      it "reads 2" $ do
-        i <- readTVarIO var
-        i `shouldBe` 2
-      it "reads 4" $ do
-        i <- readTVarIO var
-        i `shouldBe` 3
-      it "reads 6" $ do
-        i <- readTVarIO var
-        i `shouldBe` 4
-
-  describe "after" $ do
-    var <- liftIO $ newTVarIO (0 :: Int)
-    let increment = atomically $ modifyTVar var succ
-    after (\() -> increment) $ do
-      it "reads 0" $ do
-        i <- readTVarIO var
-        i `shouldBe` 0
-      it "reads 2" $ do
-        i <- readTVarIO var
-        i `shouldBe` 1
-      it "reads 4" $ do
-        i <- readTVarIO var
-        i `shouldBe` 2
-
-  describe "after_" $ do
-    var <- liftIO $ newTVarIO (0 :: Int)
-    let increment = atomically $ modifyTVar var succ
-    after_ increment $ do
-      it "reads 0" $ do
-        putStrLn "reads 0"
-        i <- readTVarIO var
-        i `shouldBe` 0
-      it "reads 2" $ do
-        putStrLn "reads 2"
-        i <- readTVarIO var
-        i `shouldBe` 1
-      it "reads 4" $ do
-        putStrLn "reads 4"
-        i <- readTVarIO var
-        i `shouldBe` 2
-
-  describe "around" $ do
-    var <- liftIO $ newTVarIO (1 :: Int)
-    let increment = atomically $ modifyTVar var succ
-        readAndIncrement = atomically $ stateTVar var $ \i -> (i + 1, i + 1)
-        aroundFunc :: (Int -> IO ()) -> IO ()
-        aroundFunc intFunc = do
-          i <- readAndIncrement
-          intFunc i
-          increment
-    around aroundFunc $ do
-      it "reads 2" $ \i ->
-        i `shouldBe` 2
-      it "reads 4" $ \i ->
-        i `shouldBe` 4
-      it "reads 6" $ \i ->
-        i `shouldBe` 6
-
-  describe "around_" $ do
-    var <- liftIO $ newTVarIO (1 :: Int)
-    let increment = atomically $ modifyTVar var succ
-        aroundFunc_ :: IO () -> IO ()
-        aroundFunc_ func = do
-          increment
-          func
-          increment
-    around_ aroundFunc_ $ do
-      it "reads 2" $ do
-        i <- readTVarIO var
-        i `shouldBe` 2
-      it "reads 4" $ do
-        i <- readTVarIO var
-        i `shouldBe` 4
-      it "reads 6" $ do
-        i <- readTVarIO var
-        i `shouldBe` 6
-
-  describe "aroundWith" $ do
-    var <- liftIO $ newTVarIO (1 :: Int)
-    let increment = atomically $ modifyTVar var succ
-        readAndIncrement = atomically $ stateTVar var $ \i -> (i + 1, i + 1)
-        aroundWithFunc :: (Int -> IO ()) -> () -> IO ()
-        aroundWithFunc intFunc () = do
-          i <- readAndIncrement
-          intFunc i
-          increment
-    aroundWith aroundWithFunc $ do
-      it "reads 2" $ \i ->
-        i `shouldBe` 2
-      it "reads 4" $ \i ->
-        i `shouldBe` 4
-      it "reads 6" $ \i ->
-        i `shouldBe` 6
-
-  describe "aroundWith'" $ do
-    var <- liftIO $ newTVarIO (1 :: Int)
-    let increment = atomically $ modifyTVar var succ
-        readAndIncrement = atomically $ stateTVar var $ \i -> (i + 1, i + 1)
-        aroundWithFunc :: (() -> Int -> IO ()) -> () -> () -> IO ()
-        aroundWithFunc intFunc () () = do
-          i <- readAndIncrement
-          intFunc () i
-          increment
-    aroundWith' aroundWithFunc $ do
-      it "reads 2" $ \i ->
-        i `shouldBe` 2
-      it "reads 4" $ \i ->
-        i `shouldBe` 4
-      it "reads 6" $ \i ->
-        i `shouldBe` 6
diff --git a/test/Test/Syd/DescriptionsSpec.hs b/test/Test/Syd/DescriptionsSpec.hs
deleted file mode 100644
--- a/test/Test/Syd/DescriptionsSpec.hs
+++ /dev/null
@@ -1,14 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
-module Test.Syd.DescriptionsSpec (spec) where
-
-import Test.Syd
-
-spec :: Spec
-spec =
-  describe "foo" $
-    describe "bar" $
-      describe "quux" $ do
-        descs <- getTestDescriptionPath
-        it "gets the right descriptions" $
-          descs `shouldBe` ["quux", "bar", "foo", "Test.Syd.DescriptionsSpec"]
diff --git a/test/Test/Syd/DiffSpec.hs b/test/Test/Syd/DiffSpec.hs
deleted file mode 100644
--- a/test/Test/Syd/DiffSpec.hs
+++ /dev/null
@@ -1,290 +0,0 @@
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE LambdaCase #-}
-{-# LANGUAGE OverloadedLists #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# OPTIONS_GHC -Wno-orphans #-}
-
-module Test.Syd.DiffSpec (spec) where
-
-import Control.Monad
-import Data.String
-import qualified Data.Text as T
-import Data.Vector (Vector)
-import qualified Data.Vector as V
-import Myers.Diff
-import Test.Syd
-
--- Just for this test
-instance IsString (Vector Char) where
-  fromString = V.fromList
-
-spec :: Spec
-spec = do
-  describe "getEditScript" $ do
-    let exampleSpec :: Vector Char -> Vector Char -> Vector Edit -> Spec
-        exampleSpec old new expected =
-          it
-            ( unwords
-                [ "works for",
-                  show old,
-                  show new,
-                  show expected
-                ]
-            )
-            $ do
-              let actual = getEditScript old new
-              when (actual /= expected) $
-                expectationFailure $
-                  unlines
-                    [ unwords ["actual:", show actual],
-                      unwords ["expected:", show expected]
-                    ]
-
-    exampleSpec "" "" []
-    exampleSpec "a" "a" []
-    exampleSpec "a" "b" [Delete 0 1, Insert 1 0 1]
-    exampleSpec "ab" "ac" [Delete 1 1, Insert 2 1 1]
-    exampleSpec "b" "aba" [Insert 0 0 1, Insert 1 2 1]
-    exampleSpec "abc" "acb" [Delete 1 1, Insert 3 2 1]
-    exampleSpec "aaa" "aba" [Delete 0 1, Insert 2 1 1]
-    exampleSpec "foofoo" "foo" [Delete 1 1, Delete 3 1, Delete 5 1]
-    exampleSpec "foo" "foofoo" [Insert 1 1 1, Insert 2 3 1, Insert 3 5 1]
-
-  describe "computeDiffFromEditScript" $ do
-    let exampleSpec :: Vector Char -> Vector Char -> Vector Edit -> Vector (Diff Char) -> Spec
-        exampleSpec old new editScript expected =
-          it
-            ( unwords
-                [ "works for",
-                  show old,
-                  show new,
-                  show editScript,
-                  show expected
-                ]
-            )
-            $ do
-              let actual = computeDiffFromEditScript old new editScript
-              when (actual /= expected) $
-                expectationFailure $
-                  unlines
-                    [ unwords ["actual:", show actual],
-                      unwords ["expected:", show expected]
-                    ]
-
-    exampleSpec "" "" [] []
-    exampleSpec "a" "a" [] [Both 'a' 'a']
-    exampleSpec "a" "b" [Delete 0 1, Insert 1 0 1] [First 'a', Second 'b']
-    exampleSpec "ab" "ac" [Delete 1 1, Insert 2 1 1] [Both 'a' 'a', First 'b', Second 'c']
-    exampleSpec "b" "aba" [Insert 0 0 1, Insert 1 2 1] [Second 'a', Both 'b' 'b', Second 'a']
-    exampleSpec "abc" "acb" [Delete 1 1, Insert 3 2 1] [Both 'a' 'a', First 'b', Both 'c' 'c', Second 'b']
-    exampleSpec "aaa" "aba" [Delete 0 1, Insert 2 1 1] [First 'a', Both 'a' 'a', Second 'b', Both 'a' 'a']
-    exampleSpec "foofoo" "foo" [Delete 1 1, Delete 3 1, Delete 5 1] [Both 'f' 'f', First 'o', Both 'o' 'o', First 'f', Both 'o' 'o', First 'o']
-    exampleSpec "foo" "foofoo" [Insert 1 1 1, Insert 2 3 1, Insert 3 5 1] [Both 'f' 'f', Second 'o', Both 'o' 'o', Second 'f', Both 'o' 'o', Second 'o']
-
-  describe "getVectorDiff" $ do
-    let exampleSpec :: Vector Char -> Vector Char -> Vector (Diff Char) -> Spec
-        exampleSpec old new expected =
-          it
-            ( unwords
-                [ "works for",
-                  show old,
-                  show new,
-                  show expected
-                ]
-            )
-            $ do
-              let actual = getVectorDiff old new
-              when (actual /= expected) $
-                expectationFailure $
-                  unlines
-                    [ unwords ["actual:", show actual],
-                      unwords ["expected:", show expected]
-                    ]
-    exampleSpec "" "" []
-    exampleSpec "a" "a" [Both 'a' 'a']
-    exampleSpec "a" "b" [First 'a', Second 'b']
-    exampleSpec "ab" "ac" [Both 'a' 'a', First 'b', Second 'c']
-    exampleSpec "aaa" "aba" [First 'a', Both 'a' 'a', Second 'b', Both 'a' 'a']
-    exampleSpec "abgdef" "gh" [First 'a', First 'b', Both 'g' 'g', First 'd', First 'e', Second 'h', First 'f']
-    exampleSpec "foofoo" "foo" [Both 'f' 'f', First 'o', Both 'o' 'o', First 'f', Both 'o' 'o', First 'o']
-
-    prop "says that any list is entirely different from the empty list (left)" $ \ls ->
-      let v = V.fromList (ls :: String)
-       in getVectorDiff v "" `shouldBe` V.map First v
-
-    prop "says that any list is entirely different from the empty list (right)" $ \ls ->
-      let v = V.fromList (ls :: String)
-       in getVectorDiff "" v `shouldBe` V.map Second v
-
-    prop "does not find diffs in identical strings" $ \ls ->
-      let v = V.fromList (ls :: String)
-       in getVectorDiff v v `shouldBe` V.map (\a -> Both a a) v
-
-    prop "only puts equal characters in 'Both'" $ \(ls1, ls2) ->
-      let v1 = V.fromList (ls1 :: String)
-          v2 = V.fromList (ls2 :: String)
-          diff = getVectorDiff v1 v2
-          valid = \case
-            First _ -> True
-            Second _ -> True
-            Both a b -> a == b
-       in all valid diff
-
-    let rebuildFirst :: Vector (PolyDiff a b) -> Vector a
-        rebuildFirst = V.mapMaybe $ \case
-          First a -> Just a
-          Second _ -> Nothing
-          Both a _ -> Just a
-    prop "lets you rebuild the old vector" $ \(ls1, ls2) -> do
-      let v1 = V.fromList (ls1 :: String)
-          v2 = V.fromList (ls2 :: String)
-      rebuildFirst (getVectorDiff v1 v2) `shouldBe` v1
-
-    let rebuildSecond :: Vector (PolyDiff a b) -> Vector b
-        rebuildSecond = V.mapMaybe $ \case
-          First _ -> Nothing
-          Second b -> Just b
-          Both _ b -> Just b
-    prop "lets you rebuild the new vector" $ \(ls1, ls2) -> do
-      let v1 = V.fromList (ls1 :: String)
-          v2 = V.fromList (ls2 :: String)
-      rebuildSecond (getVectorDiff v1 v2) `shouldBe` v2
-
-    let unrollGroupedDiff :: Vector (PolyDiff (Vector a) (Vector b)) -> Vector (PolyDiff a b)
-        unrollGroupedDiff = foldMap unrollPolyDiff
-
-        -- Not performant, only for testing
-        unrollPolyDiff :: PolyDiff (Vector a) (Vector b) -> Vector (PolyDiff a b)
-        unrollPolyDiff = \case
-          First va -> V.map First va
-          Second vb -> V.map Second vb
-          Both va vb -> V.zipWith Both va vb
-
-    prop "is the same thing as getGroupedVectorDiff, but unrolled (unroll grouped)" $ \(ls1, ls2) ->
-      let v1 = V.fromList (ls1 :: String)
-          v2 = V.fromList (ls2 :: String)
-          grouped = getGroupedVectorDiff v1 v2
-          individual = getVectorDiff v1 v2
-       in unrollGroupedDiff grouped `shouldBe` individual
-
-  describe "getGroupedVectorDiff" $ do
-    prop "says that any list is entirely different from the empty list (left)" $ \ls ->
-      let v = V.fromList (ls :: String)
-       in getGroupedVectorDiff v "" `shouldBe` (if V.null v then V.empty else V.singleton (First v))
-
-    prop "says that any list is entirely different from the empty list (right)" $ \ls ->
-      let v = V.fromList (ls :: String)
-       in getGroupedVectorDiff "" v `shouldBe` (if V.null v then V.empty else V.singleton (Second v))
-
-    prop "does not find diffs in identical strings" $ \ls ->
-      let v = V.fromList (ls :: String)
-       in getGroupedVectorDiff v v `shouldBe` (if V.null v then V.empty else V.singleton (Both v v))
-
-    prop "only puts equal vectors in 'Both'" $ \(ls1, ls2) ->
-      let v1 = V.fromList (ls1 :: String)
-          v2 = V.fromList (ls2 :: String)
-          diff = getGroupedVectorDiff v1 v2
-          valid = \case
-            First _ -> True
-            Second _ -> True
-            Both a b -> a == b
-       in all valid diff
-
-    let rebuildFirst :: Vector (PolyDiff (Vector a) (Vector b)) -> Vector a
-        rebuildFirst =
-          V.concat
-            . V.toList
-            . V.mapMaybe
-              ( \case
-                  First a -> Just a
-                  Second _ -> Nothing
-                  Both a _ -> Just a
-              )
-    prop "lets you rebuild the old vector" $ \(ls1, ls2) -> do
-      let v1 = V.fromList (ls1 :: String)
-          v2 = V.fromList (ls2 :: String)
-      rebuildFirst (getGroupedVectorDiff v1 v2) `shouldBe` v1
-
-    let rebuildSecond :: Vector (PolyDiff (Vector a) (Vector b)) -> Vector b
-        rebuildSecond =
-          V.concat
-            . V.toList
-            . V.mapMaybe
-              ( \case
-                  First _ -> Nothing
-                  Second b -> Just b
-                  Both _ b -> Just b
-              )
-    prop "lets you rebuild the new vector" $ \(ls1, ls2) -> do
-      let v1 = V.fromList (ls1 :: String)
-          v2 = V.fromList (ls2 :: String)
-      rebuildSecond (getGroupedVectorDiff v1 v2) `shouldBe` v2
-
-    -- Not performant, only for testing.
-    let rollupUngroupedDiff :: Vector (PolyDiff a b) -> Vector (PolyDiff (Vector a) (Vector b))
-        rollupUngroupedDiff = V.fromList . go . V.toList
-          where
-            go = \case
-              [] -> []
-              (d : ds) -> case d of
-                First _ ->
-                  let (fs, rest) = goFirsts (d : ds)
-                   in First (V.fromList fs) : go rest
-                Second _ ->
-                  let (ss, rest) = goSeconds (d : ds)
-                   in Second (V.fromList ss) : go rest
-                Both _ _ ->
-                  let (bs, rest) = goBoths (d : ds)
-                   in Both (V.fromList (map fst bs)) (V.fromList (map snd bs)) : go rest
-            goFirsts = \case
-              (First a : ds) ->
-                let (fs, rest) = goFirsts ds
-                 in (a : fs, rest)
-              rest -> ([], rest)
-            goSeconds = \case
-              (Second a : ds) ->
-                let (fs, rest) = goSeconds ds
-                 in (a : fs, rest)
-              rest -> ([], rest)
-            goBoths = \case
-              (Both a b : ds) ->
-                let (fs, rest) = goBoths ds
-                 in ((a, b) : fs, rest)
-              rest -> ([], rest)
-
-    let squishGroupedDiff :: Vector (PolyDiff (Vector a) (Vector b)) -> Vector (PolyDiff (Vector a) (Vector b))
-        squishGroupedDiff = V.fromList . go . V.toList
-          where
-            go = \case
-              [] -> []
-              [pd] -> [pd]
-              (First a : First b : rest) -> go (First (a <> b) : rest)
-              (Second a : Second b : rest) -> go (Second (a <> b) : rest)
-              (Both a b : Both c d : rest) -> go (Both (a <> c) (b <> d) : rest)
-              (d : rest) -> d : go rest
-    prop "is the same thing as getVectorDiff, but rolled up and squished (rollup individual)" $ \(ls1, ls2) ->
-      let v1 = V.fromList (ls1 :: String)
-          v2 = V.fromList (ls2 :: String)
-          grouped = getGroupedVectorDiff v1 v2
-          individual = getVectorDiff v1 v2
-       in squishGroupedDiff grouped `shouldBe` rollupUngroupedDiff individual
-
-  describe "getStringDiff" $ do
-    it "can output a large diff quickly enough if there is no diff" $
-      let s = replicate 10000 'a'
-       in length (getStringDiff s s) `shouldBe` 10000
-
-    it "can output a large diff quickly enough if it's only diff" $
-      length (getStringDiff (replicate 10000 'a') "b") `shouldBe` 10001
-
-  describe "getTextDiff" $ do
-    it "can output a large diff quickly enough if there is no diff" $
-      let s = T.pack $ replicate 10000 'a'
-       in length (getTextDiff s s) `shouldBe` 1
-
-    it "can output a large diff quickly enough if it's only diff" $
-      length (getTextDiff (T.pack (replicate 10000 'a')) "b") `shouldBe` 15
-
-  describe "outputEqualityAssertionFailed" $ do
-    it "can output a large diff quickly enough" $
-      length (outputEqualityAssertionFailed (replicate 10000 'a') "b") `shouldBe` 3
diff --git a/test/Test/Syd/ExpectationSpec.hs b/test/Test/Syd/ExpectationSpec.hs
deleted file mode 100644
--- a/test/Test/Syd/ExpectationSpec.hs
+++ /dev/null
@@ -1,13 +0,0 @@
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TypeFamilies #-}
-
-module Test.Syd.ExpectationSpec (spec) where
-
-import Test.Syd
-
-spec :: Spec
-spec = do
-  expectFailing $ do
-    it "marks this as passing, because it fails" False
-    expectPassing $ it "marks this as passing" True
diff --git a/test/Test/Syd/FootgunSpec.hs b/test/Test/Syd/FootgunSpec.hs
deleted file mode 100644
--- a/test/Test/Syd/FootgunSpec.hs
+++ /dev/null
@@ -1,50 +0,0 @@
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TypeFamilies #-}
-
-module Test.Syd.FootgunSpec (spec) where
-
-import Test.Syd
-
-spec :: Spec
-spec = do
-  aroundTwice
-  aroundDon't
-  aroundAllTwice
-  aroundAllDon't
-
-aroundDon't :: Spec
-aroundDon't = do
-  -- -- This causes sydtest-test: thread blocked indefinitely in an MVar operation
-  -- let don'tDo :: IO () -> IO ()
-  --     don'tDo _ = pure ()
-  -- around_ don'tDo $ do
-  --   it "should pass" True
-  pure ()
-
-aroundTwice :: Spec
-aroundTwice = do
-  -- -- This causes sydtest-test: thread blocked indefinitely in an MVar operation
-  -- let doTwice :: IO () -> IO ()
-  --     doTwice f = f >> f
-  -- around_ doTwice $ do
-  --   it "should pass" True
-  pure ()
-
-aroundAllDon't :: Spec
-aroundAllDon't = do
-  -- -- This causes sydtest-test: thread blocked indefinitely in an MVar operation
-  -- let don'tDo :: IO () -> IO ()
-  --     don'tDo _ = pure ()
-  -- aroundAll_ don'tDo $ do
-  --   it "should pass" True
-  pure ()
-
-aroundAllTwice :: Spec
-aroundAllTwice = do
-  -- -- This 'just works' but takes longer.
-  -- let doTwice :: IO () -> IO ()
-  --     doTwice f = f >> f
-  -- aroundAll_ doTwice $ do
-  --   it "should pass" True
-  pure ()
diff --git a/test/Test/Syd/GoldenSpec.hs b/test/Test/Syd/GoldenSpec.hs
deleted file mode 100644
--- a/test/Test/Syd/GoldenSpec.hs
+++ /dev/null
@@ -1,31 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
-module Test.Syd.GoldenSpec (spec) where
-
-import qualified Data.Text.Lazy as LT
-import qualified Data.Text.Lazy.Builder as LTB
-import Test.Syd
-import Test.Syd.OptParse
-import Text.Colour
-
-spec :: Spec
-spec = do
-  describe "outputResultForest" $ do
-    it "outputs the same as last time" $ do
-      pureGoldenTextFile
-        "test_resources/output.golden"
-        ( LT.toStrict $
-            LTB.toLazyText $
-              renderResultReport
-                defaultSettings
-                With24BitColours
-                ( Timed
-                    { timedValue = [],
-                      timedWorker = 0,
-                      timedBegin = 0,
-                      timedEnd = 0
-                    }
-                )
-        )
-  describe "defaultSettings" $ do
-    it "is the same thing as last time" $ goldenPrettyShowInstance "test_resources/defaultSettings-show.golden" defaultSettings
diff --git a/test/Test/Syd/OptParseSpec.hs b/test/Test/Syd/OptParseSpec.hs
deleted file mode 100644
--- a/test/Test/Syd/OptParseSpec.hs
+++ /dev/null
@@ -1,32 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
-module Test.Syd.OptParseSpec (spec) where
-
-import Test.Syd
-import Test.Syd.OptParse
-
-spec :: Spec
-spec = do
-  describe "combineToSettings" $ do
-    it "works for this default settinsg example" $
-      do
-        let flags = defaultFlags
-            environment = defaultEnvironment
-            mConf = Nothing
-            settings = defaultSettings
-        combineToSettings flags environment mConf `shouldReturn` settings
-
-    it "works for this debug example" $ do
-      let flags = defaultFlags {flagDebug = Just True}
-          environment = defaultEnvironment
-          mConf = Nothing
-          settings =
-            defaultSettings
-              { settingThreads = Synchronous,
-                settingRandomiseExecutionOrder = False,
-                settingFailFast = True,
-                settingReportProgress = ReportProgress,
-                settingRetries = 0,
-                settingDebug = True
-              }
-      combineToSettings flags environment mConf `shouldReturn` settings
diff --git a/test/Test/Syd/PathSpec.hs b/test/Test/Syd/PathSpec.hs
deleted file mode 100644
--- a/test/Test/Syd/PathSpec.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
-module Test.Syd.PathSpec (spec) where
-
-import qualified Data.ByteString as SB
-import Path
-import Path.IO
-import Test.Syd
-import Test.Syd.Path
-
-spec :: Spec
-spec = do
-  describe "tempDirSpec" $
-    tempDirSpec "sydtest-path" $ do
-      it "can write a file to a temporary dir and read it" $ \tdir -> do
-        tempFile <- resolveFile tdir "tempfile.dat"
-        SB.writeFile (fromAbsFile tempFile) "hello"
-        contents <- SB.readFile (fromAbsFile tempFile)
-        contents `shouldBe` "hello"
-      describe "clean state" $
-        doNotRandomiseExecutionOrder $ do
-          it "can write a file to a temporary dir" $ \tdir -> do
-            tempFile <- resolveFile tdir "tempfile.dat"
-            SB.writeFile (fromAbsFile tempFile) "hello"
-          it "cannot read a file that hasn't been written" $ \tdir -> do
-            tempFile <- resolveFile tdir "tempfile.dat"
-            contents <- forgivingAbsence $ SB.readFile (fromAbsFile tempFile)
-            contents `shouldBe` Nothing
diff --git a/test/Test/Syd/ScenarioSpec.hs b/test/Test/Syd/ScenarioSpec.hs
deleted file mode 100644
--- a/test/Test/Syd/ScenarioSpec.hs
+++ /dev/null
@@ -1,16 +0,0 @@
-module Test.Syd.ScenarioSpec (spec) where
-
-import Test.Syd
-
-spec :: Spec
-spec = do
-  scenarioDir "test_resources/even" $ \rf ->
-    it "contains an even number" $ do
-      s <- readFile rf
-      n <- readIO s
-      (n :: Int) `shouldSatisfy` even
-  scenarioDirRecur "test_resources/odd" $ \rf ->
-    it "contains an odd number" $ do
-      s <- readFile rf
-      n <- readIO s
-      (n :: Int) `shouldSatisfy` odd
diff --git a/test/Test/Syd/SequentialSpec.hs b/test/Test/Syd/SequentialSpec.hs
deleted file mode 100644
--- a/test/Test/Syd/SequentialSpec.hs
+++ /dev/null
@@ -1,19 +0,0 @@
-module Test.Syd.SequentialSpec (spec) where
-
-import Control.Concurrent.MVar
-import Control.Monad
-import Control.Monad.IO.Class
-import Test.Syd
-
-spec :: Spec
-spec = sequential . doNotRandomiseExecutionOrder $ do
-  var <- liftIO $ newMVar ()
-  let times = 10000
-  let codeThatMustBeRunAlone = do
-        replicateM_ times $ do
-          gotIt <- tryTakeMVar var
-          case gotIt of
-            Nothing -> expectationFailure "Couldn't get the mvar, this means that the 'sequential' above is broken."
-            Just () -> putMVar var ()
-  it "does not happen at same time as the other test (A)" codeThatMustBeRunAlone
-  it "does not happen at same time as the other test (B)" codeThatMustBeRunAlone
diff --git a/test/Test/Syd/Specify/AllOuterSpec.hs b/test/Test/Syd/Specify/AllOuterSpec.hs
deleted file mode 100644
--- a/test/Test/Syd/Specify/AllOuterSpec.hs
+++ /dev/null
@@ -1,29 +0,0 @@
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE GADTs #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-
-module Test.Syd.Specify.AllOuterSpec (spec) where
-
-import Test.QuickCheck
-import Test.Syd
-
-spec :: Spec
-spec = sequential $ do
-  describe "boolean" $ do
-    beforeAll (pure (1 :: Int)) $
-      beforeAll (pure (2 :: Int)) $
-        itWithAll "boolean function (all)" $
-          \(HCons i (HCons j HNil) :: HList '[Int, Int]) () -> even i && odd j
-
-  describe "IO action" $ do
-    beforeAll (pure (1 :: Int)) $ do
-      beforeAll (pure (2 :: Int)) $
-        itWithAll "IO action function (all)" $
-          \(HCons i (HCons j HNil) :: HList '[Int, Int]) () -> (i, j) `shouldBe` (2, 1)
-
-  describe "property test" $ do
-    beforeAll (pure (1 :: Int)) $ do
-      beforeAll (pure (2 :: Int)) $
-        itWithAll "property test function (all)" $
-          \(HCons i (HCons j HNil) :: HList '[Int, Int]) () ->
-            property $ \k -> i * j * k `shouldBe` 1 * 2 * k
diff --git a/test/Test/Syd/SpecifySpec.hs b/test/Test/Syd/SpecifySpec.hs
deleted file mode 100644
--- a/test/Test/Syd/SpecifySpec.hs
+++ /dev/null
@@ -1,40 +0,0 @@
-module Test.Syd.SpecifySpec (spec) where
-
-import Test.QuickCheck
-import Test.Syd
-
-spec :: Spec
-spec = sequential $ do
-  describe "boolean" $ do
-    it "boolean" True
-    before (pure (2 :: Int)) $
-      it "boolean function (inner)" $
-        \i -> even i
-    beforeAll (pure (2 :: Int)) $ do
-      itWithOuter "boolean function (one outer)" $ \i -> even i
-      itWithBoth "boolean function (both inner and outer)" $ \i () -> even i
-
-  describe "IO action" $ do
-    it "IO action" True
-    before (pure (2 :: Int)) $
-      it "IO action function (inner)" $
-        \i -> i `shouldBe` 2
-    beforeAll (pure (1 :: Int)) $ do
-      itWithOuter "IO action function (one outer)" $ \i -> i `shouldBe` 1
-      itWithBoth "IO action function (both inner and outer)" $ \i () -> i `shouldBe` 1
-
-  describe "property test" $ do
-    it "property test" $ property $ \j -> j `shouldBe` (j :: Int)
-    before (pure (2 :: Int)) $
-      it "property test function (inner)" $ \i ->
-        property $ \j ->
-          i * j `shouldBe` 2 * (j :: Int)
-    beforeAll (pure (1 :: Int)) $ do
-      itWithOuter "property test function (one outer)" $ \i -> property $ \j ->
-        i * j `shouldBe` 1 * j
-      itWithBoth "property test function (both inner and outer)" $ \i () -> property $ \j ->
-        i * j `shouldBe` 1 * j
-
-  describe "pending tests" $ do
-    pending "this is a pending test"
-    pendingWith "this is another pending test" "with this reason"
diff --git a/test/Test/Syd/TimingSpec.hs b/test/Test/Syd/TimingSpec.hs
deleted file mode 100644
--- a/test/Test/Syd/TimingSpec.hs
+++ /dev/null
@@ -1,38 +0,0 @@
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE NumericUnderscores #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TypeFamilies #-}
-
-module Test.Syd.TimingSpec (spec) where
-
-import Control.Concurrent
-import System.IO.Unsafe
-import Test.QuickCheck
-import Test.Syd
-
-spec :: Spec
-spec = doNotRandomiseExecutionOrder $ do
-  it "takes at least 10 milliseconds (pure)" $
-    unsafePerformIO take10ms `seq`
-      True
-  it "takes at least 10 milliseconds (IO)" $ do
-    threadDelay 10_000
-  it "takes at least 10 milliseconds (property) " $
-    property $ \() -> do
-      threadDelay 100
-  it "takes at least 100 milliseconds (pure)" $
-    unsafePerformIO take100ms `seq`
-      True
-  it "takes at least 100 milliseconds (IO)" $ do
-    threadDelay 100_000
-  it "takes at least 100 milliseconds (property) " $
-    property $ \() -> do
-      threadDelay 10_000
-
-{-# NOINLINE take10ms #-}
-take10ms :: IO ()
-take10ms = threadDelay 10_000
-
-{-# NOINLINE take100ms #-}
-take100ms :: IO ()
-take100ms = threadDelay 100_000
diff --git a/test_resources/defaultSettings-show.golden b/test_resources/defaultSettings-show.golden
deleted file mode 100644
--- a/test_resources/defaultSettings-show.golden
+++ /dev/null
@@ -1,20 +0,0 @@
-Settings
-  { settingSeed = FixedSeed 42
-  , settingRandomiseExecutionOrder = True
-  , settingThreads = ByCapabilities
-  , settingMaxSuccess = 100
-  , settingMaxSize = 100
-  , settingMaxDiscard = 10
-  , settingMaxShrinks = 100
-  , settingGoldenStart = False
-  , settingGoldenReset = False
-  , settingColour = Nothing
-  , settingFilters = []
-  , settingFailFast = False
-  , settingIterations = OneIteration
-  , settingRetries = 3
-  , settingFailOnFlaky = False
-  , settingReportProgress = ReportNoProgress
-  , settingDebug = False
-  , settingProfile = False
-  }
diff --git a/test_resources/even/2 b/test_resources/even/2
deleted file mode 100644
--- a/test_resources/even/2
+++ /dev/null
@@ -1,1 +0,0 @@
-2
diff --git a/test_resources/even/4 b/test_resources/even/4
deleted file mode 100644
--- a/test_resources/even/4
+++ /dev/null
@@ -1,1 +0,0 @@
-4
diff --git a/test_resources/even/odd/3 b/test_resources/even/odd/3
deleted file mode 100644
--- a/test_resources/even/odd/3
+++ /dev/null
@@ -1,1 +0,0 @@
-3
diff --git a/test_resources/odd/3 b/test_resources/odd/3
deleted file mode 100644
--- a/test_resources/odd/3
+++ /dev/null
@@ -1,1 +0,0 @@
-3
diff --git a/test_resources/odd/deep/5 b/test_resources/odd/deep/5
deleted file mode 100644
--- a/test_resources/odd/deep/5
+++ /dev/null
@@ -1,1 +0,0 @@
-5
diff --git a/test_resources/output-test.txt b/test_resources/output-test.txt
deleted file mode 100644
--- a/test_resources/output-test.txt
+++ /dev/null
@@ -1,930 +0,0 @@
-[34mTests:[m
-
-[32m✓ [m[32mPasses[m                                                                            [32m      0.00 ms[m
-[33merror[m
-  [31m✗ [m[31mPure error[m                                                                      [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mImpure error[m                                                                    [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-[33mundefined[m
-  [31m✗ [m[31mPure undefined[m                                                                  [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mImpure undefined[m                                                                [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-[31m✗ [m[31mExit code[m                                                                         [32m      0.00 ms[m
-  Retries: 3 (does not look flaky)
-[33mexceptions[m
-  [31m✗ [m[31mRecord construction error[m                                                       [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [33mRecord construction error[m
-    [31m✗ [m[31mfails in IO, as the result[m                                                    [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-    [31m✗ [m[31mfails in IO, as the action[m                                                    [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-    [31m✗ [m[31mfails in pure code[m                                                            [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-  [31m✗ [m[31mRecord selection error[m                                                          [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [33mRecord selection error[m
-    [31m✗ [m[31mfails in IO, as the result[m                                                    [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-    [31m✗ [m[31mfails in IO, as the action[m                                                    [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-    [31m✗ [m[31mfails in pure code[m                                                            [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-  [31m✗ [m[31mRecord update error[m                                                             [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [33mRecord update error[m
-    [31m✗ [m[31mfails in IO, as the result[m                                                    [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-    [31m✗ [m[31mfails in IO, as the action[m                                                    [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-    [31m✗ [m[31mfails in pure code[m                                                            [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-  [31m✗ [m[31mPattern matching error[m                                                          [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [33mPattern matching error[m
-    [31m✗ [m[31mfails in IO, as the result[m                                                    [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-    [31m✗ [m[31mfails in IO, as the action[m                                                    [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-    [31m✗ [m[31mfails in pure code[m                                                            [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-  [31m✗ [m[31mArithException[m                                                                  [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [33mPattern matching error[m
-    [31m✗ [m[31mfails in IO, as the result[m                                                    [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-    [31m✗ [m[31mfails in IO, as the action[m                                                    [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-    [31m✗ [m[31mfails in pure code[m                                                            [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-  [31m✗ [m[31mNoMethodError[m                                                                   [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [33mPattern matching error[m
-    [31m✗ [m[31mfails in IO, as the result[m                                                    [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-    [31m✗ [m[31mfails in IO, as the action[m                                                    [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-    [31m✗ [m[31mfails in pure code[m                                                            [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-[33mPrinting[m
-  [32m✓ [m[32mprint[m                                                                           [32m      0.00 ms[m
-  [32m✓ [m[32mputStrLn[m                                                                        [32m      0.00 ms[m
-[33mProperty tests[m
-  [33mpure[m
-    [32m✓ [m[32mreversing a list twice is the same as reversing it once[m                       [32m      0.00 ms[m
-      passed for all of [32m10[m inputs.
-    [31m✗ [m[31mshould fail to show that sorting does nothing[m                                 [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-    [32m✓ [m[32mshould work with custom generators too[m                                        [32m      0.00 ms[m
-      passed for all of [32m10[m inputs.
-  [33mimpure[m
-    [32m✓ [m[32mreversing a list twice is the same as reversing it once[m                       [32m      0.00 ms[m
-      passed for all of [32m10[m inputs.
-    [31m✗ [m[31mshould fail to show that sorting does nothing[m                                 [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-    [32m✓ [m[32mshould work with custom generators too[m                                        [32m      0.00 ms[m
-      passed for all of [32m10[m inputs.
-[33mLong running tests[m
-  [32m✓ [m[32mtakes a while (1)[m                                                               [32m      0.00 ms[m
-  [32m✓ [m[32mtakes a while (2)[m                                                               [32m      0.00 ms[m
-  [32m✓ [m[32mtakes a while (3)[m                                                               [32m      0.00 ms[m
-  [32m✓ [m[32mtakes a while (4)[m                                                               [32m      0.00 ms[m
-  [32m✓ [m[32mtakes a while (5)[m                                                               [32m      0.00 ms[m
-  [32m✓ [m[32mtakes a while (6)[m                                                               [32m      0.00 ms[m
-  [32m✓ [m[32mtakes a while (7)[m                                                               [32m      0.00 ms[m
-  [32m✓ [m[32mtakes a while (8)[m                                                               [32m      0.00 ms[m
-  [32m✓ [m[32mtakes a while (9)[m                                                               [32m      0.00 ms[m
-  [32m✓ [m[32mtakes a while (10)[m                                                              [32m      0.00 ms[m
-[33mDiff[m
-  [31m✗ [m[31mshows nice multi-line diffs[m                                                     [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mshows nice multi-line diffs[m                                                     [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-[33massertions[m
-  [31m✗ [m[31mshouldBe[m                                                                        [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mshouldNotBe[m                                                                     [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mshouldSatisfy[m                                                                   [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mshouldNotSatisfy[m                                                                [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mshouldSatisfyNamed[m                                                              [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mshouldNotSatisfyNamed[m                                                           [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-[35mpending test[m
-[33mGolden[m
-  [31m✗ [m[31mdoes not fail the suite when an exception happens while reading[m                 [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mdoes not fail the suite when an exception happens while producing[m               [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-    [31mGolden output not found[m
-  [31m✗ [m[31mdoes not fail the suite when an exception happens while writing[m                 [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-    [31mGolden output not found[m
-  [31m✗ [m[31mdoes not fail the suite when an exception happens while checking for equality[m   [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [33moutputResultForest[m
-    [32m✓ [m[32moutputs the same as last time[m                                                 [32m      0.00 ms[m
-[33mAround[m
-  [33mbefore[m
-    [31m✗ [m[31mdoes not kill the test suite[m                                                  [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-  [33mbefore_[m
-    [31m✗ [m[31mdoes not kill the test suite[m                                                  [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-  [33mafter[m
-    [31m✗ [m[31mdoes not kill the test suite[m                                                  [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-  [33mafter_[m
-    [31m✗ [m[31mdoes not kill the test suite[m                                                  [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-  [33maround[m
-    [31m✗ [m[31mdoes not kill the test suite[m                                                  [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-  [33maround_[m
-    [31m✗ [m[31mdoes not kill the test suite[m                                                  [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-  [33maroundWith[m
-    [31m✗ [m[31mdoes not kill the test suite[m                                                  [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-  [33maroundWith'[m
-    [31m✗ [m[31mdoes not kill the test suite[m                                                  [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-[31m✗ [m[31mexpectationFailure[m                                                                [32m      0.00 ms[m
-  Retries: 3 (does not look flaky)
-[33mString[m
-  [31m✗ [m[31mcompares strings[m                                                                [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mcompares strings[m                                                                [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mcompares texts[m                                                                  [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mcompares texts[m                                                                  [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mcompares bytestrings[m                                                            [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-[33mContext[m
-  [31m✗ [m[31mshows a nice context[m                                                            [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mshows a nice context multiple levels deep[m                                       [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mshows a context when an exception is thrown as well[m                             [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-[33mProperty[m
-  [33m0 tests run[m
-    [32m✓ [m[32mshows a red '0 tests' when no tests are run[m                                   [32m      0.00 ms[m
-      passed for all of [31m0[m inputs.
-  [33mgenerated values[m
-    [31m✗ [m[31mshows many generated values too[m                                               [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-  [33mlabels[m
-    [32m✓ [m[32mshows the labels in use on success[m                                            [32m      0.00 ms[m
-      passed for all of [32m100[m inputs.
-      Labels
-        31.00% "length of input is 0"
-        21.00% "length of input is 1"
-        13.00% "length of input is 2"
-         8.00% "length of input is 3"
-         6.00% "length of input is 4"
-        10.00% "length of input is 5"
-         6.00% "length of input is 6"
-         4.00% "length of input is 7"
-         1.00% "length of input is 8"
-    [32m✓ [m[32mshows the labels in use on success[m                                            [32m      0.00 ms[m
-      passed for all of [32m100[m inputs.
-      Labels
-        31.00% "length of input is 0", "magnitude (digits) of sum of input is 0"
-        13.00% "length of input is 1", "magnitude (digits) of sum of input is 0"
-         8.00% "length of input is 1", "magnitude (digits) of sum of input is 1"
-         5.00% "length of input is 2", "magnitude (digits) of sum of input is 0"
-         7.00% "length of input is 2", "magnitude (digits) of sum of input is 1"
-         1.00% "length of input is 2", "magnitude (digits) of sum of input is 2"
-         4.00% "length of input is 3", "magnitude (digits) of sum of input is 0"
-         3.00% "length of input is 3", "magnitude (digits) of sum of input is 1"
-         1.00% "length of input is 3", "magnitude (digits) of sum of input is 2"
-         5.00% "length of input is 4", "magnitude (digits) of sum of input is 0"
-         1.00% "length of input is 4", "magnitude (digits) of sum of input is 2"
-         7.00% "length of input is 5", "magnitude (digits) of sum of input is 0"
-         3.00% "length of input is 5", "magnitude (digits) of sum of input is 2"
-         5.00% "length of input is 6", "magnitude (digits) of sum of input is 0"
-         1.00% "length of input is 6", "magnitude (digits) of sum of input is 2"
-         2.00% "length of input is 7", "magnitude (digits) of sum of input is 0"
-         2.00% "length of input is 7", "magnitude (digits) of sum of input is 1"
-         1.00% "length of input is 8", "magnitude (digits) of sum of input is 0"
-    [31m✗ [m[31mshows the labels in use on failure[m                                            [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-      Labels
-        100.00% "length of input is 0", "magnitude (digits) of sum of input is 0"
-  [33mclasses[m
-    [32m✓ [m[32mshows the classes in use on success[m                                           [32m      0.00 ms[m
-      passed for all of [32m100[m inputs.
-      Classes
-        100.00% non-trivial
-    [32m✓ [m[32mshows the classes in use on success[m                                           [32m      0.00 ms[m
-      passed for all of [32m100[m inputs.
-      Classes
-        31.00% empty
-        48.00% non-trivial
-        21.00% single element
-    [31m✗ [m[31mshows the classes in use on failure[m                                           [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-      Classes
-        100.00% empty
-  [33mtables[m
-    [32m✓ [m[32mshows the tables in use on success[m                                            [32m      0.00 ms[m
-      passed for all of [32m100[m inputs.
-       
-      List elements
-        10.14% -1
-         6.45% -2
-         7.37% -3
-         7.83% -4
-         5.07% -5
-         4.61% -6
-         5.99% -7
-         1.38% -8
-         0.46% -9
-         7.37% 0
-         6.91% 1
-         6.45% 2
-         6.45% 3
-         6.45% 4
-         4.61% 5
-         4.61% 6
-         4.61% 7
-         1.84% 8
-         1.38% 9
-[33mShrinking[m
-  [31m✗ [m[31mcan grab the mvar during shrinking[m                                              [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-[33mRetries[m
-  [31m✗ [m[31mdoes not retry if the test is configured withoutRetries[m                         [32m      0.00 ms[m
-  [31m✗ [m[31mRetries this five times[m                                                         [32m      0.00 ms[m
-    Retries: 5 (does not look flaky)
-[33mFlakiness[m
-  [32m✓ [m[32mAllows flakiness on True eventhough there is none (should succeed)[m              [32m      0.00 ms[m
-  [31m✗ [m[31mAllows flakiness on False eventhough there is none (should fail)[m                [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [32m✓ [m[32mallows this intentionally flaky test with the default number of retries[m         [32m      0.00 ms[m
-    Retries: 2[31m !!! FLAKY !!![m
-    [35mWe're on it![m
-  [31m✗ [m[31mDoes not allow flakiness if flakiness is not allowed even if retries happen[m     [32m      0.00 ms[m
-    Retries: 2[31m !!! FLAKY !!![m
-  [31m✗ [m[31mAllows flakiness in this boolean five times (should fail with 5 retries)[m        [32m      0.00 ms[m
-    Retries: 5 (does not look flaky)
-  [32m✓ [m[32mallows this intentionally flaky test with up to four retries[m                    [32m      0.00 ms[m
-    Retries: 2[31m !!! FLAKY !!![m
-    [35mWe're on it![m
-[33mxdescribe[m
-  [33mtwo pending tests below here[m
-    [35mone[m
-    [35mtwo[m
-  [33mfour pending tests below here[m
-    [35mone[m
-    [35mtwo[m
-    [33mwat[m
-      [35mthree[m
-      [35mfour[m
-[33mcallstack[m
-  [31m✗ [m[31mit[m                                                                              [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mspecify[m                                                                         [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mprop[m                                                                            [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [33mdescribe[m
-    [31m✗ [m[31mdescribe-it[m                                                                   [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-    [31m✗ [m[31mdescribe-specify[m                                                              [32m      0.00 ms[m
-      Retries: 3 (does not look flaky)
-[33mexpectations[m
-  [32m✓ [m[32mconsidered passing[m                                                              [32m      0.00 ms[m
-  [32m✓ [m[32mconsidered passing[m                                                              [32m      0.00 ms[m
-  [31m✗ [m[31mconsidered failing[m                                                              [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mconsidered failing[m                                                              [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-[33mcombinators[m
-  [31m✗ [m[31mshould fail[m                                                                     [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [32m✓ [m[32mshould pass[m                                                                     [32m      0.00 ms[m
-    passed for all of [32m100[m inputs.
-  [31m✗ [m[31mshould not crash (undefined value)[m                                              [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mshould not crash (undefined generator)[m                                          [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [31m✗ [m[31mshould be even[m                                                                  [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-  [32m✓ [m[32mshould be even[m                                                                  [32m      0.00 ms[m
-  [31m✗ [m[31mshould be even[m                                                                  [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-[33mrandomness[m
-  [31m✗ [m[31malways outputs the same pseudorandomness[m                                        [32m      0.00 ms[m
-    Retries: 3 (does not look flaky)
-
-
-[34mFailures:[m
-
-  [36m  output-test/Spec.hs:35[m
-  [31m✗ [m[31m1 [m[31merror.Pure error[m
-       Retries: 3 (does not look flaky)
-       foobar
-       CallStack (from HasCallStack):
-         error, called at output-test/Spec.hs:35:28 in main:Spec
-  
-  [36m  output-test/Spec.hs:36[m
-  [31m✗ [m[31m2 [m[31merror.Impure error[m
-       Retries: 3 (does not look flaky)
-       foobar
-       CallStack (from HasCallStack):
-         error, called at output-test/Spec.hs:36:24 in main:Spec
-  
-  [36m  output-test/Spec.hs:38[m
-  [31m✗ [m[31m3 [m[31mundefined.Pure undefined[m
-       Retries: 3 (does not look flaky)
-       Prelude.undefined
-       CallStack (from HasCallStack):
-         error, called at libraries/base/GHC/Err.hs:74:14 in base:GHC.Err
-         undefined, called at output-test/Spec.hs:38:31 in main:Spec
-  
-  [36m  output-test/Spec.hs:39[m
-  [31m✗ [m[31m4 [m[31mundefined.Impure undefined[m
-       Retries: 3 (does not look flaky)
-       Prelude.undefined
-       CallStack (from HasCallStack):
-         error, called at libraries/base/GHC/Err.hs:74:14 in base:GHC.Err
-         undefined, called at output-test/Spec.hs:39:28 in main:Spec
-  
-  [36m  output-test/Spec.hs:40[m
-  [31m✗ [m[31m5 [m[31mExit code[m
-       Retries: 3 (does not look flaky)
-       ExitFailure 1
-  
-  [36m  output-test/Spec.hs:48[m
-  [31m✗ [m[31m6 [m[31mexceptions.Record construction error[m
-       Retries: 3 (does not look flaky)
-       test
-  
-  [36m  output-test/Spec.hs:45[m
-  [31m✗ [m[31m7 [m[31mexceptions.Record construction error.fails in IO, as the result[m
-       Retries: 3 (does not look flaky)
-       output-test/Spec.hs:49:57-64: Missing field in record construction field
-  
-  [36m  output-test/Spec.hs:46[m
-  [31m✗ [m[31m8 [m[31mexceptions.Record construction error.fails in IO, as the action[m
-       Retries: 3 (does not look flaky)
-       output-test/Spec.hs:49:57-64: Missing field in record construction field
-  
-  [36m  output-test/Spec.hs:47[m
-  [31m✗ [m[31m9 [m[31mexceptions.Record construction error.fails in pure code[m
-       Retries: 3 (does not look flaky)
-       output-test/Spec.hs:49:57-64: Missing field in record construction field
-  
-  [36m  output-test/Spec.hs:50[m
-  [31m✗ [m[31m10 [m[31mexceptions.Record selection error[m
-       Retries: 3 (does not look flaky)
-       test
-  
-  [36m  output-test/Spec.hs:45[m
-  [31m✗ [m[31m11 [m[31mexceptions.Record selection error.fails in IO, as the result[m
-       Retries: 3 (does not look flaky)
-       No match in record selector field
-  
-  [36m  output-test/Spec.hs:46[m
-  [31m✗ [m[31m12 [m[31mexceptions.Record selection error.fails in IO, as the action[m
-       Retries: 3 (does not look flaky)
-       No match in record selector field
-  
-  [36m  output-test/Spec.hs:47[m
-  [31m✗ [m[31m13 [m[31mexceptions.Record selection error.fails in pure code[m
-       Retries: 3 (does not look flaky)
-       No match in record selector field
-  
-  [36m  output-test/Spec.hs:52[m
-  [31m✗ [m[31m14 [m[31mexceptions.Record update error[m
-       Retries: 3 (does not look flaky)
-       test
-  
-  [36m  output-test/Spec.hs:45[m
-  [31m✗ [m[31m15 [m[31mexceptions.Record update error.fails in IO, as the result[m
-       Retries: 3 (does not look flaky)
-       output-test/Spec.hs:53:60-88: Non-exhaustive patterns in record update
-  
-  [36m  output-test/Spec.hs:46[m
-  [31m✗ [m[31m16 [m[31mexceptions.Record update error.fails in IO, as the action[m
-       Retries: 3 (does not look flaky)
-       output-test/Spec.hs:53:60-88: Non-exhaustive patterns in record update
-  
-  [36m  output-test/Spec.hs:47[m
-  [31m✗ [m[31m17 [m[31mexceptions.Record update error.fails in pure code[m
-       Retries: 3 (does not look flaky)
-       output-test/Spec.hs:53:60-88: Non-exhaustive patterns in record update
-  
-  [36m  output-test/Spec.hs:54[m
-  [31m✗ [m[31m18 [m[31mexceptions.Pattern matching error[m
-       Retries: 3 (does not look flaky)
-       test
-  
-  [36m  output-test/Spec.hs:45[m
-  [31m✗ [m[31m19 [m[31mexceptions.Pattern matching error.fails in IO, as the result[m
-       Retries: 3 (does not look flaky)
-       output-test/Spec.hs:55:50-64: Non-exhaustive patterns in Cons1 s
-  
-  [36m  output-test/Spec.hs:46[m
-  [31m✗ [m[31m20 [m[31mexceptions.Pattern matching error.fails in IO, as the action[m
-       Retries: 3 (does not look flaky)
-       output-test/Spec.hs:55:50-64: Non-exhaustive patterns in Cons1 s
-  
-  [36m  output-test/Spec.hs:47[m
-  [31m✗ [m[31m21 [m[31mexceptions.Pattern matching error.fails in pure code[m
-       Retries: 3 (does not look flaky)
-       output-test/Spec.hs:55:50-64: Non-exhaustive patterns in Cons1 s
-  
-  [36m  output-test/Spec.hs:56[m
-  [31m✗ [m[31m22 [m[31mexceptions.ArithException[m
-       Retries: 3 (does not look flaky)
-       arithmetic underflow
-  
-  [36m  output-test/Spec.hs:45[m
-  [31m✗ [m[31m23 [m[31mexceptions.Pattern matching error.fails in IO, as the result[m
-       Retries: 3 (does not look flaky)
-       divide by zero
-  
-  [36m  output-test/Spec.hs:46[m
-  [31m✗ [m[31m24 [m[31mexceptions.Pattern matching error.fails in IO, as the action[m
-       Retries: 3 (does not look flaky)
-       divide by zero
-  
-  [36m  output-test/Spec.hs:47[m
-  [31m✗ [m[31m25 [m[31mexceptions.Pattern matching error.fails in pure code[m
-       Retries: 3 (does not look flaky)
-       divide by zero
-  
-  [36m  output-test/Spec.hs:58[m
-  [31m✗ [m[31m26 [m[31mexceptions.NoMethodError[m
-       Retries: 3 (does not look flaky)
-       test
-  
-  [36m  output-test/Spec.hs:45[m
-  [31m✗ [m[31m27 [m[31mexceptions.Pattern matching error.fails in IO, as the result[m
-       Retries: 3 (does not look flaky)
-       output-test/Spec.hs:29:10-19: No instance nor default method for class operation toUnit
-  
-  [36m  output-test/Spec.hs:46[m
-  [31m✗ [m[31m28 [m[31mexceptions.Pattern matching error.fails in IO, as the action[m
-       Retries: 3 (does not look flaky)
-       output-test/Spec.hs:29:10-19: No instance nor default method for class operation toUnit
-  
-  [36m  output-test/Spec.hs:47[m
-  [31m✗ [m[31m29 [m[31mexceptions.Pattern matching error.fails in pure code[m
-       Retries: 3 (does not look flaky)
-       output-test/Spec.hs:29:10-19: No instance nor default method for class operation toUnit
-  
-  [36m  output-test/Spec.hs:72[m
-  [31m✗ [m[31m30 [m[31mProperty tests.pure.should fail to show that sorting does nothing[m
-       Retries: 3 (does not look flaky)
-       Failed after 3 tests
-       Generated: [33m[-5,3,11,-3,-13,0,19,-10,15,-13,1,-12,10,-18,-3,-2,6,-9,-6][m
-  
-  [36m  output-test/Spec.hs:80[m
-  [31m✗ [m[31m31 [m[31mProperty tests.impure.should fail to show that sorting does nothing[m
-       Retries: 3 (does not look flaky)
-       Failed after 3 tests
-       Generated: [33m[-5,3,11,-3,-13,0,19,-10,15,-13,1,-12,10,-18,-3,-2,6,-9,-6][m
-       Expected these values to be equal:
-       [34mActual:   [m
-       [ -[31m1[m[31m8[m
-       , [31m-[m1[31m3[m
-       , -[31m1[m3
-       , -1[31m2[m
-       , [31m-1[m0
-       , [31m-[m9
-       , -[31m6[m
-       , [31m-[m5
-       , -3
-       , [31m-[m[31m3[m
-       , -2
-       , 0
-       , 1
-       , 3
-       , [31m6[m
-       , [31m1[m[31m0[m
-       , [31m11[m
-       [31m, 1[m[31m5[m
-       , [31m1[m[31m9[m
-       ]
-       [34mExpected: [m
-       [ -[32m5[m[42m[m
-       [42m[m[32m, [m[32m3[m
-       , 1[32m1[m
-       , -3
-       , -1[32m3[m
-       , 0
-       , [32m1[m9
-       , -[32m1[m[32m0[m
-       , [32m1[m5
-       , -[32m1[m3
-       , [32m1[m
-       , -[32m1[m2
-       , [32m1[m0
-       , [32m-[m1[32m8[m
-       , [32m-[m3
-       , [32m-[m[32m2[m
-       , [32m6[m
-       , [32m-[m[32m9[m
-       , [32m-6[m
-       ]
-       [34mInline diff: [m
-       [ -[32m5[m[42m[m
-       [42m[m[32m, [m[31m1[m[32m3[m[31m8[m
-       , [31m-[m1[32m1[m[31m3[m
-       , -[31m1[m3
-       , -1[32m3[m[31m2[m
-       , [31m-1[m0
-       , [31m-[m[32m1[m9
-       , -[32m1[m[31m6[m[32m0[m
-       , [32m1[m[31m-[m5
-       , -[32m1[m3
-       , [31m-[m[31m3[m[32m1[m
-       , -[32m1[m2
-       , [32m1[m0
-       , [32m-[m1[32m8[m
-       , [32m-[m3
-       , [32m-[m[31m6[m[32m2[m
-       , [31m1[m[31m0[m[32m6[m
-       , [32m-[m[31m11[m
-       [31m, 1[m[31m5[m[32m9[m
-       , [31m1[m[32m-6[m[31m9[m
-       ]
-  
-  [36m  output-test/Spec.hs:90[m
-  [31m✗ [m[31m32 [m[31mDiff.shows nice multi-line diffs[m
-       Retries: 3 (does not look flaky)
-       Expected these values to be equal:
-       [34mActual:   [m
-       ( "foo"
-       , [[41m [m[31m"qu[m[31mux[m[31m"[m [31m,[m[41m [m"quux" , "quux" , "quux" , "quux" , "quux" , "quux" ]
-       , "ba[31mr[m"
-       )
-       [34mExpected: [m
-       ( "[32mf[m[32mo[m[32mo[mfoo"
-       , [ "quux" , "quux" , "quux" , "quux" , "quux" , "quux" ]
-       , "ba[32mz[m"
-       )
-       [34mInline diff: [m
-       ( "[32mf[m[32mo[m[32mo[mfoo"
-       , [[41m [m[31m"qu[m[31mux[m[31m"[m [31m,[m[41m [m"quux" , "quux" , "quux" , "quux" , "quux" , "quux" ]
-       , "ba[32mz[m[31mr[m"
-       )
-  
-  [36m  output-test/Spec.hs:92[m
-  [31m✗ [m[31m33 [m[31mDiff.shows nice multi-line diffs[m
-       Retries: 3 (does not look flaky)
-       Expected these values to be equal:
-       [34mActual:   [m( "foo"[41m [m, [[31m][m , "ba[31mr[m"[41m [m)
-       [34mExpected: [m
-       ( "[32mf[m[32mo[m[32mo[mfoo"[42m[m
-       [42m[m, [[32m "[m[32mquux" , [m[32m"quux" , "quux" [m[32m, "quux" , "quux[m[32m" , "quu[m[32mx"[m [32m][m
-       [32m[m, "ba[32mz[m"[42m[m
-       [42m[m)
-       [34mInline diff: [m
-       ( "[32mf[m[32mo[m[32mo[mfoo"[41m [m[42m[m
-       [42m[m, [[31m][m[32m "[m[32mquux" , [m[32m"quux" , "quux" [m[32m, "quux" , "quux[m[32m" , "quu[m[32mx"[m [32m][m
-       [32m[m, "ba[31mr[m[32mz[m"[41m [m[42m[m
-       [42m[m)
-  
-  [36m  output-test/Spec.hs:95[m
-  [31m✗ [m[31m34 [m[31massertions.shouldBe[m
-       Retries: 3 (does not look flaky)
-       Expected these values to be equal:
-       [34mActual:   [m[31m3[m
-       [34mExpected: [m[32m4[m
-  
-  [36m  output-test/Spec.hs:96[m
-  [31m✗ [m[31m35 [m[31massertions.shouldNotBe[m
-       Retries: 3 (does not look flaky)
-       Did not expect equality of the values but both were:
-       3
-  
-  [36m  output-test/Spec.hs:97[m
-  [31m✗ [m[31m36 [m[31massertions.shouldSatisfy[m
-       Retries: 3 (does not look flaky)
-       Predicate failed, but should have succeeded, on this value:
-       3
-  
-  [36m  output-test/Spec.hs:98[m
-  [31m✗ [m[31m37 [m[31massertions.shouldNotSatisfy[m
-       Retries: 3 (does not look flaky)
-       Predicate succeeded, but should have failed, on this value:
-       3
-  
-  [36m  output-test/Spec.hs:99[m
-  [31m✗ [m[31m38 [m[31massertions.shouldSatisfyNamed[m
-       Retries: 3 (does not look flaky)
-       Predicate failed, but should have succeeded, on this value:
-       3
-       Predicate: even
-  
-  [36m  output-test/Spec.hs:100[m
-  [31m✗ [m[31m39 [m[31massertions.shouldNotSatisfyNamed[m
-       Retries: 3 (does not look flaky)
-       Predicate succeeded, but should have failed, on this value:
-       3
-       Predicate: odd
-  
-  [36m  output-test/Spec.hs:103[m
-  [31m✗ [m[31m40 [m[31mGolden.does not fail the suite when an exception happens while reading[m
-       Retries: 3 (does not look flaky)
-       ExitFailure 1
-  
-  [36m  output-test/Spec.hs:111[m
-  [31m✗ [m[31m41 [m[31mGolden.does not fail the suite when an exception happens while producing[m
-       Retries: 3 (does not look flaky)
-       [31mGolden output not found[m
-  
-  [36m  output-test/Spec.hs:119[m
-  [31m✗ [m[31m42 [m[31mGolden.does not fail the suite when an exception happens while writing[m
-       Retries: 3 (does not look flaky)
-       [31mGolden output not found[m
-  
-  [36m  output-test/Spec.hs:126[m
-  [31m✗ [m[31m43 [m[31mGolden.does not fail the suite when an exception happens while checking for equality[m
-       Retries: 3 (does not look flaky)
-       divide by zero
-  
-  [36m  output-test/Spec.hs:149[m
-  [31m✗ [m[31m44 [m[31mAround.before.does not kill the test suite[m
-       Retries: 3 (does not look flaky)
-       user error (test)
-  
-  [36m  output-test/Spec.hs:154[m
-  [31m✗ [m[31m45 [m[31mAround.before_.does not kill the test suite[m
-       Retries: 3 (does not look flaky)
-       user error (test)
-  
-  [36m  output-test/Spec.hs:159[m
-  [31m✗ [m[31m46 [m[31mAround.after.does not kill the test suite[m
-       Retries: 3 (does not look flaky)
-       user error (test)
-  
-  [36m  output-test/Spec.hs:164[m
-  [31m✗ [m[31m47 [m[31mAround.after_.does not kill the test suite[m
-       Retries: 3 (does not look flaky)
-       user error (test)
-  
-  [36m  output-test/Spec.hs:169[m
-  [31m✗ [m[31m48 [m[31mAround.around.does not kill the test suite[m
-       Retries: 3 (does not look flaky)
-       user error (test)
-  
-  [36m  output-test/Spec.hs:174[m
-  [31m✗ [m[31m49 [m[31mAround.around_.does not kill the test suite[m
-       Retries: 3 (does not look flaky)
-       user error (test)
-  
-  [36m  output-test/Spec.hs:179[m
-  [31m✗ [m[31m50 [m[31mAround.aroundWith.does not kill the test suite[m
-       Retries: 3 (does not look flaky)
-       user error (test)
-  
-  [36m  output-test/Spec.hs:184[m
-  [31m✗ [m[31m51 [m[31mAround.aroundWith'.does not kill the test suite[m
-       Retries: 3 (does not look flaky)
-       user error (test)
-  
-  [36m  output-test/Spec.hs:187[m
-  [31m✗ [m[31m52 [m[31mexpectationFailure[m
-       Retries: 3 (does not look flaky)
-       fails
-  
-  [36m  output-test/Spec.hs:190[m
-  [31m✗ [m[31m53 [m[31mString.compares strings[m
-       Retries: 3 (does not look flaky)
-       Expected these values to be equal:
-       [34mActual:   [m"f[31mo[mo\nba[31mr[m\tq[31muu[mx[41m [m"
-       [34mExpected: [m"fo[32mq[m\nba[32mz[m\tq[32me[mx"
-  
-  [36m  output-test/Spec.hs:191[m
-  [31m✗ [m[31m54 [m[31mString.compares strings[m
-       Retries: 3 (does not look flaky)
-       Expected these values to be equal:
-       [34mActual:   [m
-       f[31mo[mo
-       ba[31mr[m	q[31muu[mx[41m [m
-       [34mExpected: [m
-       fo[32mq[m
-       ba[32mz[m	q[32me[mx
-       [34mInline diff: [m
-       f[31mo[mo[32mq[m
-       ba[31mr[m[32mz[m	q[31muu[m[32me[mx[41m [m
-  
-  [36m  output-test/Spec.hs:192[m
-  [31m✗ [m[31m55 [m[31mString.compares texts[m
-       Retries: 3 (does not look flaky)
-       Expected these values to be equal:
-       [34mActual:   [m"f[31mo[mo\nba[31mr[m\tq[31muu[mx[41m [m"
-       [34mExpected: [m"fo[32mq[m\nba[32mz[m\tq[32me[mx"
-  
-  [36m  output-test/Spec.hs:193[m
-  [31m✗ [m[31m56 [m[31mString.compares texts[m
-       Retries: 3 (does not look flaky)
-       Expected these values to be equal:
-       [34mActual:   [m
-       f[31mo[mo
-       ba[31mr[m	q[31muu[mx[41m [m
-       [34mExpected: [m
-       fo[32mq[m
-       ba[32mz[m	q[32me[mx
-       [34mInline diff: [m
-       f[31mo[mo[32mq[m
-       ba[31mr[m[32mz[m	q[31muu[m[32me[mx[41m [m
-  
-  [36m  output-test/Spec.hs:194[m
-  [31m✗ [m[31m57 [m[31mString.compares bytestrings[m
-       Retries: 3 (does not look flaky)
-       Expected these values to be equal:
-       [34mActual:   [m"f[31mo[mo\nba[31mr[m\tq[31muu[mx[41m [m"
-       [34mExpected: [m"fo[32mq[m\nba[32mz[m\tq[32me[mx"
-  
-  [36m  output-test/Spec.hs:197[m
-  [31m✗ [m[31m58 [m[31mContext.shows a nice context[m
-       Retries: 3 (does not look flaky)
-       Expected these values to be equal:
-       [34mActual:   [m[31mTr[m[31mu[me
-       [34mExpected: [m[32mFals[me
-       Context
-  
-  [36m  output-test/Spec.hs:198[m
-  [31m✗ [m[31m59 [m[31mContext.shows a nice context multiple levels deep[m
-       Retries: 3 (does not look flaky)
-       Expected these values to be equal:
-       [34mActual:   [m[31mTr[m[31mu[me
-       [34mExpected: [m[32mFals[me
-       Context3
-       Context2
-       Context1
-  
-  [36m  output-test/Spec.hs:203[m
-  [31m✗ [m[31m60 [m[31mContext.shows a context when an exception is thrown as well[m
-       Retries: 3 (does not look flaky)
-       Prelude.undefined
-       CallStack (from HasCallStack):
-         error, called at libraries/base/GHC/Err.hs:74:14 in base:GHC.Err
-         undefined, called at output-test/Spec.hs:204:26 in main:Spec
-       context
-  
-  [36m  output-test/Spec.hs:210[m
-  [31m✗ [m[31m61 [m[31mProperty.generated values.shows many generated values too[m
-       Retries: 3 (does not look flaky)
-       Failed after 1 tests
-       Generated: [33m0[m
-       Generated: [33m0[m
-       Generated: [33m0[m
-       Generated: [33m0[m
-       Generated: [33m0[m
-       Expected these values to be equal:
-       [34mActual:   [m[31m0[m
-       [34mExpected: [m[32m1[m
-  
-  [36m  output-test/Spec.hs:229[m
-  [31m✗ [m[31m62 [m[31mProperty.labels.shows the labels in use on failure[m
-       Retries: 3 (does not look flaky)
-       Failed after 1 tests
-       Generated: [33m[][m
-       Labels: "length of input is 0", "magnitude (digits) of sum of input is 0"
-       Expected these values to be equal:
-       [34mActual:   [m[]
-       [34mExpected: [m[[42m [m[32m0[m[42m [m]
-  
-  [36m  output-test/Spec.hs:246[m
-  [31m✗ [m[31m63 [m[31mProperty.classes.shows the classes in use on failure[m
-       Retries: 3 (does not look flaky)
-       Failed after 1 tests
-       Generated: [33m[][m
-       Class: empty
-       Expected these values to be equal:
-       [34mActual:   [m[]
-       [34mExpected: [m[[42m [m[32m0[m[42m [m]
-  
-  [36m  output-test/Spec.hs:269[m
-  [31m✗ [m[31m64 [m[31mShrinking.can grab the mvar during shrinking[m
-       Retries: 3 (does not look flaky)
-       Failed after 21 tests
-       Generated: [33m20[m
-       Predicate failed, but should have succeeded, on this value:
-       20
-  
-  [36m  output-test/Spec.hs:276[m
-  [31m✗ [m[31m65 [m[31mRetries.does not retry if the test is configured withoutRetries[m
-  
-  [36m  output-test/Spec.hs:278[m
-  [31m✗ [m[31m66 [m[31mRetries.Retries this five times[m
-       Retries: 5 (does not look flaky)
-  
-  [36m  output-test/Spec.hs:283[m
-  [31m✗ [m[31m67 [m[31mFlakiness.Allows flakiness on False eventhough there is none (should fail)[m
-       Retries: 3 (does not look flaky)
-  
-  [36m  output-test/Spec.hs:292[m
-  [31m✗ [m[31m68 [m[31mFlakiness.Does not allow flakiness if flakiness is not allowed even if retries happen[m
-       Retries: 2[31m !!! FLAKY !!![m
-       Expected these values to be equal:
-       [34mActual:   [m[31m1[m
-       [34mExpected: [m[32m2[m
-  
-  [36m  output-test/Spec.hs:296[m
-  [31m✗ [m[31m69 [m[31mFlakiness.Allows flakiness in this boolean five times (should fail with 5 retries)[m
-       Retries: 5 (does not look flaky)
-  
-  [36m  output-test/Spec.hs:316[m
-  [31m✗ [m[31m70 [m[31mcallstack.it[m
-       Retries: 3 (does not look flaky)
-  
-  [36m  output-test/Spec.hs:317[m
-  [31m✗ [m[31m71 [m[31mcallstack.specify[m
-       Retries: 3 (does not look flaky)
-  
-  [36m  Unknown location[m
-  [31m✗ [m[31m72 [m[31mcallstack.prop[m
-       Retries: 3 (does not look flaky)
-       Failed after 1 tests
-  
-  [36m  output-test/Spec.hs:320[m
-  [31m✗ [m[31m73 [m[31mcallstack.describe.describe-it[m
-       Retries: 3 (does not look flaky)
-  
-  [36m  output-test/Spec.hs:321[m
-  [31m✗ [m[31m74 [m[31mcallstack.describe.describe-specify[m
-       Retries: 3 (does not look flaky)
-  
-  [36m  output-test/Spec.hs:328[m
-  [31m✗ [m[31m75 [m[31mexpectations.considered failing[m
-       Retries: 3 (does not look flaky)
-  
-  [36m  output-test/Spec.hs:329[m
-  [31m✗ [m[31m76 [m[31mexpectations.considered failing[m
-       Retries: 3 (does not look flaky)
-  
-  [36m  output-test/Spec.hs:336[m
-  [31m✗ [m[31m77 [m[31mcombinators.should fail[m
-       Retries: 3 (does not look flaky)
-       Failed after 2 tests
-       Generated: [33m-1[m
-  
-  [36m  output-test/Spec.hs:338[m
-  [31m✗ [m[31m78 [m[31mcombinators.should not crash (undefined value)[m
-       Retries: 3 (does not look flaky)
-       Failed after 1 tests
-       Generated: [33m0[m
-       Prelude.undefined
-       CallStack (from HasCallStack):
-         error, called at libraries/base/GHC/Err.hs:74:14 in base:GHC.Err
-         undefined, called at output-test/Spec.hs:338:80 in main:Spec
-  
-  [36m  output-test/Spec.hs:339[m
-  [31m✗ [m[31m79 [m[31mcombinators.should not crash (undefined generator)[m
-       Retries: 3 (does not look flaky)
-       Failed after 1 tests
-       Generated: [33mException thrown while showing test case:
-  Prelude.undefined
-  CallStack (from HasCallStack):
-    error, called at libraries/base/GHC/Err.hs:74:14 in base:GHC.Err
-    undefined, called at output-test/Spec.hs:339:74 in main:Spec
-[m
-       Prelude.undefined
-       CallStack (from HasCallStack):
-         error, called at libraries/base/GHC/Err.hs:74:14 in base:GHC.Err
-         undefined, called at output-test/Spec.hs:339:74 in main:Spec
-  
-  [36m  output-test/Spec.hs:342[m
-  [31m✗ [m[31m80 [m[31mcombinators.should be even[m
-       Retries: 3 (does not look flaky)
-  
-  [36m  output-test/Spec.hs:342[m
-  [31m✗ [m[31m81 [m[31mcombinators.should be even[m
-       Retries: 3 (does not look flaky)
-       Prelude.undefined
-       CallStack (from HasCallStack):
-         error, called at libraries/base/GHC/Err.hs:74:14 in base:GHC.Err
-         undefined, called at output-test/Spec.hs:345:29 in main:Spec
-  
-  [36m  output-test/Spec.hs:348[m
-  [31m✗ [m[31m82 [m[31mrandomness.always outputs the same pseudorandomness[m
-       Retries: 3 (does not look flaky)
-       Expected these values to be equal:
-       [34mActual:   [m[31m4[m[31m9[m
-       [34mExpected: [m[32m2[m
-  
-
-  Examples:                     [32m984[m
-  Passed:                       [32m31[m
-  Failed:                       [31m82[m
-  Flaky:                        [31m3[m
-  Pending:                      [35m7[m
-  Sum of test runtimes:[33m         0.00 seconds[m
-  Test suite took:     [33m         0.00 seconds[m
-
diff --git a/test_resources/output.golden b/test_resources/output.golden
deleted file mode 100644
--- a/test_resources/output.golden
+++ /dev/null
@@ -1,10 +0,0 @@
-[34mTests:[m
-
-
-
-
-  Passed:                       [32m0[m
-  Failed:                       [32m0[m
-  Sum of test runtimes:[33m         0.00 seconds[m
-  Test suite took:     [33m         0.00 seconds[m
-
