Skip to content

Commit

Permalink
These files appear to be new additions for a test suite related to t…
Browse files Browse the repository at this point in the history
…he `azure-cli-persistence` feature, which is designed to persist Azure CLI configuration across container restarts. The tests are written in Bash and use the `dev-container-features-test-lib` library for reporting test results.

The `scenarios.json` file defines four different test scenarios: one using Node.js, one using Zsh shell, one using Fish shell, and one using a root user. Each scenario specifies an image to use as the base container and lists the required features (including `azure-cli-persistence`).

The `test.sh` file is empty, but it's likely that it would import the test library and then run the tests for each scenario defined in `scenarios.json`. The other files (`with_node.sh`, `zsh_shell.sh`, `fish_shell.sh`, and `root_user.sh`) are specific test scripts for each scenario, which likely contain commands to check that the Azure CLI configuration is persisted across container restarts.

Overall, these files suggest that the `azure-cli-persistence` feature is designed to work with different shells (Node.js, Zsh, Fish, and root user) and that it can be tested using a set of automated tests.
  • Loading branch information
robinmordasiewicz committed Mar 25, 2024
1 parent 4c19a42 commit 653d55d
Show file tree
Hide file tree
Showing 8 changed files with 113 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ This repo contains my custom devcontainer features.
| [github-cli-persistence](./src/github-cli-persistence) | Avoid extra logins from the Github CLI by preserving the `~/.config/gh` folder across container instances. |
| [terraform-cli-persistence](./src/terraform-cli-persistence) | Avoid extra logins from the Terraform CLI by preserving the `~/.terraform.d` folder across container instances. |
| [aws-cli-persistence](./src/aws-cli-persistence) | Avoid extra logins from the AWS CLI by preserving the `~/.aws` folder across container instances. |
| [azure-cli-persistence](./src/azure-cli-persistence) | Avoid extra logins from the Azure CLI by preserving the `~/.azure` folder across container instances. |
| [gcloud-cli-persistence](./src/gcloud-cli-persistence) | Avoid extra logins from the Google Cloud CLI by preserving the `~/.config/gcloud` folder across container instances. |
| [lamdera](./src/lamdera) | Installs [Lamdera](https://dashboard.lamdera.app/), a type-safe full-stack web-app platform for Elm (v1.1.0 and later). |
| [mount-pnpm-store](./src/mount-pnpm-store) | Mounts the pnpm store to a volume to share between multiple devcontainers. |
Expand Down
26 changes: 26 additions & 0 deletions test/azure-cli-persistence/_default.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/bin/bash

set -e

# This script is the "default" test script for the azure-cli-persistence feature.
# It is not run as a scenario, but is run by other test scripts.

# Optional: Import test library
source dev-container-features-test-lib

# check that `azure --help` works
check "help" bash -c "azure help | grep 'usage'"

# check that `.azure` and `/dc/azure-cli` exist under the user (should be node)
check "~/.azure existence" bash -c "ls -la ~ | grep '.azure'"
check "/dc/azure-cli existence" bash -c "ls -la /dc | grep 'azure-cli'"

# check that the folders are owned by the user
# https://askubuntu.com/a/175060
echo "Checking ownership of ~/.azure and /dc/azure-cli (ensure it is owned by $USER)"

check "~/.azure owned by user" bash -c "test \"$(stat -c "%U" ~/.azure)\" = $USER"
check "/dc/azure-cli owned by user" bash -c "test \"$(stat -c "%U" /dc/azure-cli)\" = $USER"

# Report result
reportResults
7 changes: 7 additions & 0 deletions test/azure-cli-persistence/fish_shell.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash

set -e

# Run default test script (in same folder)
# See: https://github.com/devcontainers/features/blob/562305d37b97d47331d96306ffc2a0a3cce55e64/test/azure-cli/install_extensions_bookworm.sh
./_default.sh
9 changes: 9 additions & 0 deletions test/azure-cli-persistence/root_user.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash

set -e

source dev-container-features-test-lib

# Run default test script (in same folder)
# See: https://github.com/devcontainers/features/blob/562305d37b97d47331d96306ffc2a0a3cce55e64/test/azure-cli/install_extensions_bookworm.sh
./_default.sh
35 changes: 35 additions & 0 deletions test/azure-cli-persistence/scenarios.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"with_node": {
"image": "mcr.microsoft.com/devcontainers/javascript-node:1-18",
"features": {
"ghcr.io/devcontainers/features/azure-cli": {},
"azure-cli-persistence": {}
}
},
"zsh_shell": {
"image": "mcr.microsoft.com/devcontainers/base:debian",
"features": {
"ghcr.io/devcontainers/features/common-utils:2": {
"configureZshAsDefaultShell": true
},
"ghcr.io/devcontainers/features/azure-cli": {},
"azure-cli-persistence": {}
}
},
"fish_shell": {
"image": "mcr.microsoft.com/devcontainers/base:debian",
"features": {
"ghcr.io/meaningful-ooo/devcontainer-features/fish:1": {},
"ghcr.io/devcontainers/features/azure-cli": {},
"azure-cli-persistence": {}
}
},
"root_user": {
"image": "mcr.microsoft.com/devcontainers/base:debian",
"features": {
"ghcr.io/devcontainers/features/azure-cli": {},
"azure-cli-persistence": {}
},
"remoteUser": "root"
}
}
21 changes: 21 additions & 0 deletions test/azure-cli-persistence/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/bash

set -e

# Optional: Import test library
source dev-container-features-test-lib

# NOTE: azure is not installed inside the `test.sh` run
# see: test/github-cli-persistence/test.sh


# check that `~/.azure` and `/dc/azure-cli` exist`
check "~/.azure existence" bash -c "ls -la ~ | grep '.azure'"
check "/dc/azure-cli existence" bash -c "ls -la /dc | grep 'azure-cli'"

# check that `~/.azure` is a symlink
# https://unix.stackexchange.com/a/96910
check "~/.azure is a symlink" bash -c "test -L ~/.azure && test -d ~/.azure"

# Report result
reportResults
7 changes: 7 additions & 0 deletions test/azure-cli-persistence/with_node.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash

set -e

# Run default test script (in same folder)
# See: https://github.com/devcontainers/features/blob/562305d37b97d47331d96306ffc2a0a3cce55e64/test/azure-cli/install_extensions_bookworm.sh
./_default.sh
7 changes: 7 additions & 0 deletions test/azure-cli-persistence/zsh_shell.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash

set -e

# Run default test script (in same folder)
# See: https://github.com/devcontainers/features/blob/562305d37b97d47331d96306ffc2a0a3cce55e64/test/azure-cli/install_extensions_bookworm.sh
./_default.sh

0 comments on commit 653d55d

Please sign in to comment.