Files
pmg/config/config_test.go
T
2025-12-17 23:25:02 +05:30

92 lines
3.1 KiB
Go

package config_test
import (
"os"
"testing"
"github.com/spf13/pflag"
"github.com/stretchr/testify/assert"
"github.com/safedep/pmg/config"
)
func TestLoad_DefaultsOnly(t *testing.T) {
t.Setenv("XDG_CONFIG_HOME", t.TempDir())
fs := pflag.NewFlagSet("test", pflag.ContinueOnError)
fs.Bool("transitive", false, "")
fs.Int("transitive-depth", 0, "")
fs.Bool("include-dev-dependencies", false, "")
fs.Bool("dry-run", false, "")
fs.Bool("paranoid", false, "")
cfg, err := config.Load(fs)
assert.NoError(t, err)
assert.True(t, cfg.Transitive, "transitive should default to true")
assert.Equal(t, 5, cfg.TransitiveDepth, "transitive_depth should default to 5")
assert.False(t, cfg.IncludeDevDependencies, "include_dev_dependencies should default to false")
assert.False(t, cfg.DryRun, "dry_run should default to false")
assert.False(t, cfg.Paranoid, "paranoid should default to false")
}
func TestLoad_FlagsOverrideDefaults(t *testing.T) {
t.Setenv("XDG_CONFIG_HOME", t.TempDir())
fs := pflag.NewFlagSet("test", pflag.ContinueOnError)
fs.Bool("transitive", false, "")
fs.Int("transitive-depth", 0, "")
fs.Bool("include-dev-dependencies", false, "")
fs.Bool("dry-run", false, "")
fs.Bool("paranoid", false, "")
assert.NoError(t, fs.Set("dry-run", "true"))
assert.NoError(t, fs.Set("include-dev-dependencies", "true"))
assert.NoError(t, fs.Set("paranoid", "true"))
assert.NoError(t, fs.Set("transitive-depth", "10"))
assert.NoError(t, fs.Set("transitive", "false"))
cfg, err := config.Load(fs)
assert.NoError(t, err)
assert.False(t, cfg.Transitive, "transitive should default to true")
assert.Equal(t, 10, cfg.TransitiveDepth, "transitive_depth should default to 5")
assert.True(t, cfg.IncludeDevDependencies, "include_dev_dependencies should default to false")
assert.True(t, cfg.DryRun, "dry_run should default to false")
assert.True(t, cfg.Paranoid, "paranoid should default to false")
}
func TestLoad_ConfigFileOverridesDefaults(t *testing.T) {
t.Setenv("XDG_CONFIG_HOME", t.TempDir())
dir, err := config.ConfigDir()
assert.NoError(t, err)
assert.NoError(t, os.MkdirAll(dir, 0o755))
cfgFile, _ := config.ConfigFilePath()
assert.NoError(t, os.WriteFile(cfgFile, []byte(`
transitive: false
transitive_depth: 7
include_dev_dependencies: true
dry_run: true
paranoid: true
trusted_packages: {'purls': ["a", "b"]}
`), 0o644))
fs := pflag.NewFlagSet("test", pflag.ContinueOnError)
fs.Bool("transitive", false, "")
fs.Int("transitive-depth", 0, "")
fs.Bool("include-dev-dependencies", false, "")
fs.Bool("dry-run", false, "")
fs.Bool("paranoid", false, "")
cfg, err := config.Load(fs)
assert.NoError(t, err)
assert.False(t, cfg.Transitive, "transitive should be overridden by file to false")
assert.Equal(t, 7, cfg.TransitiveDepth, "transitive_depth should be overridden by file to 7")
assert.True(t, cfg.IncludeDevDependencies, "include_dev_dependencies should be overridden by file to true")
assert.True(t, cfg.DryRun, "dry_run should be overridden by file to true")
assert.True(t, cfg.Paranoid, "paranoid should be overridden by file to true")
assert.ElementsMatch(t, []string{"a", "b"}, cfg.TrustedPackages.Purl, "trusted_packages should match file values")
}