Skip to content

Commit 732443d

Browse files
committed
Add azure-cli-persistence tests
1 parent cb0b64e commit 732443d

File tree

9 files changed

+146
-14
lines changed

9 files changed

+146
-14
lines changed

.github/workflows/test.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
strategy:
3434
matrix:
3535
features:
36-
- dev-tunnels
36+
- azure-cli-persistence
3737
- shell-history
3838
steps:
3939
- uses: actions/checkout@v4

src/azure-cli-persistence/install.sh

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,32 @@
11
#!/bin/sh
22

3-
LIFECYCLE_SCRIPTS_DIR="/usr/local/share/stuartleeks-devcontainer-features/azure-cli-persistence/scripts"
3+
FEATURE_DIR="/usr/local/share/stuartleeks-devcontainer-features/azure-cli-persistence"
4+
LIFECYCLE_SCRIPTS_DIR="$FEATURE_DIR/scripts"
5+
LOG_FILE="$FEATURE_DIR/log.txt"
46

57
set -e
68

7-
echo "Activating feature 'azure-cli-persistence'"
8-
echo "User: ${_REMOTE_USER} User home: ${_REMOTE_USER_HOME}"
9+
mkdir -p "${FEATURE_DIR}"
910

11+
echo "" > "$LOG_FILE"
12+
log() {
13+
echo "$1"
14+
echo "$1" >> "$LOG_FILE"
15+
}
16+
17+
log "Activating feature 'azure-cli-persistence'"
18+
log "User: ${_REMOTE_USER} User home: ${_REMOTE_USER_HOME}"
19+
20+
got_old_azure_folder=false
1021
if [ -e "$_REMOTE_USER_HOME/.azure" ]; then
11-
echo "Moving existing .azure folder to .azure-old"
22+
log "Moving existing .azure folder to .azure-old"
1223
mv "$_REMOTE_USER_HOME/.azure" "$_REMOTE_USER_HOME/.azure-old"
24+
got_old_azure_folder=true
1325
fi
1426

1527
ln -s /dc/azure/ "$_REMOTE_USER_HOME/.azure"
1628
chown -R "${_REMOTE_USER}:${_REMOTE_USER}" "$_REMOTE_USER_HOME/.azure"
1729

18-
# Set Lifecycle scripts
1930
if [ -f oncreate.sh ]; then
2031
mkdir -p "${LIFECYCLE_SCRIPTS_DIR}"
2132
cp oncreate.sh "${LIFECYCLE_SCRIPTS_DIR}/oncreate.sh"

src/azure-cli-persistence/oncreate.sh

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,22 @@
22

33
set -e
44

