Revert "fix(skills): make app-bundle detection gate HOME-independent"
This reverts commit 37cd629335.
This commit is contained in:
1 parent
c0da89e674
commit
9abcdb4deb
3 files changed
+2
-69
No files matched your search
@@ -127,7 +127,7 @@ var (
|
||||
skillSetupExecutable = os.Executable
|
||||
skillSetupGetwd = os.Getwd
|
||||
skillSetupUserHomeDir = os.UserHomeDir
|
||||
skillSetupSystemHomeDir = upgrade.ResolveSystemHomeDir
|
||||
skillSetupSystemHomeDir = os.UserHomeDir
|
||||
skillSetupRemoveAll = os.RemoveAll
|
||||
skillSetupBackupAndRemove = upgrade.BackupAndRemoveSkillDir
|
||||
skillSetupRestoreBackup = upgrade.RestoreSkillPath
|
||||
|
||||
@@ -7,7 +7,6 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/user"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"sort"
|
||||
@@ -140,26 +139,9 @@ var universalSkillDirs = map[string]bool{
|
||||
".amp/skills": true,
|
||||
}
|
||||
|
||||
// upgradeCurrentUser is the test seam backing ResolveSystemHomeDir.
|
||||
var upgradeCurrentUser = user.Current
|
||||
|
||||
// ResolveSystemHomeDir returns the operating-system user's real home directory
|
||||
// independent of the $HOME environment variable. $HOME may be overridden in
|
||||
// isolated or verifier contexts, so the app-bundle detection gate
|
||||
// (allowSystemApps = homeDir == systemHome) must compare against a HOME-
|
||||
// independent source to actually mean "operating on the real user profile".
|
||||
// It prefers the OS user database (getpwuid on Unix) and falls back to $HOME
|
||||
// only when the user record cannot be resolved.
|
||||
func ResolveSystemHomeDir() (string, error) {
|
||||
if u, err := upgradeCurrentUser(); err == nil && u.HomeDir != "" {
|
||||
return u.HomeDir, nil
|
||||
}
|
||||
return os.UserHomeDir()
|
||||
}
|
||||
|
||||
var (
|
||||
upgradeUserHomeDir = os.UserHomeDir
|
||||
upgradeSystemHomeDir = ResolveSystemHomeDir
|
||||
upgradeSystemHomeDir = os.UserHomeDir
|
||||
upgradeExecutable = os.Executable
|
||||
upgradeEvalSymlinks = filepath.EvalSymlinks
|
||||
upgradeCopyDir = copyDir
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
package upgrade
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"os/user"
|
||||
"testing"
|
||||
|
||||
"github.com/DingTalk-Real-AI/dingtalk-workspace-cli/internal/testseam"
|
||||
)
|
||||
|
||||
// TestCrossPlatformCoverageSystemHomeIndependentOfHOME pins that the app-bundle
|
||||
// detection gate compares against a HOME-independent system home: ResolveSystemHomeDir
|
||||
// prefers the OS user record (getpwuid on Unix) and only falls back to $HOME when that
|
||||
// record cannot be resolved. Without this, allowSystemApps = homeDir == systemHome is a
|
||||
// no-op whenever $HOME is overridden, because both sides would honor the same override.
|
||||
func TestCrossPlatformCoverageSystemHomeIndependentOfHOME(t *testing.T) {
|
||||
// Success path: the OS user database home is returned as-is.
|
||||
testseam.Swap(t, &upgradeCurrentUser, func() (*user.User, error) {
|
||||
return &user.User{HomeDir: "/tmp/dws-real-system-home"}, nil
|
||||
})
|
||||
got, err := ResolveSystemHomeDir()
|
||||
if err != nil || got != "/tmp/dws-real-system-home" {
|
||||
t.Fatalf("ResolveSystemHomeDir success = (%q, %v), want /tmp/dws-real-system-home", got, err)
|
||||
}
|
||||
|
||||
// Fallback path: when the user record is unavailable, fall back to $HOME.
|
||||
testseam.Swap(t, &upgradeCurrentUser, func() (*user.User, error) {
|
||||
return nil, errors.New("user record unavailable")
|
||||
})
|
||||
got, err = ResolveSystemHomeDir()
|
||||
if err != nil {
|
||||
t.Fatalf("ResolveSystemHomeDir fallback returned error: %v", err)
|
||||
}
|
||||
if got == "" {
|
||||
t.Fatalf("ResolveSystemHomeDir fallback returned empty home")
|
||||
}
|
||||
|
||||
// Empty HomeDir is also treated as "unresolved" and falls back.
|
||||
testseam.Swap(t, &upgradeCurrentUser, func() (*user.User, error) {
|
||||
return &user.User{HomeDir: ""}, nil
|
||||
})
|
||||
got, err = ResolveSystemHomeDir()
|
||||
if err != nil {
|
||||
t.Fatalf("ResolveSystemHomeDir empty-home fallback returned error: %v", err)
|
||||
}
|
||||
if got == "" {
|
||||
t.Fatalf("ResolveSystemHomeDir empty-home fallback returned empty home")
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user