diff --git a/fsl/tests/test_scripts/test_immv_imcp.py b/fsl/tests/test_scripts/test_immv_imcp.py
index 582a23d7c74f3ac53025fcafa51e579d33ff3cc4..276fa5759d237e51da89822a69f4adbe6518fcf2 100644
--- a/fsl/tests/test_scripts/test_immv_imcp.py
+++ b/fsl/tests/test_scripts/test_immv_imcp.py
@@ -6,9 +6,13 @@ import os.path    as op
 import itertools  as it
 import subprocess as sp
 import               os
+import               glob
+import               gzip
 import               shutil
 import               tempfile
 
+from unittest import mock
+
 import               pytest
 
 import numpy as np
@@ -17,20 +21,12 @@ import nibabel as nib
 from   fsl.utils.tempdir import tempdir
 import fsl.scripts.imcp      as imcp_script
 import fsl.scripts.immv      as immv_script
+import fsl.data.image        as fslimage
 
 from .. import cleardir
 from ..test_immv_imcp import makeImage, checkImageHash, checkFilesToExpect
 
 
-real_print = print
-
-def print(*args, **kwargs):
-    pass
-
-
-
-
-
 def test_imcp_script_shouldPass(move=False):
 
 
@@ -234,80 +230,67 @@ def test_imcp_script_shouldPass(move=False):
 
         for outputType, reldir in it.product(outputTypes, reldirs):
 
-            os.environ['FSLOUTPUTTYPE'] = outputType
-
-            for files_to_create, imcp_args, files_to_expect in tests:
-
-                imageHashes = []
-
-                print()
-                print('files_to_create: ', files_to_create)
-                print('imcp_args:       ', imcp_args)
-                print('files_to_expect: ', files_to_expect)
-
-                for i, fname in enumerate(files_to_create.split()):
-                    imageHashes.append(makeImage(op.join(indir, fname)))
+            with mock.patch.dict(os.environ, {'FSLOUTPUTTYPE' : outputType}):
 
-                imcp_args = imcp_args.split()
+                for files_to_create, imcp_args, files_to_expect in tests:
 
-                tindir  = indir
-                toutdir = outdir
+                    imageHashes = []
 
-                if   reldir == 'neutral': reldir = startdir
-                elif reldir == 'indir':   reldir = tindir
-                elif reldir == 'outdir':  reldir = toutdir
-                elif reldir == 'samedir':
-                    reldir  = tindir
-                    toutdir = tindir
+                    for i, fname in enumerate(files_to_create.split()):
+                        imageHashes.append(makeImage(op.join(indir, fname)))
 
-                    if not move:
+                    imcp_args = imcp_args.split()
 
-                        infiles = os.listdir(tindir)
+                    tindir  = indir
+                    toutdir = outdir
 
-                        files_to_expect = files_to_expect +  ' ' + \
-                                          ' '.join(infiles)
+                    if   reldir == 'neutral': reldir = startdir
+                    elif reldir == 'indir':   reldir = tindir
+                    elif reldir == 'outdir':  reldir = toutdir
+                    elif reldir == 'samedir':
+                        reldir  = tindir
+                        toutdir = tindir
 
-                        for inf in infiles:
-                            img     = nib.load(op.join(tindir, inf),
-                                               mmap=False)
-                            imghash = hash(np.asanyarray(img.dataobj).tobytes())
-                            img = None
-                            imageHashes.append(imghash)
+                        if not move:
 
-                print('adj files_to_expect: ', files_to_expect)
+                            infiles = os.listdir(tindir)
 
-                os.chdir(reldir)
+                            files_to_expect = files_to_expect +  ' ' + \
+                                              ' '.join(infiles)
 
-                imcp_args[:-1] = [op.join(tindir, a) for a in imcp_args[:-1]]
-                imcp_args[ -1] =  op.join(toutdir, imcp_args[-1])
+                            for inf in infiles:
+                                img     = nib.load(op.join(tindir, inf),
+                                                   mmap=False)
+                                imghash = hash(np.asanyarray(img.dataobj).tobytes())
+                                img = None
+                                imageHashes.append(imghash)
 
