diff --git a/tests/test_callfsl.py b/tests/test_callfsl.py
new file mode 100644
index 0000000000000000000000000000000000000000..28481b33c33267042a2828e84c1c7a802d7b85ad
--- /dev/null
+++ b/tests/test_callfsl.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+#
+# test_callfsl.py -
+#
+# Author: Paul McCarthy <pauldmccarthy@gmail.com>
+#
+
+import               os
+import os.path    as op
+import subprocess as sp
+
+import numpy      as np
+
+import pytest
+
+import fsl.utils.callfsl                  as callfsl
+from   fsl.utils.platform import platform as fslplatform
+
+import tests
+
+def setup_module():
+    fsldir = os.environ.get('FSLDIR', None)
+    if fsldir is None or not op.exists(fsldir):
+        raise Exception('FSLDIR is not set - callfsl tests cannot be run')
+
+
+def test_callfsl():
+
+    with tests.testdir() as testdir:
+
+        fname = op.join(testdir, 'myimage.nii.gz')
+
+        img   = tests.make_random_image(fname)
+        img   = img.get_data()
+
+        # Pass a single string
+        cmd    = 'fslstats {} -m'.format(fname)
+        result = callfsl.callFSL(cmd)
+        assert np.isclose(float(result), img.mean())
+
+        # Or pass a list of args
+        result = callfsl.callFSL(*cmd.split())
+        assert np.isclose(float(result), img.mean())
+
+        # Bad commands
+        badcmds = ['fslblob', 'fslstats notafile']
+
+        for cmd in badcmds:
+            with pytest.raises((OSError, sp.CalledProcessError)):
+                callfsl.callFSL(cmd)
+
+        # No FSL - should crash
+        cmd = 'fslinfo {}'.format(fname)
+        callfsl.callFSL(cmd)
+        fslplatform.fsldir = None
+        with pytest.raises(Exception):
+            callfsl.callFSL(cmd)