diff --git a/ci/scripts/test.sh b/ci/scripts/test.sh
index d0a1f9de8ad6d2fc5667207a9ed3810a38e89c84..e6e0c419cecf8ccf6c4376957b013157f0c41273 100755
--- a/ci/scripts/test.sh
+++ b/ci/scripts/test.sh
@@ -136,6 +136,7 @@ if [ "$RUN_TESTS" = true ]; then
     hysop_test "operator/tests/test_directional_diffusion.py"
     hysop_test "operator/tests/test_directional_stretching.py"
     hysop_test "operator/tests/test_custom_symbolic.py"
+    hysop_test "operator/tests/test_custom.py"
     hysop_test "operator/tests/test_spectral_derivative.py"
     hysop_test "operator/tests/test_spectral_curl.py"
     hysop_test "operator/tests/test_diffusion.py"
diff --git a/hysop/core/tests/test_checkpoint.sh b/hysop/core/tests/test_checkpoint.sh
index 659ed72cdf1c7754d06f9cdad53cba10bcec2630..c1822be16fddcfb0bc16803e0d883f48c37ed8f0 100755
--- a/hysop/core/tests/test_checkpoint.sh
+++ b/hysop/core/tests/test_checkpoint.sh
@@ -44,8 +44,8 @@ if [[ ! -f "${EXAMPLE_FILE}" ]]; then
 fi
 
 echo ' Running simulations...'
-${PYTHON_EXECUTABLE} "${EXAMPLE_FILE}" ${COMMON_OPTIONS} -S "${TEST_DIR}/checkpoint0.tar" --dump-dir "${TEST_DIR}/run0" --checkpoint-dump-time 0.05 --checkpoint-dump-freq 0
-${PYTHON_EXECUTABLE} "${EXAMPLE_FILE}" ${COMMON_OPTIONS} -S "${TEST_DIR}/checkpoint1.tar" --dump-dir "${TEST_DIR}/run1" --checkpoint-dump-time 0.05 --checkpoint-dump-freq 0
+${MPIRUN_EXECUTABLE} ${MPIRUN_TASKS_OPTION} 1  ${PYTHON_EXECUTABLE} "${EXAMPLE_FILE}" ${COMMON_OPTIONS} -S "${TEST_DIR}/checkpoint0.tar" --dump-dir "${TEST_DIR}/run0" --checkpoint-dump-time 0.05 --checkpoint-dump-freq 0
+${MPIRUN_EXECUTABLE} ${MPIRUN_TASKS_OPTION} 1  ${PYTHON_EXECUTABLE} "${EXAMPLE_FILE}" ${COMMON_OPTIONS} -S "${TEST_DIR}/checkpoint1.tar" --dump-dir "${TEST_DIR}/run1" --checkpoint-dump-time 0.05 --checkpoint-dump-freq 0
 
 echo ' Comparing solutions...'
 echo "  >debug dumps match"
@@ -58,8 +58,8 @@ done
 
 echo
 echo ' Running simulations from checkpoints...'
-${PYTHON_EXECUTABLE} "${EXAMPLE_FILE}" ${COMMON_OPTIONS} -L "${TEST_DIR}/checkpoint0.tar" --dump-dir "${TEST_DIR}/run2"
-${PYTHON_EXECUTABLE} "${EXAMPLE_FILE}" ${COMMON_OPTIONS} -L "${TEST_DIR}/checkpoint1.tar" --dump-dir "${TEST_DIR}/run3"
+${MPIRUN_EXECUTABLE} ${MPIRUN_TASKS_OPTION} 1  ${PYTHON_EXECUTABLE} "${EXAMPLE_FILE}" ${COMMON_OPTIONS} -L "${TEST_DIR}/checkpoint0.tar" --dump-dir "${TEST_DIR}/run2"
+${MPIRUN_EXECUTABLE} ${MPIRUN_TASKS_OPTION} 1  ${PYTHON_EXECUTABLE} "${EXAMPLE_FILE}" ${COMMON_OPTIONS} -L "${TEST_DIR}/checkpoint1.tar" --dump-dir "${TEST_DIR}/run3"
 
 echo ' Comparing solutions...'
 compare_files "${TEST_DIR}/run2/dump/run.txt" "${TEST_DIR}/run3/dump/run.txt"
diff --git a/hysop/operator/tests/test_custom.py b/hysop/operator/tests/test_custom.py
index c1a93cd2a2fe0668cee4d3bab602a7ef9bf5fde4..c357d335a5e94f35708f317a0053712e0e08e68e 100644
--- a/hysop/operator/tests/test_custom.py
+++ b/hysop/operator/tests/test_custom.py
@@ -46,10 +46,7 @@ class TestCustom(object):
 
     @staticmethod
     def __analytic_python(F):
-        (x, y, z) = F.compute_mesh_coords
-        F.data[0][...] = (x**2)*npw.sin(y)*npw.exp(z)
-        for _ in range(1, 6):
-            F.data[0][...] += (x**2)*npw.sin(y)*npw.exp(z*_)
+        TestCustom.__analytic_init(F.data[0], F.compute_mesh_coords, 0)
 
     __analytic_opencl = """
     int3 i_xyz = get_Fi_xyz(i);
@@ -163,6 +160,12 @@ class TestCustom(object):
             msg = 'Test failed for {} on component {} for implementation {}.'.format(iname, i, impl)
             raise RuntimeError(msg)
 
+    def test(self):
+        self._test(3, HYSOP_REAL)
+
+    def perform_tests(self):
+        self.test()
+
 
 if __name__ == '__main__':
     TestCustom.setup_class(enable_extra_tests=False,