aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/common-utils/devcontainer-feature.json2
-rw-r--r--src/common-utils/main.sh3
-rw-r--r--test/common-utils/devcontainer-custom-home.sh13
-rw-r--r--test/common-utils/devcontainer-custom-home/Dockerfile4
-rw-r--r--test/common-utils/devcontainer-custom-user-default-home.sh13
-rw-r--r--test/common-utils/scenarios.json16
6 files changed, 50 insertions, 1 deletions
diff --git a/src/common-utils/devcontainer-feature.json b/src/common-utils/devcontainer-feature.json
index 869812b..181e545 100644
--- a/src/common-utils/devcontainer-feature.json
+++ b/src/common-utils/devcontainer-feature.json
@@ -1,6 +1,6 @@
{
"id": "common-utils",
- "version": "2.1.3",
+ "version": "2.2.0",
"name": "Common Utilities",
"documentationURL": "https://github.com/devcontainers/features/tree/main/src/common-utils",
"description": "Installs a set of common command line utilities, Oh My Zsh!, and sets up a non-root user.",
diff --git a/src/common-utils/main.sh b/src/common-utils/main.sh
index 4a048db..7142246 100644
--- a/src/common-utils/main.sh
+++ b/src/common-utils/main.sh
@@ -407,6 +407,9 @@ fi
if [ "${USERNAME}" = "root" ]; then
user_home="/root"
+# Check if user already has a home directory other than /home/${USERNAME}
+elif [ "/home/${USERNAME}" != $( getent passwd $USERNAME | cut -d: -f6 ) ]; then
+ user_home=$( getent passwd $USERNAME | cut -d: -f6 )
else
user_home="/home/${USERNAME}"
if [ ! -d "${user_home}" ]; then
diff --git a/test/common-utils/devcontainer-custom-home.sh b/test/common-utils/devcontainer-custom-home.sh
new file mode 100644
index 0000000..9b64cc0
--- /dev/null
+++ b/test/common-utils/devcontainer-custom-home.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+set -e
+
+# Optional: Import test library
+source dev-container-features-test-lib
+
+# Definition specific tests
+check "user is customUser" grep customUser <(whoami)
+check "home is /customHome" grep "/customHome" <(getent passwd customUser | cut -d: -f6)
+
+# Report result
+reportResults
diff --git a/test/common-utils/devcontainer-custom-home/Dockerfile b/test/common-utils/devcontainer-custom-home/Dockerfile
new file mode 100644
index 0000000..a94af4b
--- /dev/null
+++ b/test/common-utils/devcontainer-custom-home/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:focal
+
+RUN groupadd customUser -g 30000 && \
+ useradd customUser -u 30000 -g 30000 --create-home --home-dir /customHome
diff --git a/test/common-utils/devcontainer-custom-user-default-home.sh b/test/common-utils/devcontainer-custom-user-default-home.sh
new file mode 100644
index 0000000..f29bd7c
--- /dev/null
+++ b/test/common-utils/devcontainer-custom-user-default-home.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+set -e
+
+# Optional: Import test library
+source dev-container-features-test-lib
+
+# Definition specific tests
+check "user is customUser" grep customUser <(whoami)
+check "home is /home/customUser" grep "/home/customUser" <(getent passwd customUser | cut -d: -f6)
+
+# Report result
+reportResults
diff --git a/test/common-utils/scenarios.json b/test/common-utils/scenarios.json
index d7b296d..bb65874 100644
--- a/test/common-utils/scenarios.json
+++ b/test/common-utils/scenarios.json
@@ -183,5 +183,21 @@
"configureZshAsDefaultShell": true
}
}
+ },
+ "devcontainer-custom-home": {
+ "build": {
+ "dockerfile": "Dockerfile"
+ },
+ "remoteUser": "customUser",
+ "features": {
+ "common-utils": {}
+ }
+ },
+ "devcontainer-custom-user-default-home": {
+ "image": "mcr.microsoft.com/devcontainers/base:alpine",
+ "remoteUser": "customUser",
+ "features": {
+ "common-utils": {}
+ }
}
}