diff --git a/test-scripts/run-tests-on-robot.sh b/test-scripts/run-tests-on-robot.sh
new file mode 100755
index 0000000..96d10c0
--- /dev/null
+++ b/test-scripts/run-tests-on-robot.sh
@@ -0,0 +1,158 @@
+#!/usr/bin/env bash
+#*----------------------------------------------------------------------------*#
+#* Copyright (c) 2014-2019 FIRST. All Rights Reserved.                        *#
+#* Open Source Software - may be modified and shared by FRC teams. The code   *#
+#* must be accompanied by the FIRST BSD license file in the root directory of *#
+#* the project.                                                               *#
+#*----------------------------------------------------------------------------*#
+
+# This file is intended to be run in the DEFAULT_TEST_DIR on the roboRIO.
+# Do not attempt to run this file on your local system.
+# There is one file (delploy-and-run-test-on-robot.sh) that is designed to
+# deploy this file allong with the compiled tests for you.
+
+# Configurable variables
+source config.sh
+
+DEFAULT_TEST_DIR=${DEFAULT_DESTINATION_DIR}
+DEFAULT_PATH_TO_JRE=/usr/local/frc/JRE/bin/java
+
+usage="$(basename "$0") [-h] (java|cpp) [-d test_dir] [-A] [arg] [arg]...
+A script designed to run the integration tests.
+This script should only be run on the roborio.
+Where:
+    -h    Show this help text
+    -d    The directory where the tests have been placed.
+          This is done to prevent overwriting an already running program.
+          This scrip will automatically move the test into the ${DEFAULT_TEST_DIR}
+          directory.
+          Default: Assumes the test is in the same directory as this scrip.
+    -A    Do not use the default arguments for the given language.
+    arg   The arguments to be passed to test."
+
+
+# Are you trying to run this program on a platform other than the roboRIO?
+if [[ ! -e "${DEFAULT_TEST_DIR}" ]]; then
+    printf "Failed to find %s\nAre you trying to run this file on your local computer?\n" "${DEFAULT_TEST_DIR}"
+    printf "This script should only be run on the roboRIO.\n\n"
+    echo "$usage"
+    exit 1
+fi
+
+LANGUAGE=none
+TEST_FILE=none
+TEST_DIR="$DEFAULT_TEST_DIR"
+# Begin searching for options from the second paramater on
+PARAM_ARGS=${@:2}
+# Where the test arguments start
+TEST_RUN_ARGS=${@:2}
+RUN_WITH_DEFAULT_ARGS=true
+DEFAULT_ARGS=""
+
+# Determine the language that we are attempting to run
+if [[ "$1" = java ]]; then
+    LANGUAGE=$1
+    TEST_FILE=$DEFAULT_JAVA_TEST_NAME
+    DEFAULT_ARGS=$DEFAULT_JAVA_TEST_ARGS
+elif [[ "$1" = cpp ]]; then
+    LANGUAGE=$1
+    TEST_FILE=$DEFAULT_CPP_TEST_NAME
+    DEFAULT_ARGS=$DEFAULT_CPP_TEST_ARGS
+elif [[ "$1" = "-h" ]]; then
+    #If the first argument is the help option
+    #Allow it to be searhced for in getopts
+    PARAM_ARGS=${@}
+else
+    printf "Invalid language selection: %s\n\n" "$1" >&2
+    echo "$usage" >&2
+    exit 1
+fi
+
+PARAM_COUNTER=1
+printf "Param Args ${PARAM_ARGS}\n"
+
+# Check for optional paramaters
+while  getopts ':hmd:A' option $PARAM_ARGS ; do
+    case "$option" in
+    h)
+        # Print the help message
+        printf "Usage:\n"
+        echo "$usage"
+        exit
+        ;;
+    A)
+        # Remove the default arguments
+        RUN_WITH_DEFAULT_ARGS=false
+        PARAM_COUNTER=$[$PARAM_COUNTER +1]
+        ;;
+    d)
+        TEST_DIR=$OPTARG
+        # Since we are selecting the directory the run args start from the 5th argument
+        PARAM_COUNTER=$[$PARAM_COUNTER +2]
+        ;;
+    ?)
+        # When an unknown param is found then we are done so break
+        break
+        ;;
+    esac
+done
+
+TEST_RUN_ARGS=${@:$[$PARAM_COUNTER +1]}
+
+if [[ "$RUN_WITH_DEFAULT_ARGS" == true ]]; then
+    TEST_RUN_ARGS="${DEFAULT_ARGS} ${TEST_RUN_ARGS}"
+fi
+
+# Make sure at least two paramaters are passed or four if running with -d option
+if [[ $# -lt $PARAM_COUNTER ]]; then
+    printf "Invalid arg count. Should be %s, was %s.\n" "${PARAM_COUNTER}" "$#"
+    echo "$usage"
+    exit 1
+fi
+
+# Make sure the webserver is disabled to save memory
+/usr/local/natinst/etc/init.d/systemWebServer stop
+
+# Kill all running robot programs
+killall java FRCUserProgram
+
+# If we are running with the -d argument move the test to the DEFAULT_TEST_DIR
+if [[ ! -e "${TEST_DIR}/${TEST_FILE}" ]]; then
+    printf "Failed to find %s.\nDid you copy the test file correctly?\n" "${TEST_DIR}/${TEST_FILE}"
+    echo "$usage"
+    exit 1
+elif [[ $TEST_DIR != "$DEFAULT_TEST_DIR" ]]; then
+    mv "${TEST_DIR}/${TEST_FILE}" "${DEFAULT_TEST_DIR}"
+fi
+
+# Make sure the excecutable file has permission to run
+
+# Get the serial number and FPGADeviceCode for this rio
+export serialnum=`/sbin/fw_printenv -n serial#`
+export eval `/sbin/fw_printenv DeviceCode FPGADeviceCode DeviceDesc TargetClass`
+
+# Store the run command for the language
+RUN_COMMAND=none
+if [[ ${LANGUAGE} = java ]]; then
+    chmod a+x ${DEFAULT_JAVA_TEST_NAME}
+    RUN_COMMAND="env LD_LIBRARY_PATH=/opt/GenICam_v3_0_NI/bin/Linux32_ARM/:/usr/local/frc/lib ${DEFAULT_PATH_TO_JRE} -ea -jar ${DEFAULT_JAVA_TEST_NAME} ${TEST_RUN_ARGS}"
+elif [[ ${LANGUAGE} = cpp ]]; then
+    chmod a+x ${DEFAULT_CPP_TEST_NAME}
+    RUN_COMMAND="./${DEFAULT_CPP_TEST_NAME} ${TEST_RUN_ARGS}"
+fi
+
+printf "Running: %s\n\n" "${RUN_COMMAND}"
+COREDUMP_DIR=${DEFAULT_DESTINATION_TEST_RESULTS_DIR}/coredump
+mkdir -p ${COREDUMP_DIR}
+CORE_LOCATION=${COREDUMP_DIR}/core
+echo ${CORE_LOCATION} > /proc/sys/kernel/core_pattern
+ulimit -c unlimited
+eval ${RUN_COMMAND}
+if [[ $? -gt 127 && -e ${CORE_LOCATION} ]]; then
+    mv ${CORE_LOCATION} ${COREDUMP_DIR}/core.${LANGUAGE}
+    if [[ ${LANGUAGE} = java ]]; then
+        cp -p ${DEFAULT_JAVA_TEST_NAME} ${COREDUMP_DIR}/
+    elif [[ ${LANGUAGE} = cpp ]]; then
+        cp -p ${DEFAULT_CPP_TEST_NAME} ${COREDUMP_DIR}/
+    fi
+fi
