diff options
| author | ewy <ewy0@protonmail.com> | 2026-04-22 20:54:20 +0200 |
|---|---|---|
| committer | ewy <ewy0@protonmail.com> | 2026-04-22 20:54:20 +0200 |
| commit | fb6f9434eaf353375b20a13966946d3a230d93d5 (patch) | |
| tree | 4a481907a77e50c0564c4a572368e1133f796018 | |
| parent | 086a0cc0eb75c0c3a15cf6a715427df1e2d589a2 (diff) | |
testooooo
| -rw-r--r-- | env/env.go | 3 | ||||
| -rw-r--r-- | env/env_test.go | 54 | ||||
| -rw-r--r-- | web/coverage.html | 29 |
3 files changed, 71 insertions, 15 deletions
@@ -20,7 +20,8 @@ func IsEnv(file string) bool { options = append(options, ".env-"+e, ".env."+e, - e+".env") + e+".env", + "."+e+".env") } return slices.Contains(options, file) } diff --git a/env/env_test.go b/env/env_test.go new file mode 100644 index 0000000..865f3cd --- /dev/null +++ b/env/env_test.go @@ -0,0 +1,54 @@ +//go:build test + +package env + +import ( + "github.com/spf13/pflag" + "github.com/stretchr/testify/assert" + "os" + "path/filepath" + "pik/model" + "testing" +) + +func TestIsEnv(t *testing.T) { + err := pflag.Set("env", "test") + assert.NoError(t, err) + files := []string{ + ".env", + ".env-test", + ".env.test", + "test.env", + } + fakes := []string{ + ".env-other", + "unrelated.env", + } + for _, f := range files { + assert.True(t, IsEnv(f)) + } + for _, f := range fakes { + assert.False(t, IsEnv(f)) + } +} + +func TestGet(t *testing.T) { + err := pflag.Set("env", "get") + dir := t.TempDir() + ctx := filepath.Join(dir, ".pik") + err = os.Mkdir(ctx, 0777) + assert.NoError(t, err) + file := filepath.Join(dir, ".get.env") + ctxFile := filepath.Join(dir, ".pik", ".get.env") + src := &model.Source{ + Path: dir, + } + err = os.WriteFile(file, []byte("OUTERKEY=val"), 0666) + assert.NoError(t, err) + err = os.WriteFile(ctxFile, []byte("INNERKEY=otherval"), 0666) + assert.NoError(t, err) + res := Get(src) + assert.Len(t, res, 2) + assert.Contains(t, res, "OUTERKEY=val") + assert.Contains(t, res, "INNERKEY=otherval") +} diff --git a/web/coverage.html b/web/coverage.html index 44d8836..a1ad2d0 100644 --- a/web/coverage.html +++ b/web/coverage.html @@ -61,7 +61,7 @@ <option value="file2">pik/describe/describe.go (96.9%)</option> - <option value="file3">pik/env/env.go (0.0%)</option> + <option value="file3">pik/env/env.go (88.0%)</option> <option value="file4">pik/git/git.go (0.0%)</option> @@ -433,51 +433,52 @@ import ( "slices" ) -func IsEnv(file string) bool <span class="cov0" title="0">{ +func IsEnv(file string) bool <span class="cov8" title="1">{ options := []string{ ".env", } - for _, e := range *flags.Env </span><span class="cov0" title="0">{ + for _, e := range *flags.Env </span><span class="cov8" title="1">{ options = append(options, ".env-"+e, ".env."+e, - e+".env") + e+".env", + "."+e+".env") }</span> - <span class="cov0" title="0">return slices.Contains(options, file)</span> + <span class="cov8" title="1">return slices.Contains(options, file)</span> } -func EnvFiles(f fs.FS, p string, deep bool) []string <span class="cov0" title="0">{ +func EnvFiles(f fs.FS, p string, deep bool) []string <span class="cov8" title="1">{ var result []string dir, err := fs.ReadDir(f, p) if err != nil </span><span class="cov0" title="0">{ return nil }</span> - <span class="cov0" title="0">for _, e := range dir </span><span class="cov0" title="0">{ - if e.IsDir() && slices.Contains(pikdex.Roots, e.Name()) && deep </span><span class="cov0" title="0">{ + <span class="cov8" title="1">for _, e := range dir </span><span class="cov8" title="1">{ + if e.IsDir() && slices.Contains(pikdex.Roots, e.Name()) && deep </span><span class="cov8" title="1">{ result = append(result, EnvFiles(f, e.Name(), false)...) }</span> - <span class="cov0" title="0">if !e.IsDir() && IsEnv(e.Name()) </span><span class="cov0" title="0">{ + <span class="cov8" title="1">if !e.IsDir() && IsEnv(e.Name()) </span><span class="cov8" title="1">{ result = append(result, filepath.Join(p, e.Name())) }</span> } - <span class="cov0" title="0">return result</span> + <span class="cov8" title="1">return result</span> } -func Get(src *model.Source) []string <span class="cov0" title="0">{ +func Get(src *model.Source) []string <span class="cov8" title="1">{ f := os.DirFS(src.Path) var result []string files := EnvFiles(f, ".", true) - for _, f := range files </span><span class="cov0" title="0">{ + for _, f := range files </span><span class="cov8" title="1">{ res, err := godotenv.Read(filepath.Join(src.Path, f)) if err != nil </span><span class="cov0" title="0">{ spool.Warn("%v", err) continue</span> } - <span class="cov0" title="0">for k, v := range res </span><span class="cov0" title="0">{ + <span class="cov8" title="1">for k, v := range res </span><span class="cov8" title="1">{ result = append(result, k+"="+v) }</span> } - <span class="cov0" title="0">return result</span> + <span class="cov8" title="1">return result</span> } </pre> |
