diff --git a/tests/acceptance/features/bootstrap/FeatureContext.php b/tests/acceptance/features/bootstrap/FeatureContext.php index cce9afab7..76267f8a3 100644 --- a/tests/acceptance/features/bootstrap/FeatureContext.php +++ b/tests/acceptance/features/bootstrap/FeatureContext.php @@ -146,7 +146,7 @@ private function createUser(string $user, array $userAttributes): void { /** * @Given user :user has been created */ - public function userHasBeenCreated(string $user, string $displayName = null):void { + public function userHasBeenCreated(string $user, ?string $displayName = null):void { $userAttributes['userid'] = $user; $userAttributes['password'] = $this->getRegularUserPassword(); if ($displayName !== null) { @@ -283,13 +283,26 @@ public function theAdministratorDeletesTheGroup(string $group):void { private function deleteUserDataFromDocker(string $user): void { $dataDir = "data"; // check if docker exists - if (!exec("docker --version")) { - echo "'docker' command not found. Skipping user data deletion.\n"; + exec("docker --version 2>&1", $dockerVersionOutput, $dockerVersionCode); + if ($dockerVersionCode !== 0) { + echo "'docker' command not found or not executable. Skipping user data deletion.\n"; + if (count($dockerVersionOutput) > 0) { + echo "Command output: " . implode("\n", $dockerVersionOutput) . "\n"; + } return; } + // Skip if Nextcloud Docker container does not exist - exec("docker ps --format \"{{.Names}}\"", $containers); + exec("docker ps --format \"{{.Names}}\" 2>&1", $containers, $dockerPsCode); + if ($dockerPsCode !== 0) { + echo "Failed to list Docker containers. Skipping user data deletion.\n"; + if (count($containers) > 0) { + echo "Command output: " . implode("\n", $containers) . "\n"; + } + return; + } if (!in_array('nextcloud', $containers)) { + echo "Docker container 'nextcloud' not found. Skipping user data deletion.\n"; return; } @@ -301,21 +314,32 @@ private function deleteUserDataFromDocker(string $user): void { $folder2 = "$dataDir/" . strtoupper($firstChar) . $restChars; // check data folders - $checkCmd = "docker exec nextcloud /bin/bash -c '[ -d $folder1 ] || [ -d $folder2 ]'"; + $checkCmd = "docker exec nextcloud /bin/bash -c '[ -d $folder1 ] || [ -d $folder2 ]' 2>&1"; exec($checkCmd, $checkOutput, $checkCode); - if ($checkCode === 1) { - echo "User data directory doesn't exist, skipping deletion.\n"; + if ($checkCode !== 0) { + if ($checkCode === 1) { + echo "User '$user' data directory doesn't exist, skipping deletion.\n"; + } else { + echo "Failed to check user data directory for '$user'.\n"; + echo "Command: $checkCmd\n"; + echo "Exit code: $checkCode\n"; + } if (count($checkOutput) > 0) { - echo "Command output: " . implode("\n", $checkOutput); + echo "Command output: " . implode("\n", $checkOutput) . "\n"; } return; } + // delete user data directory - $rmCmd = "docker exec nextcloud /bin/bash -c 'rm -rf $dataDir/$userPattern'"; + $rmCmd = "docker exec nextcloud /bin/bash -c 'rm -rf $dataDir/$userPattern' 2>&1"; exec($rmCmd, $output, $rmCode); if ($rmCode !== 0) { echo "Failed to delete data directory of user '$user'.\n"; - echo "Command output: " . implode("\n", $output); + echo "Command: $rmCmd\n"; + echo "Exit code: $rmCode\n"; + if (count($output) > 0) { + echo "Command output: " . implode("\n", $output) . "\n"; + } } }