diff --git a/unit_tests/bet/bet_4d/4D_MNI152_T1_2mm.nii.gz b/unit_tests/bet/bet_4d/4D_MNI152_T1_2mm.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..f9dfc9e35225507db427f8be1f7a09c800d62894
--- /dev/null
+++ b/unit_tests/bet/bet_4d/4D_MNI152_T1_2mm.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:810c9c57a2e716ef6220489545db9085d50e25105e63b6e397b575be75d68299
+size 2813852
diff --git a/unit_tests/bet/bet_4d/feedsRun b/unit_tests/bet/bet_4d/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..6374c26de1a6388452a159d12a444d5bba82f252
--- /dev/null
+++ b/unit_tests/bet/bet_4d/feedsRun
@@ -0,0 +1,32 @@
+#!/usr/bin/env fslpython
+"""
+test bet with 4D input file
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_4d():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        '4D_MNI152_T1_2mm.nii.gz',
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-F'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the brain extracted input should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+    # the 4D option should create a mask, so make sure the file exists
+    assert os.path.isfile(join(OUTDIR, 'bet_test_mask.nii.gz')) == True
+
+test_bet_4d()
diff --git a/unit_tests/bet/bet_A/feedsRun b/unit_tests/bet/bet_A/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..9ab9188929d82591c0940c28ebfd56c81b210099
--- /dev/null
+++ b/unit_tests/bet/bet_A/feedsRun
@@ -0,0 +1,41 @@
+#!/usr/bin/env fslpython
+"""
+test bet with -A option for bet2 and betsurf
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_A():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-A'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the brain extracted input should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_inskull_mask.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_inskull_mesh.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_inskull_mesh.vtk')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_mesh.vtk')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_outskin_mask.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_outskin_mesh.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_outskin_mesh.vtk')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_outskull_mask.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_outskull_mesh.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_outskull_mesh.vtk')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_skull_mask.nii.gz')) == True
+
+test_bet_A()
diff --git a/unit_tests/bet/bet_A2/T1.nii.gz b/unit_tests/bet/bet_A2/T1.nii.gz
new file mode 100755
index 0000000000000000000000000000000000000000..30fc4c274d9c028240ea0c4b022f46db9912b3d1
--- /dev/null
+++ b/unit_tests/bet/bet_A2/T1.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:65e5894cd3cda17dfc1f851b6ad904af0781e538a7bb14c280f28b650520fd49
+size 1729604
diff --git a/unit_tests/bet/bet_A2/T2.nii.gz b/unit_tests/bet/bet_A2/T2.nii.gz
new file mode 100755
index 0000000000000000000000000000000000000000..d8155f9c13e2f5d33999d9ea152459ae6fd98237
--- /dev/null
+++ b/unit_tests/bet/bet_A2/T2.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:deb196bccf019cc822f5e3e7d2e3005532ebc4551c195c93c9601b3fdb8d71a7
+size 1764689
diff --git a/unit_tests/bet/bet_A2/feedsRun b/unit_tests/bet/bet_A2/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..6b31b99ce09cf57086d4f568beb2bc4aa8b90b5a
--- /dev/null
+++ b/unit_tests/bet/bet_A2/feedsRun
@@ -0,0 +1,43 @@
+#!/usr/bin/env fslpython
+"""
+test bet with -A2 option for bet2 and betsurf with a T2 added
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_A2():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        'T1.nii.gz',
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-A2',
+        'T2.nii.gz'
+
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the brain extracted input should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_inskull_mask.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_inskull_mesh.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_inskull_mesh.vtk')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_mesh.vtk')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_outskin_mask.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_outskin_mesh.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_outskin_mesh.vtk')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_outskull_mask.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_outskull_mesh.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_outskull_mesh.vtk')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_skull_mask.nii.gz')) == True
+
+test_bet_A2()
diff --git a/unit_tests/bet/bet_bias_and_neck_clean/feedsRun b/unit_tests/bet/bet_bias_and_neck_clean/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..7b0c6c6b7f1e3006f07b9990957eb592ded7e53e
--- /dev/null
+++ b/unit_tests/bet/bet_bias_and_neck_clean/feedsRun
@@ -0,0 +1,31 @@
+#!/usr/bin/env fslpython
+"""
+test bet with -B for bias field and neck clean
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_bias_and_neck_clean():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-B'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the brain extracted input should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_mask.nii.gz')) == True
+
+test_bet_bias_and_neck_clean()
diff --git a/unit_tests/bet/bet_custom_cog/feedsRun b/unit_tests/bet/bet_custom_cog/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..e4befee6d43c495f1759ce747c8ad5222ded81c2
--- /dev/null
+++ b/unit_tests/bet/bet_custom_cog/feedsRun
@@ -0,0 +1,33 @@
+#!/usr/bin/env fslpython
+"""
+test bet with custom cog value
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_custom_cog():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-c',
+        '90',
+        '113',
+        '112'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the brain extracted input should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+
+test_bet_custom_cog()
diff --git a/unit_tests/bet/bet_custom_f/feedsRun b/unit_tests/bet/bet_custom_f/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..f75d2c3168be4b0d99df385b9f6e70a31972f408
--- /dev/null
+++ b/unit_tests/bet/bet_custom_f/feedsRun
@@ -0,0 +1,50 @@
+#!/usr/bin/env fslpython
+"""
+test bet with custom -f value
+"""
+from subprocess import run, PIPE, CalledProcessError
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+def test_bet_custom_f():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-f',
+        '0.3'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the brain extracted input should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+
+def test_bet_negative_f():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-f',
+        '-0.3'
+    ]
+    try:
+        run_result = run(cmd, stdout=PIPE, check=True)
+        stdout_string = run_result.stdout.decode('utf-8')
+        assert False
+    except CalledProcessError as e:
+        # a negative f value is BAD. error code should be > 0 since bet2 should fail.
+        print("test_bet_negative_f correctly failed. This is good! negative -f values are not to be used with bet")
+        assert e.returncode != 0
+
+print("running test_bet_custom_f()")
+test_bet_custom_f()
+print("running test_bet_negative_f()")
+test_bet_negative_f()
diff --git a/unit_tests/bet/bet_custom_radius/feedsRun b/unit_tests/bet/bet_custom_radius/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..aac0e1e2b8284b09cf8b863d1d272cd88ed40222
--- /dev/null
+++ b/unit_tests/bet/bet_custom_radius/feedsRun
@@ -0,0 +1,31 @@
+#!/usr/bin/env fslpython
+"""
+test bet with custom radius option
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_custom_radius():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-r',
+        '50'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the brain extracted input should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+
+test_bet_custom_radius()
diff --git a/unit_tests/bet/bet_eye_clean/feedsRun b/unit_tests/bet/bet_eye_clean/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..2f47ea931a3ab39bee2eb650a43e69271f45e812
--- /dev/null
+++ b/unit_tests/bet/bet_eye_clean/feedsRun
@@ -0,0 +1,32 @@
+#!/usr/bin/env fslpython
+"""
+test bet with -S for eye cleanup
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_eye_clean():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-S'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the brain extracted input should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_mask.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_skull.nii.gz')) == True
+
+test_bet_eye_clean()
diff --git a/unit_tests/bet/bet_mask_only/feedsRun b/unit_tests/bet/bet_mask_only/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..b6faf73a03b6f4fe5c2f701be00ad9fce38755a4
--- /dev/null
+++ b/unit_tests/bet/bet_mask_only/feedsRun
@@ -0,0 +1,33 @@
+#!/usr/bin/env fslpython
+"""
+test bet with the -n and -m option combo
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_mask_only():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-n',
+        '-m'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the mask file should be made in this case
+    assert os.path.isfile(join(OUTDIR, 'bet_test_mask.nii.gz')) == True
+    # however, the brain extracted input should NOT exist (we only requested the mask)
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == False
+
+test_bet_mask_only()
diff --git a/unit_tests/bet/bet_negative_gradient/feedsRun b/unit_tests/bet/bet_negative_gradient/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..901ef0c6fce87f422caa31df813fe0efba90b8e6
--- /dev/null
+++ b/unit_tests/bet/bet_negative_gradient/feedsRun
@@ -0,0 +1,31 @@
+#!/usr/bin/env fslpython
+"""
+test bet with negative gradient option
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_negative_gradient():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-g',
+        '-0.5'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the brain extracted input should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+
+test_bet_negative_gradient()
diff --git a/unit_tests/bet/bet_no_images/feedsRun b/unit_tests/bet/bet_no_images/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..84283ed2577ed49e577e63dde883395f1e21a266
--- /dev/null
+++ b/unit_tests/bet/bet_no_images/feedsRun
@@ -0,0 +1,30 @@
+#!/usr/bin/env fslpython
+"""
+test bet with -n option (will produce no images)
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_no_images():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-n'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the brain extracted input should NOT exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == False
+
+test_bet_no_images()
diff --git a/unit_tests/bet/bet_positive_gradient/feedsRun b/unit_tests/bet/bet_positive_gradient/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..c57277b335576fdc6d890ac38b6276682a9cfab7
--- /dev/null
+++ b/unit_tests/bet/bet_positive_gradient/feedsRun
@@ -0,0 +1,31 @@
+#!/usr/bin/env fslpython
+"""
+test bet with poitive gradient option
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_positive_gradient():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-g',
+        '0.5'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the brain extracted input should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+
+test_bet_positive_gradient()
diff --git a/unit_tests/bet/bet_robust/feedsRun b/unit_tests/bet/bet_robust/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..bf073fbbc75ca2c4690aab9aabf2f5a735059374
--- /dev/null
+++ b/unit_tests/bet/bet_robust/feedsRun
@@ -0,0 +1,30 @@
+#!/usr/bin/env fslpython
+"""
+test bet with -R robust option
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_robust():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-R'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the brain extracted input should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+
+test_bet_robust()
diff --git a/unit_tests/bet/bet_simple/feedsRun b/unit_tests/bet/bet_simple/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..88c5dc1917511ea0c662f39e515d24420342ecea
--- /dev/null
+++ b/unit_tests/bet/bet_simple/feedsRun
@@ -0,0 +1,29 @@
+#!/usr/bin/env fslpython
+"""
+test bet with no options
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_simple():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz')
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the brain extracted input should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+
+test_bet_simple()
diff --git a/unit_tests/bet/bet_surface_mesh/feedsRun b/unit_tests/bet/bet_surface_mesh/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..22e8d2216a39da710dbf99e847a53f2f0ddac617
--- /dev/null
+++ b/unit_tests/bet/bet_surface_mesh/feedsRun
@@ -0,0 +1,31 @@
+#!/usr/bin/env fslpython
+"""
+test bet with the -e option to produce the surface mesh
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_surface_mesh():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-e'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the brain extracted input should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+    assert os.path.isfile(join(OUTDIR, 'bet_test_mesh.vtk')) == True
+
+test_bet_surface_mesh()
diff --git a/unit_tests/bet/bet_with_mask/feedsRun b/unit_tests/bet/bet_with_mask/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..d3a8b928d4b0578d52b643446199ec45afd03fa9
--- /dev/null
+++ b/unit_tests/bet/bet_with_mask/feedsRun
@@ -0,0 +1,32 @@
+#!/usr/bin/env fslpython
+"""
+test bet with the -m combo to produce a mask file and the betted file
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_with_mask():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-m'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the mask file should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test_mask.nii.gz')) == True
+    # the brain extracted input should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+
+test_bet_with_mask()
diff --git a/unit_tests/bet/bet_with_mask_and_skull/feedsRun b/unit_tests/bet/bet_with_mask_and_skull/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..4930bc68c570501d9e6b65196e6a3948b0b1f14e
--- /dev/null
+++ b/unit_tests/bet/bet_with_mask_and_skull/feedsRun
@@ -0,0 +1,35 @@
+#!/usr/bin/env fslpython
+"""
+test bet with the -m -s combo to produce a mask file and the betted file, and the skull file
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_with_mask_and_skull():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-m',
+        '-s'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the mask file should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test_mask.nii.gz')) == True
+    # the brain extracted input should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+    # the skull image should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test_skull.nii.gz')) == True
+
+test_bet_with_mask_and_skull()
diff --git a/unit_tests/bet/bet_with_overlay/feedsRun b/unit_tests/bet/bet_with_overlay/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..11c4267a1e274b9bcd954f07793c2a30a0968346
--- /dev/null
+++ b/unit_tests/bet/bet_with_overlay/feedsRun
@@ -0,0 +1,32 @@
+#!/usr/bin/env fslpython
+"""
+test bet with the -o option for overlay
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_with_overlay():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-o'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the overlay file should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test_overlay.nii.gz')) == True
+    # the betted file should have been made
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+
+test_bet_with_overlay()
diff --git a/unit_tests/bet/bet_with_skull/feedsRun b/unit_tests/bet/bet_with_skull/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..4e32e34415b16ee4b917457c5b71ee5d5ddf785b
--- /dev/null
+++ b/unit_tests/bet/bet_with_skull/feedsRun
@@ -0,0 +1,32 @@
+#!/usr/bin/env fslpython
+"""
+test bet with the -s option to produce the skull file
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_with_skull():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-s'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the brain extracted input should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+    # the skull image should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test_skull.nii.gz')) == True
+
+test_bet_with_skull()
diff --git a/unit_tests/bet/bet_with_thresholding/feedsRun b/unit_tests/bet/bet_with_thresholding/feedsRun
new file mode 100755
index 0000000000000000000000000000000000000000..265b02f30cfbc01ba25270c8f05698c63a0019d0
--- /dev/null
+++ b/unit_tests/bet/bet_with_thresholding/feedsRun
@@ -0,0 +1,33 @@
+#!/usr/bin/env fslpython
+"""
+test bet with the -t threshold option
+"""
+from subprocess import run, PIPE
+from os.path import join
+from tempfile import mkdtemp
+import os
+import sys
+
+OUTDIR = sys.argv[1]
+INDIR = sys.argv[2]
+FSLDIR = os.environ.get('FSLDIR')
+FSLBIN = join(FSLDIR, 'bin')
+
+
+def test_bet_with_mask_and_thresholding():
+    cmd = [
+        join(FSLBIN, 'bet'),
+        join(FSLDIR, 'data', 'standard', 'MNI152_T1_1mm.nii.gz'),
+        join(OUTDIR, 'bet_test.nii.gz'),
+        '-m',
+        '-t'
+    ]
+    run_result = run(cmd, stdout=PIPE, check=True)
+    stdout_string = run_result.stdout.decode('utf-8')
+    # check that the files were written to disk
+    # the mask file should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test_mask.nii.gz')) == True
+    # the brain extracted input should exist
+    assert os.path.isfile(join(OUTDIR, 'bet_test.nii.gz')) == True
+
+test_bet_with_mask_and_thresholding()