5+
FEATURE_DIR="/usr/local/share/stuartleeks-devcontainer-features/azure-cli-persistence"
6+
LOG_FILE="$FEATURE_DIR/log.txt"
7+
8+
log() {
9+
echo "$1"
10+
echo "$1" >> "$LOG_FILE"
11+
}
12+
13+
if command -v sudo > /dev/null; then
14+
sudo chown -R "$(id -u):$(id -g)" "$LOG_FILE"
15+
else
16+
chown -R "$(id -u):$(id -g)" "$LOG_FILE"
17+
fi
18+
19+
log "In OnCreate script"
20+
521
fix_permissions() {
622
local dir
723
dir="${1}"
@@ -16,3 +32,63 @@ fix_permissions() {
1632
}
1733

1834
fix_permissions "/dc/azure"
35+
36+
# Fix up the cliextensions folder in case the user had an old .azure folder
37+
# that had extensions installed in it (e.g. using the azure-cli feature and specifying extensions to install)
38+
39+
if [ -d "$HOME/.azure-old" ]; then
40+
got_old_azure_folder=true
41+
else
42+
got_old_azure_folder=false
43+
fi
44+
45+
46+
old_cliextensions_folder="$HOME/.azure-old/cliextensions"
47+
new_cliextensions_folder="$HOME/.azure/cliextensions"
48+
new_cliextensions_folder_parent="$HOME/.azure"
49+
50+
if [ "$got_old_azure_folder" = true ]; then
51+
if [ -d "$old_cliextensions_folder" ]; then
52+
log "cliextensions folder found in old .azure folder"
53+
if [ -d "$new_cliextensions_folder" ]; then
54+
if [ -L "$new_cliextensions_folder" ]; then
55+
symlink_target=$(readlink "$new_cliextensions_folder")
56+
if [ "$symlink_target" = "$old_cliextensions_folder" ]; then
57+
log "cliextensions folder ('$new_cliextensions_folder') already symlinked to '$old_cliextensions_folder' - no action needed"
58+
else
59+
log "cliextensions folder ('$new_cliextensions_folder') is a symlink, but points to a different location ('$symlink_target')"
60+
exit 1
61+
fi
62+
else
63+
log "cliextensions folder ('$new_cliextensions_folder') already exists in but is not a symlink"
64+
exit 1
65+
fi
66+
else
67+
log "cliextensions folder ('$new_cliextensions_folder') does not exist - creating symlink to '$old_cliextensions_folder'"
68+
# log "-----------------------"
69+
# sudo ls -al "/dc"
70+
# log "-----------------------"
71+
# ls -al "$HOME"
72+
# log "-----------------------"
73+
# ls -al "$new_cliextensions_folder_parent"
74+
# log "-----------------------"
75+
# ls -al "$new_cliextensions_folder_parent/"
76+
# log "-----------------------"
77+
# # log "ls -al $new_cliextensions_folder_parent"
78+
# # ls -al "$new_cliextensions_folder_parent" >> "$LOG_FILE"
79+
if command -v sudo > /dev/null; then
80+
sudo ln -s "$old_cliextensions_folder" "$new_cliextensions_folder_parent"
81+
else
82+
ln -s "$old_cliextensions_folder" "$new_cliextensions_folder_parent"
83+
fi
84+
fi
85+
fi
86+
else
87+
if [ -L "$new_cliextensions_folder" ]; then
88+
symlink_target=$(readlink "$new_cliextensions_folder")
89+
if [ "$symlink_target" = "$old_cliextensions_folder" ]; then
90+
log "cliextensions folder ('$new_cliextensions_folder') is a symlink to '$old_cliextensions_folder' - removing symlink"
91+
rm "$new_cliextensions_folder"
92+
fi
93+
fi
94+
fi

test-project/.devcontainer/devcontainer.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
"remoteUser": "vscode",
1212
"features": {
1313
"ghcr.io/devcontainers-extra/features/fish-apt-get": {},
14+
"ghcr.io/devcontainers/features/azure-cli:1": {
15+
"extensions": "containerapp,ssh"
16+
},
1417
"./src/shell-history": {},
1518
"./src/azure-cli-persistence": {}
1619
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
# Optional: Import test library bundled with the devcontainer CLI
6+
source dev-container-features-test-lib
7+
8+
# Feature-specific tests
9+
check "cache dir permission" bash -c "test -w /dc/azure"
10+
check "check symlink" bash -c 'test $(readlink "$HOME/.azure") == "/dc/azure/"'
11+
12+
# Report result
13+
reportResults
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
source _default.sh
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"with_extensions": {
3+
"image": "mcr.microsoft.com/devcontainers/base:debian",
4+
"features": {
5+
"ghcr.io/devcontainers/features/azure-cli:1": {
6+
"extensions": "containerapp,ssh"
7+
},
8+
"azure-cli-persistence": {}
9+
}
10+
},
11+
"root_user": {
12+
"image": "mcr.microsoft.com/devcontainers/base:debian",
13+
"features": {
14+
"ghcr.io/devcontainers/features/azure-cli:1": {},
15+
"azure-cli-persistence": {}
16+
},
17+
"remoteUser": "root"
18+
}
19+
}

test/azure-cli-persistence/test.sh

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,4 @@
22

33
set -e
44

5-
# Optional: Import test library bundled with the devcontainer CLI
6-
source dev-container-features-test-lib
7-
8-
# Feature-specific tests
9-
check "cache dir permission" bash -c "test -w /dc/azure"
10-
11-
# Report result
12-
reportResults
5+
source _default.sh
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
source dev-container-features-test-lib
6+
7+
check "cache dir permission" bash -c "test -w /dc/azure"
8+
check "check symlink" bash -c 'test $(readlink "$HOME/.azure") == "/dc/azure/"'
9+
10+
check "check cliextensions" bash -c 'test $(az extension list --output tsv --query "length(@)") -eq 2'
11+
12+
reportResults

0 commit comments

Comments
 (0)