-                for i, a in enumerate(imcp_args):
-                    if op.splitdrive(a)[0] == op.splitdrive(reldir)[0]:
-                        imcp_args[i] = op.relpath(a, reldir)
+                    os.chdir(reldir)
 
-                print('indir before:    ', os.listdir(tindir))
-                print('outdir before:   ', os.listdir(toutdir))
+                    imcp_args[:-1] = [op.join(tindir, a) for a in imcp_args[:-1]]
+                    imcp_args[ -1] =  op.join(toutdir, imcp_args[-1])
 
-                if move: result = immv_script.main(imcp_args)
-                else:    result = imcp_script.main(imcp_args)
+                    for i, a in enumerate(imcp_args):
+                        if op.splitdrive(a)[0] == op.splitdrive(reldir)[0]:
+                            imcp_args[i] = op.relpath(a, reldir)
 
-                print('indir after:     ', os.listdir(tindir))
-                print('outdir after:    ', os.listdir(toutdir))
+                    if move: result = immv_script.main(imcp_args)
+                    else:    result = imcp_script.main(imcp_args)
 
-                assert result == 0
+                    assert result == 0
 
-                checkFilesToExpect(
-                    files_to_expect, toutdir, outputType, imageHashes)
+                    checkFilesToExpect(
+                        files_to_expect, toutdir, outputType, imageHashes)
 
-                # too hard if indir == outdir
-                if move and tindir != toutdir:
-                    infiles = os.listdir(tindir)
-                    infiles = [f for f in infiles if op.isfile(f)]
-                    infiles = [f for f in infiles if op.isfile(f)]
-                    assert len(infiles) == 0
+                    # too hard if indir == outdir
+                    if move and tindir != toutdir:
+                        infiles = os.listdir(tindir)
+                        infiles = [f for f in infiles if op.isfile(f)]
+                        infiles = [f for f in infiles if op.isfile(f)]
+                        assert len(infiles) == 0
 
-                cleardir(indir)
-                cleardir(outdir)
+                    cleardir(indir)
+                    cleardir(outdir)
 
     finally:
         os.chdir(startdir)
@@ -397,18 +380,9 @@ def test_imcp_script_shouldFail(move=False):
                     cmd = cmd.replace('indir', indir).replace('outdir', outdir)
                     sp.call(cmd.split())
 
-            print('calling {} {}'.format('immv' if move else 'imcp',
-                                         ' '.join(imcp_args)))
-
-            print('indir before:   {}'.format(os.listdir(indir)))
-            print('out dir before: {}'.format(os.listdir(outdir)))
-
             if move: result = immv_script.main(imcp_args)
             else:    result = imcp_script.main(imcp_args)
 
-            print('indir after:   {}'.format(os.listdir(indir)))
-            print('out dir after: {}'.format(os.listdir(outdir)))
-
             assert result != 0
 
             sp.call('chmod u+rwx {}'.format(indir) .split())
@@ -430,7 +404,6 @@ def test_imcp_script_shouldFail(move=False):
     else:    assert imcp_script.main(['wa']) != 0
 
 
-
 def test_immv_script_shouldPass():
     test_imcp_script_shouldPass(move=True)
 
@@ -440,27 +413,24 @@ def test_immv_script_shouldFail():
     test_imcp_script_shouldFail(move=True)
 
 
-
 def test_imcp_badExt():
     with tempdir():
 
-        with open('file.nii.gz', 'wt') as f:
-            f.write('1')
-
+        ihash  = makeImage('file.nii.gz')
         result = imcp_script.main(['file.nii', 'dest'])
 
         assert result == 0
         assert op.exists('dest.nii.gz')
-
+        checkImageHash('dest.nii.gz', ihash)
 
 
 def test_immv_badExt():
     with tempdir():
 
-        with open('file.nii.gz', 'wt') as f:
-            f.write('1')
-
+        ihash  = makeImage('file.nii.gz')
         result = immv_script.main(['file.nii', 'dest'])
 
         assert result == 0
         assert op.exists('dest.nii.gz')
+        checkImageHash('dest.nii.gz', ihash)
+