Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/scripts/test-remote-integration.sh
3520 views
1
#!/usr/bin/env bash
2
set -e
3
4
if [[ "$OSTYPE" == "darwin"* ]]; then
5
realpath() { [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"; }
6
ROOT=$(dirname $(dirname $(realpath "$0")))
7
else
8
ROOT=$(dirname $(dirname $(readlink -f $0)))
9
fi
10
11
VSCODEUSERDATADIR=`mktemp -d 2>/dev/null`
12
VSCODECRASHDIR=$ROOT/.build/crashes
13
VSCODELOGSDIR=$ROOT/.build/logs/integration-tests-remote
14
TESTRESOLVER_DATA_FOLDER=`mktemp -d 2>/dev/null`
15
16
cd $ROOT
17
18
if [[ "$1" == "" ]]; then
19
AUTHORITY=vscode-remote://test+test
20
EXT_PATH=$ROOT/extensions
21
# Load remote node
22
npm run gulp node
23
else
24
AUTHORITY=$1
25
EXT_PATH=$2
26
VSCODEUSERDATADIR=${3:-$VSCODEUSERDATADIR}
27
fi
28
29
export REMOTE_VSCODE=$AUTHORITY$EXT_PATH
30
31
# Figure out which Electron to use for running tests
32
if [ -z "$INTEGRATION_TEST_ELECTRON_PATH" ]
33
then
34
INTEGRATION_TEST_ELECTRON_PATH="./scripts/code.sh"
35
36
# No extra arguments when running out of sources
37
EXTRA_INTEGRATION_TEST_ARGUMENTS=""
38
39
echo "Running remote integration tests out of sources."
40
else
41
export VSCODE_CLI=1
42
export ELECTRON_ENABLE_LOGGING=1
43
44
# Running from a build, we need to enable the vscode-test-resolver extension
45
EXTRA_INTEGRATION_TEST_ARGUMENTS="--extensions-dir=$EXT_PATH --enable-proposed-api=vscode.vscode-test-resolver --enable-proposed-api=vscode.vscode-api-tests"
46
47
echo "Running remote integration tests with $INTEGRATION_TEST_ELECTRON_PATH as build."
48
fi
49
50
export TESTRESOLVER_DATA_FOLDER=$TESTRESOLVER_DATA_FOLDER
51
export TESTRESOLVER_LOGS_FOLDER=$VSCODELOGSDIR/server
52
53
# Figure out which remote server to use for running tests
54
if [ -z "$VSCODE_REMOTE_SERVER_PATH" ]
55
then
56
echo "Using remote server out of sources for integration tests"
57
else
58
echo "Using $VSCODE_REMOTE_SERVER_PATH as server path for integration tests"
59
export TESTRESOLVER_INSTALL_BUILTIN_EXTENSION='ms-vscode.vscode-smoketest-check'
60
fi
61
62
if [ -z "$INTEGRATION_TEST_APP_NAME" ]; then
63
kill_app() { true; }
64
else
65
kill_app() { killall $INTEGRATION_TEST_APP_NAME || true; }
66
fi
67
68
API_TESTS_EXTRA_ARGS="--disable-telemetry --disable-experiments --skip-welcome --skip-release-notes --crash-reporter-directory=$VSCODECRASHDIR --logsPath=$VSCODELOGSDIR --no-cached-data --disable-updates --use-inmemory-secretstorage --disable-workspace-trust --user-data-dir=$VSCODEUSERDATADIR"
69
70
echo "Storing crash reports into '$VSCODECRASHDIR'."
71
echo "Storing log files into '$VSCODELOGSDIR'."
72
73
74
# Tests in the extension host
75
76
echo
77
echo "### API tests (folder)"
78
echo
79
"$INTEGRATION_TEST_ELECTRON_PATH" --folder-uri=$REMOTE_VSCODE/vscode-api-tests/testWorkspace --extensionDevelopmentPath=$REMOTE_VSCODE/vscode-api-tests --extensionTestsPath=$REMOTE_VSCODE/vscode-api-tests/out/singlefolder-tests $API_TESTS_EXTRA_ARGS $EXTRA_INTEGRATION_TEST_ARGUMENTS
80
kill_app
81
82
echo
83
echo "### API tests (workspace)"
84
echo
85
"$INTEGRATION_TEST_ELECTRON_PATH" --file-uri=$REMOTE_VSCODE/vscode-api-tests/testworkspace.code-workspace --extensionDevelopmentPath=$REMOTE_VSCODE/vscode-api-tests --extensionTestsPath=$REMOTE_VSCODE/vscode-api-tests/out/workspace-tests $API_TESTS_EXTRA_ARGS $EXTRA_INTEGRATION_TEST_ARGUMENTS
86
kill_app
87
88
echo
89
echo "### TypeScript tests"
90
echo
91
"$INTEGRATION_TEST_ELECTRON_PATH" --folder-uri=$REMOTE_VSCODE/typescript-language-features/test-workspace --extensionDevelopmentPath=$REMOTE_VSCODE/typescript-language-features --extensionTestsPath=$REMOTE_VSCODE/typescript-language-features/out/test/unit $API_TESTS_EXTRA_ARGS $EXTRA_INTEGRATION_TEST_ARGUMENTS
92
kill_app
93
94
echo
95
echo "### Markdown tests"
96
echo
97
"$INTEGRATION_TEST_ELECTRON_PATH" --folder-uri=$REMOTE_VSCODE/markdown-language-features/test-workspace --extensionDevelopmentPath=$REMOTE_VSCODE/markdown-language-features --extensionTestsPath=$REMOTE_VSCODE/markdown-language-features/out/test $API_TESTS_EXTRA_ARGS $EXTRA_INTEGRATION_TEST_ARGUMENTS
98
kill_app
99
100
echo
101
echo "### Emmet tests"
102
echo
103
"$INTEGRATION_TEST_ELECTRON_PATH" --folder-uri=$REMOTE_VSCODE/emmet/test-workspace --extensionDevelopmentPath=$REMOTE_VSCODE/emmet --extensionTestsPath=$REMOTE_VSCODE/emmet/out/test $API_TESTS_EXTRA_ARGS $EXTRA_INTEGRATION_TEST_ARGUMENTS
104
kill_app
105
106
echo
107
echo "### Git tests"
108
echo
109
"$INTEGRATION_TEST_ELECTRON_PATH" --folder-uri=$AUTHORITY$(mktemp -d 2>/dev/null) --extensionDevelopmentPath=$REMOTE_VSCODE/git --extensionTestsPath=$REMOTE_VSCODE/git/out/test $API_TESTS_EXTRA_ARGS $EXTRA_INTEGRATION_TEST_ARGUMENTS
110
kill_app
111
112
echo
113
echo "### Ipynb tests"
114
echo
115
"$INTEGRATION_TEST_ELECTRON_PATH" --folder-uri=$AUTHORITY$(mktemp -d 2>/dev/null) --extensionDevelopmentPath=$REMOTE_VSCODE/ipynb --extensionTestsPath=$REMOTE_VSCODE/ipynb/out/test $API_TESTS_EXTRA_ARGS $EXTRA_INTEGRATION_TEST_ARGUMENTS
116
kill_app
117
118
echo
119
echo "### Configuration editing tests"
120
echo
121
"$INTEGRATION_TEST_ELECTRON_PATH" --folder-uri=$AUTHORITY$(mktemp -d 2>/dev/null) --extensionDevelopmentPath=$REMOTE_VSCODE/configuration-editing --extensionTestsPath=$REMOTE_VSCODE/configuration-editing/out/test $API_TESTS_EXTRA_ARGS $EXTRA_INTEGRATION_TEST_ARGUMENTS
122
kill_app
123
124
# Cleanup
125
126
if [[ "$3" == "" ]]; then
127
rm -rf $VSCODEUSERDATADIR
128
fi
129
130
rm -rf $TESTRESOLVER_DATA_FOLDER
131
132