diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -47,3 +47,7 @@
 * Added a second type variable `b` to `Expect`, allowing a wider variety of tests.
 * Added `assertFailure`, `assertBool`, and `assertEqual` helper functions for creating tests.
 * Simplified `Predicate` to only accept a boolean argument instead of separate predicate function and value arguments.
+
+## 0.3.0.1  -- 2024-12-02
+
+* Tweaked tests and formatting.
diff --git a/dwergaz.cabal b/dwergaz.cabal
--- a/dwergaz.cabal
+++ b/dwergaz.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                dwergaz
-version:             0.3.0.0
+version:             0.3.0.1
 synopsis:            A minimal testing library
 description:         dwergaz is a minimal testing library.
 license:             ISC
diff --git a/src/Test/Dwergaz.hs b/src/Test/Dwergaz.hs
--- a/src/Test/Dwergaz.hs
+++ b/src/Test/Dwergaz.hs
@@ -26,7 +26,9 @@
 import Text.PrettyPrint
 
 data Test
-  = forall a b. (Show a, Show b) => Expect
+  = forall a b.
+    (Show a, Show b) =>
+    Expect
       -- | Test description
       String
       -- | Test function
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -22,7 +22,7 @@
 expectExample02 = assertEqual "Ints are equal" 42 (testFun02 "quux")
 
 predicateExample01, predicateExample02, predicateExample03 :: Test
-predicateExample01 = Predicate "Value is a Left" (isLeft $ testFun03 "quux")
+predicateExample01 = Predicate "Value is a Left" (isLeft (testFun03 "quux"))
 predicateExample02 = assertBool "Value is a Right" (isRight (testFun04 "quux"))
 predicateExample03 = assertFailure "Just fail"
 
@@ -35,11 +35,20 @@
     predicateExample03
   ]
 
-results :: [Result]
-results = fmap runTest exampleTests
+step :: Result -> (ShowS, Bool) -> (ShowS, Bool)
+step result (f, allPassed) =
+  ( showString (resultToString result) . showChar '\n' . f,
+    resultIsPassed result && allPassed
+  )
 
+results :: (String, Bool)
+results = (buildString mempty, allPassed)
+  where
+    (buildString, allPassed) = foldr (step . runTest) (id, True) exampleTests
+
 main :: IO ()
 main = do
-  mapM_ (putStrLn . resultToString) results
-  -- The following should use 'Control.Monad.unless' in real usage.
-  when (all resultIsPassed results) exitFailure
+  let (output, passed) = results
+  putStr output
+  -- The following should be 'Control.Monad.unless' in real usage.
+  when passed exitFailure
