mirror of
https://github.com/safedep/pmg.git
synced 2026-08-03 07:24:09 +02:00
modify RemoveConfig to rm files & not dir. add tests for paths.go
This commit is contained in:
+12
-5
@@ -123,15 +123,22 @@ func createConfig() (string, error) {
|
||||
return cfgFile, nil
|
||||
}
|
||||
|
||||
// RemoveConfig removes the PMG configuration directory and its contents.
|
||||
// RemoveConfig removes the PMG config and RC file.
|
||||
func RemoveConfig() error {
|
||||
dir, err := ConfigDir()
|
||||
configFilePath, err := ConfigFilePath()
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("failed to get config file path: %w", err)
|
||||
}
|
||||
if err := os.Remove(configFilePath); err != nil {
|
||||
return fmt.Errorf("failed to remove config file %s: %w", configFilePath, err)
|
||||
}
|
||||
|
||||
if err := os.RemoveAll(dir); err != nil {
|
||||
return fmt.Errorf("failed to remove config directory %s: %w", dir, err)
|
||||
rcFilePath, err := RcFilePath()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get rc file path: %w", err)
|
||||
}
|
||||
if err := os.Remove(rcFilePath); err != nil {
|
||||
return fmt.Errorf("failed to remove rc file %s: %w", rcFilePath, err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestConfigPaths_WithEnv(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
temp := t.TempDir()
|
||||
t.Setenv(PMG_CONFIG_DIR_ENV, temp)
|
||||
|
||||
dir, err := ConfigDir()
|
||||
assert.NoError(err)
|
||||
|
||||
expected := filepath.Join(temp, pmgConfigPath)
|
||||
assert.Equal(expected, dir)
|
||||
|
||||
cfgPath, err := ConfigFilePath()
|
||||
assert.NoError(err)
|
||||
|
||||
expectedCfg := filepath.Join(expected, pmgConfigName+"."+pmgConfigType)
|
||||
assert.Equal(expectedCfg, cfgPath)
|
||||
|
||||
rcPath, err := RcFilePath()
|
||||
assert.NoError(err)
|
||||
|
||||
expectedRc := filepath.Join(expected, RcFileName())
|
||||
assert.Equal(expectedRc, rcPath)
|
||||
}
|
||||
|
||||
func TestConfigPaths_DefaultUserConfigDir(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
// Ensure env is cleared for the test
|
||||
os.Unsetenv(PMG_CONFIG_DIR_ENV)
|
||||
|
||||
userCfgDir, err := os.UserConfigDir()
|
||||
assert.NoError(err)
|
||||
|
||||
dir, err := ConfigDir()
|
||||
assert.NoError(err)
|
||||
|
||||
expected := filepath.Join(userCfgDir, pmgConfigPath)
|
||||
assert.Equal(expected, dir)
|
||||
|
||||
rcPath, err := RcFilePath()
|
||||
assert.NoError(err)
|
||||
|
||||
expectedRc := filepath.Join(expected, RcFileName())
|
||||
assert.Equal(expectedRc, rcPath)
|
||||
}
|
||||
|
||||
// Test that createConfigDir actually creates the directory returned by ConfigDir.
|
||||
func TestCreateConfigDir_CreatesDirectory(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
// Use a temp dir as base for PMG_CONFIG_DIR so we don't touch user files.
|
||||
temp := t.TempDir()
|
||||
t.Setenv(PMG_CONFIG_DIR_ENV, temp)
|
||||
|
||||
created, err := createConfigDir()
|
||||
assert.NoError(err)
|
||||
|
||||
info, err := os.Stat(created)
|
||||
assert.NoError(err)
|
||||
assert.True(info.IsDir(), "expected created path to be a directory")
|
||||
|
||||
// Also ensure the returned path matches ConfigDir() result
|
||||
dir, err := ConfigDir()
|
||||
assert.NoError(err)
|
||||
assert.Equal(created, dir)
|
||||
}
|
||||
+24
-2
@@ -17,7 +17,6 @@ import (
|
||||
"github.com/safedep/pmg/extractor"
|
||||
"github.com/safedep/pmg/internal/ui"
|
||||
"github.com/safedep/pmg/packagemanager"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
type PackageManagerGuardInteraction struct {
|
||||
@@ -75,7 +74,7 @@ func (c *PackageManagerGuardConfig) IsTrustedPackageVersion(result *packagev1.Pa
|
||||
continue
|
||||
}
|
||||
|
||||
if proto.Equal(result, purlPkgVersion.PackageVersion()) {
|
||||
if isPackageVersionEqual(result, purlPkgVersion.PackageVersion()) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -433,3 +432,26 @@ func (g *packageManagerGuard) handleManifestInstallation(ctx context.Context, pa
|
||||
g.clearStatus()
|
||||
return g.continueExecution(ctx, parsedCommand)
|
||||
}
|
||||
|
||||
func isPackageVersionEqual(result, purlPkgVersion *packagev1.PackageVersion) bool {
|
||||
if result == nil || purlPkgVersion == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
if result.GetVersion() != purlPkgVersion.GetVersion() {
|
||||
return false
|
||||
}
|
||||
|
||||
if result.GetPackage() == nil || purlPkgVersion.GetPackage() == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
if result.GetPackage().GetName() != purlPkgVersion.GetPackage().GetName() {
|
||||
return false
|
||||
}
|
||||
|
||||
if result.GetPackage().GetEcosystem() != purlPkgVersion.GetPackage().GetEcosystem() {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user