Skip to content

Commit a4e33dc

Browse files
tests: add tests for vscode-cache-extensions
Signed-off-by: Georg Lauterbach <44545919+georglauterbach@users.noreply.github.com>
1 parent eb9fe1e commit a4e33dc

3 files changed

Lines changed: 53 additions & 4 deletions

File tree

src/vscode-cache-extensions/devcontainer-feature.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
"version": "0.2.2",
44
"name": "VS Code | Cache Extensions",
55
"documentationURL": "https://github.com/georglauterbach/dev-container-features/tree/main/src/vscode-cache-extensions",
6-
"description": "This Fearure prevents superfluous (re-)installations of VS Code extensions upon container restarts.",
6+
"description": "This Feature prevents superfluous (re-)installations of VS Code extensions upon container restarts.",
77
"mounts": [
88
{
99
"source": "dev_containers.features.ghcr_io.georglauterbach.vscode_cache_extensions.${devcontainerId}",
10-
"target": "/usr/local/share/dev_containers/features/ghcr_io/georglauterbach/vscode_cache_extensions/data",
10+
"target": "/usr/local/share/dev_containers/features/ghcr_io/georglauterbach/vscode_cache_extensions",
1111
"type": "volume"
1212
}
1313
]

src/vscode-cache-extensions/install.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
set -e -u
66

77
# This is where the volume will be mounted to
8-
readonly CACHE_MOUNT_POINT='/usr/local/share/dev_containers/features/ghcr_io/georglauterbach/vscode_cache_extensions/data'
8+
readonly CACHE_MOUNT_POINT=/usr/local/share/dev_containers/features/ghcr_io/georglauterbach/vscode_cache_extensions/data
99

1010
if [ -z "${_REMOTE_USER_HOME:-}" ]; then
1111
exit 0
Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,52 @@
11
#! /bin/sh
22

3-
exit 1
3+
FAILED=false
4+
5+
# shellcheck disable=SC2329
6+
assert_failure() {
7+
printf ' ├ %-60s ' "${1:?Name of the test required}"
8+
shift 1
9+
"${@}" >/dev/null && { printf '❌ \e[31mFAILED\e[0m\n' ; FAILED=true ; return 0 ; }
10+
printf '✅ \e[32mPASSED\e[0m\n'
11+
}
12+
13+
# shellcheck disable=SC2329
14+
assert_success() {
15+
printf ' ├ %-60s ' "${1:?Name of the test required}"
16+
shift 1
17+
"${@}" >/dev/null && { printf '✅ \e[32mPASSED\e[0m\n' ; return 0 ; }
18+
printf '❌ \e[31mFAILED\e[0m\n'
19+
FAILED=true
20+
}
21+
22+
report() {
23+
printf ""
24+
if ${FAILED:-true}; then
25+
printf '❌ \e[31mFAILED\e[0m\n'
26+
exit 1
27+
else
28+
printf "✅ \e[32mPASSED\e[0m\n"
29+
exit 0
30+
fi
31+
}
32+
33+
readonly CACHE_MOUNT_POINT=/usr/local/share/dev_containers/features/ghcr_io/georglauterbach/vscode_cache_extensions/data
34+
35+
assert_success 'mount point exists' test -d "${CACHE_MOUNT_POINT}"
36+
37+
assert_success 'stable: symlink target directory exists' test -d "${CACHE_MOUNT_POINT}/stable"
38+
assert_success 'stable: symlink source directory parent exists' test -d "${HOME}/.vscode-server"
39+
assert_success 'stable: symlink source directory is a symbolic link' \
40+
test -L "${HOME}/.vscode-server/extensions"
41+
assert_success 'stable: symbolic link resolves to correct location' \
42+
test "$(readlink "${HOME}/.vscode-server/extensions")" = "${CACHE_MOUNT_POINT}/stable"
43+
44+
45+
assert_success 'insiders: symlink target directory exists' test -d "${CACHE_MOUNT_POINT}/insiders"
46+
assert_success 'insiders: symlink source directory parent exists' test -d "${HOME}/.vscode-server-insiders"
47+
assert_success 'insiders: symlink source directory is a symbolic link' \
48+
test -L "${HOME}/.vscode-server-insiders/extensions"
49+
assert_success 'insiders: symbolic link resolves to correct location' \
50+
test "$(readlink "${HOME}/.vscode-server-insiders/extensions")" = "${CACHE_MOUNT_POINT}/insiders"
51+
52+
report

0 commit comments

Comments
 (0)