From 930deace92808e3485b7e1388a583d8471ec3e91 Mon Sep 17 00:00:00 2001 From: Chuck Lantz Date: Tue, 20 Aug 2019 13:06:26 -0700 Subject: [PATCH] Test script --- containers/cpp/.vscode/settings.json | 3 +- containers/cpp/test-project/CMakeLists.txt | 11 ++++ containers/cpp/test-project/test.sh | 61 ++++++++++++++++++++++ 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 containers/cpp/test-project/CMakeLists.txt create mode 100644 containers/cpp/test-project/test.sh diff --git a/containers/cpp/.vscode/settings.json b/containers/cpp/.vscode/settings.json index 0cba2e6834..ca1396a776 100644 --- a/containers/cpp/.vscode/settings.json +++ b/containers/cpp/.vscode/settings.json @@ -1,5 +1,6 @@ { "files.associations": { "iostream": "cpp" - } + }, + "cmake.sourceDirectory": "${workspaceRoot}/test-project" } \ No newline at end of file diff --git a/containers/cpp/test-project/CMakeLists.txt b/containers/cpp/test-project/CMakeLists.txt new file mode 100644 index 0000000000..e3641e1138 --- /dev/null +++ b/containers/cpp/test-project/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.0.0) +project(test-project VERSION 0.1.0) + +include(CTest) +enable_testing() + +add_executable(test-project main.cpp) + +set(CPACK_PROJECT_NAME ${PROJECT_NAME}) +set(CPACK_PROJECT_VERSION ${PROJECT_VERSION}) +include(CPack) diff --git a/containers/cpp/test-project/test.sh b/containers/cpp/test-project/test.sh new file mode 100644 index 0000000000..537e38ffd1 --- /dev/null +++ b/containers/cpp/test-project/test.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash +cd $(dirname "$0") + +if [ -z $HOME ]; then + HOME="/root" +fi + +FAILED=() + +check() { + LABEL=$1 + shift + echo -e "\n๐Ÿงช Testing $LABEL: $@" + if $@; then + echo "๐Ÿ† Passed!" + else + echo "๐Ÿ’ฅ $LABEL check failed." + FAILED+=("$LABEL") + fi +} + +checkMultiple() { + PASSED=0 + LABEL="$1" + shift; MINIMUMPASSED=$1 + shift; EXPRESSION="$1" + while [ "$EXPRESSION" != "" ]; do + if $EXPRESSION; then ((PASSED++)); fi + shift; EXPRESSION=$1 + done + check "$LABEL" [ $PASSED -ge $MINIMUMPASSED ] +} + +checkExtension() { + checkMultiple "$1" 1 "[ -d ""$HOME/.vscode-server/extensions/$1*"" ]" "[ -d ""$HOME/.vscode-server-insiders/extensions/$1*"" ]" "[ -d ""$HOME/.vscode-test-server/extensions/$1*"" ]" +} + +# Actual tests +checkMultiple "vscode-server" 1 "[ -d ""$HOME/.vscode-server/bin"" ]" "[ -d ""$HOME/.vscode-server-insiders/bin"" ]" "[ -d ""$HOME/.vscode-test-server/bin"" ]" +checkExtension "ms-vscode.cpptools" +check "non-root-user" "id vscode" +check "/home/vscode" [ -d "/home/vscode" ] +check "sudo" sudo -u vscode echo "sudo works." +check "git" git --version +check "command-line-tools" which top ip lsb_release g++ gcc cmake cppcheck valgrind +check "g++" g++ -g main.cpp -o main.out +rm main.out +mkdir -p build +cd build +check "cmake" cmake .. +cd .. +rm -rf build + +# Report result +if [ ${#FAILED[@]} -ne 0 ]; then + echo -e "\n๐Ÿ’ฅ Failed tests: ${FAILED[@]}" + exit 1 +else + echo -e "\n๐Ÿ’ฏ All passed!" + exit 0 +fi