diff --git a/Setup.hs b/Setup.hs
index c1c3f6472..55a7c2178 100644
--- a/Setup.hs
+++ b/Setup.hs
@@ -38,10 +38,6 @@ main :: IO ()
 main = do
   defaultMainWithHooks $ simpleUserHooks {
       postBuild = makeManPages
-    , testHook = \pkg lbi _ flags ->
-         -- pass build directory as first argument to test program
-         test pkg lbi flags{ testOptions =
-               toPathTemplate (buildDir lbi) : testOptions flags }
     , postCopy = \ _ flags pkg lbi ->
          installManpages pkg lbi (fromFlag $ copyVerbosity flags)
               (fromFlag $ copyDest flags)
diff --git a/pandoc.cabal b/pandoc.cabal
index 39e901614..80fd994e6 100644
--- a/pandoc.cabal
+++ b/pandoc.cabal
@@ -406,6 +406,7 @@ Test-Suite test-pandoc
                   HUnit >= 1.2 && < 1.3,
                   containers >= 0.1 && < 0.6,
                   ansi-terminal >= 0.5 && < 0.7,
+                  executable-path >= 0.0 && < 0.1,
                   zip-archive >= 0.2.3.4 && < 0.3
   Other-Modules:  Tests.Old
                   Tests.Helpers
diff --git a/tests/Tests/Old.hs b/tests/Tests/Old.hs
index 7278ec720..8ecbdbbba 100644
--- a/tests/Tests/Old.hs
+++ b/tests/Tests/Old.hs
@@ -3,10 +3,10 @@ module Tests.Old (tests) where
 import Test.Framework (testGroup, Test )
 import Test.Framework.Providers.HUnit
 import Test.HUnit ( assertBool )
-import System.Environment ( getArgs )
+import System.Environment.Executable (getExecutablePath)
 import System.IO ( openTempFile, stderr )
 import System.Process ( runProcess, waitForProcess )
-import System.FilePath ( (</>), (<.>) )
+import System.FilePath ( (</>), (<.>), takeDirectory )
 import System.Directory
 import System.Exit
 import Data.Algorithm.Diff
@@ -225,11 +225,16 @@ testWithNormalize  :: (String -> String) -- ^ Normalize function for output
                    -> FilePath  -- ^ Norm (for test results) filepath
                    -> Test
 testWithNormalize normalizer testname opts inp norm = testCase testname $ do
-  args <- getArgs
-  let buildDir = case args of
-                      (x:_) -> ".." </> x
-                      _     -> error "test-pandoc: missing buildDir argument"
-  let pandocPath = buildDir </> "pandoc" </> "pandoc"
+  -- find pandoc executable relative to test-pandoc
+  -- First, try in same directory (e.g. if both in ~/.cabal/bin)
+  -- Second, try ../pandoc (e.g. if in dist/XXX/build/test-pandoc)
+  pandocPath <- do
+    testExePath <- getExecutablePath
+    let testExeDir = takeDirectory testExePath
+    found <- doesFileExist (testExeDir </> "pandoc")
+    return $ if found
+                then testExeDir </> "pandoc"
+                else testExeDir </> ".." </> "pandoc" </> "pandoc"
   (outputPath, hOut) <- openTempFile "" "pandoc-test"
   let inpPath = inp
   let normPath = norm