diff --git a/HUnit.cabal b/HUnit.cabal
--- a/HUnit.cabal
+++ b/HUnit.cabal
@@ -1,10 +1,11 @@
--- This file has been generated from package.yaml by hpack version 0.17.0.
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.33.0.
 --
 -- see: https://github.com/sol/hpack
 
 name:                   HUnit
-version:                1.6.0.0
-cabal-version:          >= 1.10
+version:                1.6.1.0
 license:                BSD3
 license-file:           LICENSE
 author:                 Dean Herington
@@ -17,7 +18,6 @@
 description:            HUnit is a unit testing framework for Haskell, inspired by the
                         JUnit tool for Java, see: <http://www.junit.org>.
 build-type:             Simple
-
 extra-source-files:
   CHANGELOG.md
   README.md
@@ -30,9 +30,9 @@
   hs-source-dirs:
     src
   build-depends:
-    base == 4.*,
-    deepseq,
-    call-stack
+    base ==4.*,
+    call-stack,
+    deepseq
   exposed-modules:
     Test.HUnit.Base
     Test.HUnit.Lang
@@ -51,15 +51,16 @@
     tests
     examples
   build-depends:
-    base == 4.*,
-    deepseq,
+    HUnit,
+    base ==4.*,
     call-stack,
-    filepath,
-    HUnit
+    deepseq,
+    filepath
   other-modules:
     HUnitTestBase
     HUnitTestExtended
     TerminalTest
     Example
+    Paths_HUnit
   default-language: Haskell2010
   ghc-options: -Wall
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -143,7 +143,7 @@
  With `assertString` the two are combined. With `assertEqual` you provide a
  "preface", an expected value, and an actual value; the failure message shows the two
  unequal values and is prefixed by the preface. Additional ways to create assertions are
- described later under [Avanced Features](#advanced-features)
+ described later under [Advanced Features](#advanced-features)
 
 Since assertions are `IO` computations, they may be combined--along with other
      `IO` computations--using `(>>=)`, `(>>)`, and the `do`
diff --git a/src/Test/HUnit/Lang.hs b/src/Test/HUnit/Lang.hs
--- a/src/Test/HUnit/Lang.hs
+++ b/src/Test/HUnit/Lang.hs
@@ -44,14 +44,7 @@
   (_, loc) : _ -> Just loc
   [] -> Nothing
 
--- | Unconditionally signals that a failure has occured.  All
--- other assertions can be expressed with the form:
---
--- @
---    if conditionIsMet
---        then IO ()
---        else assertFailure msg
--- @
+-- | Unconditionally signals that a failure has occurred.
 assertFailure ::
      HasCallStack =>
      String -- ^ A message that is displayed with the assertion failure
diff --git a/src/Test/HUnit/Text.hs b/src/Test/HUnit/Text.hs
--- a/src/Test/HUnit/Text.hs
+++ b/src/Test/HUnit/Text.hs
@@ -7,7 +7,8 @@
   putTextToHandle, putTextToShowS,
   runTestText,
   showPath, showCounts,
-  runTestTT
+  runTestTT,
+  runTestTTAndExit
 )
 where
 
@@ -16,6 +17,7 @@
 import Data.CallStack
 import Control.Monad (when)
 import System.IO (Handle, stderr, hPutStr, hPutStrLn)
+import System.Exit (exitSuccess, exitFailure)
 
 
 -- | As the general text-based test controller ('runTestText') executes a
@@ -130,3 +132,21 @@
 runTestTT :: Test -> IO Counts
 runTestTT t = do (counts', 0) <- runTestText (putTextToHandle stderr True) t
                  return counts'
+
+-- | Convenience wrapper for 'runTestTT'.
+--   Simply runs 'runTestTT' and then exits back to the OS,
+--   using 'exitSuccess' if there were no errors or failures,
+--   or 'exitFailure' if there were. For example:
+--
+--   > tests :: Test
+--   > tests = ...
+--   >
+--   > main :: IO ()
+--   > main = runTestTTAndExit tests
+
+runTestTTAndExit :: Test -> IO ()
+runTestTTAndExit tests = do
+  c <- runTestTT tests
+  if (errors c == 0) && (failures c == 0)
+    then exitSuccess
+    else exitFailure
