Skip to content

Commit 522da51

Browse files
authored
Merge pull request #39 from crazy-max/hardened-tests
test: remove hardcoded files to check
2 parents 3149c91 + 04f2e85 commit 522da51

3 files changed

Lines changed: 99 additions & 25 deletions

File tree

clidocstool_md_test.go

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,21 @@
1515
package clidocstool
1616

1717
import (
18+
"io/fs"
1819
"os"
1920
"path"
2021
"path/filepath"
22+
"strings"
2123
"testing"
2224

23-
"github.com/stretchr/testify/assert"
2425
"github.com/stretchr/testify/require"
2526
)
2627

2728
//nolint:errcheck
2829
func TestGenMarkdownTree(t *testing.T) {
2930
tmpdir := t.TempDir()
3031

31-
err := copyFile(path.Join("fixtures", "buildx_stop.pre.md"), path.Join(tmpdir, "buildx_stop.md"))
32-
require.NoError(t, err)
32+
require.NoError(t, copyFile(path.Join("fixtures", "buildx_stop.pre.md"), path.Join(tmpdir, "buildx_stop.md")))
3333

3434
c, err := New(Options{
3535
Root: buildxCmd,
@@ -39,15 +39,39 @@ func TestGenMarkdownTree(t *testing.T) {
3939
require.NoError(t, err)
4040
require.NoError(t, c.GenMarkdownTree(buildxCmd))
4141

42-
for _, tt := range []string{"buildx.md", "buildx_build.md", "buildx_stop.md"} {
43-
tt := tt
44-
t.Run(tt, func(t *testing.T) {
45-
bres, err := os.ReadFile(filepath.Join(tmpdir, tt))
42+
seen := make(map[string]struct{})
43+
44+
filepath.Walk("fixtures", func(path string, info fs.FileInfo, err error) error {
45+
fname := filepath.Base(path)
46+
// ignore dirs, .pre.md files and any file that is not a .md file
47+
if info.IsDir() || !strings.HasSuffix(fname, ".md") || strings.HasSuffix(fname, ".pre.md") {
48+
return nil
49+
}
50+
t.Run(fname, func(t *testing.T) {
51+
seen[fname] = struct{}{}
52+
require.NoError(t, err)
53+
54+
bres, err := os.ReadFile(filepath.Join(tmpdir, fname))
4655
require.NoError(t, err)
4756

48-
bexc, err := os.ReadFile(path.Join("fixtures", tt))
57+
bexc, err := os.ReadFile(path)
4958
require.NoError(t, err)
50-
assert.Equal(t, string(bexc), string(bres))
59+
require.Equal(t, string(bexc), string(bres))
5160
})
52-
}
61+
return nil
62+
})
63+
64+
filepath.Walk(tmpdir, func(path string, info fs.FileInfo, err error) error {
65+
fname := filepath.Base(path)
66+
// ignore dirs, .pre.md files and any file that is not a .md file
67+
if info.IsDir() || !strings.HasSuffix(fname, ".md") || strings.HasSuffix(fname, ".pre.md") {
68+
return nil
69+
}
70+
t.Run("seen_"+fname, func(t *testing.T) {
71+
if _, ok := seen[fname]; !ok {
72+
t.Errorf("file %s not found in fixtures", fname)
73+
}
74+
})
75+
return nil
76+
})
5377
}

clidocstool_test.go

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
package clidocstool
1616

1717
import (
18+
"io/fs"
1819
"os"
1920
"path"
2021
"path/filepath"
22+
"strings"
2123
"testing"
2224

2325
"github.com/docker/cli-docs-tool/annotation"
@@ -192,8 +194,7 @@ format: "default|<id>[=<socket>|<key>[,<key>]]"`)
192194
func TestGenAllTree(t *testing.T) {
193195
tmpdir := t.TempDir()
194196

195-
err := copyFile(path.Join("fixtures", "buildx_stop.pre.md"), path.Join(tmpdir, "buildx_stop.md"))
196-
require.NoError(t, err)
197+
require.NoError(t, copyFile(path.Join("fixtures", "buildx_stop.pre.md"), path.Join(tmpdir, "buildx_stop.md")))
197198

198199
c, err := New(Options{
199200
Root: buildxCmd,
@@ -203,15 +204,39 @@ func TestGenAllTree(t *testing.T) {
203204
require.NoError(t, err)
204205
require.NoError(t, c.GenAllTree())
205206

206-
for _, tt := range []string{"buildx.md", "buildx_build.md", "buildx_stop.md", "docker_buildx.yaml", "docker_buildx_build.yaml", "docker_buildx_install.yaml", "docker_buildx_stop.yaml"} {
207-
tt := tt
208-
t.Run(tt, func(t *testing.T) {
209-
bres, err := os.ReadFile(filepath.Join(tmpdir, tt))
207+
seen := make(map[string]struct{})
208+
209+
filepath.Walk("fixtures", func(path string, info fs.FileInfo, err error) error {
210+
fname := filepath.Base(path)
211+
// ignore dirs and .pre.md files
212+
if info.IsDir() || strings.HasSuffix(fname, ".pre.md") {
213+
return nil
214+
}
215+
t.Run(fname, func(t *testing.T) {
216+
seen[fname] = struct{}{}
210217
require.NoError(t, err)
211218

212-
bexc, err := os.ReadFile(path.Join("fixtures", tt))
219+
bres, err := os.ReadFile(filepath.Join(tmpdir, fname))
220+
require.NoError(t, err)
221+
222+
bexc, err := os.ReadFile(path)
213223
require.NoError(t, err)
214224
assert.Equal(t, string(bexc), string(bres))
215225
})
216-
}
226+
return nil
227+
})
228+
229+
filepath.Walk(tmpdir, func(path string, info fs.FileInfo, err error) error {
230+
fname := filepath.Base(path)
231+
// ignore dirs and .pre.md files
232+
if info.IsDir() || strings.HasSuffix(fname, ".pre.md") {
233+
return nil
234+
}
235+
t.Run("seen_"+fname, func(t *testing.T) {
236+
if _, ok := seen[fname]; !ok {
237+
t.Errorf("file %s not found in fixtures", fname)
238+
}
239+
})
240+
return nil
241+
})
217242
}

clidocstool_yaml_test.go

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@
1515
package clidocstool
1616

1717
import (
18+
"io/fs"
1819
"os"
19-
"path"
2020
"path/filepath"
21+
"strings"
2122
"testing"
2223

2324
"github.com/stretchr/testify/assert"
@@ -36,15 +37,39 @@ func TestGenYamlTree(t *testing.T) {
3637
require.NoError(t, err)
3738
require.NoError(t, c.GenYamlTree(buildxCmd))
3839

39-
for _, tt := range []string{"docker_buildx.yaml", "docker_buildx_build.yaml", "docker_buildx_install.yaml", "docker_buildx_stop.yaml"} {
40-
tt := tt
41-
t.Run(tt, func(t *testing.T) {
42-
bres, err := os.ReadFile(filepath.Join(tmpdir, tt))
40+
seen := make(map[string]struct{})
41+
42+
filepath.Walk("fixtures", func(path string, info fs.FileInfo, err error) error {
43+
fname := filepath.Base(path)
44+
// ignore dirs and any file that is not a .yaml file
45+
if info.IsDir() || !strings.HasSuffix(fname, ".yaml") {
46+
return nil
47+
}
48+
t.Run(fname, func(t *testing.T) {
49+
seen[fname] = struct{}{}
50+
require.NoError(t, err)
51+
52+
bres, err := os.ReadFile(filepath.Join(tmpdir, fname))
4353
require.NoError(t, err)
4454

45-
bexc, err := os.ReadFile(path.Join("fixtures", tt))
55+
bexc, err := os.ReadFile(path)
4656
require.NoError(t, err)
4757
assert.Equal(t, string(bexc), string(bres))
4858
})
49-
}
59+
return nil
60+
})
61+
62+
filepath.Walk(tmpdir, func(path string, info fs.FileInfo, err error) error {
63+
fname := filepath.Base(path)
64+
// ignore dirs and any file that is not a .yaml file
65+
if info.IsDir() || !strings.HasSuffix(fname, ".yaml") {
66+
return nil
67+
}
68+
t.Run("seen_"+fname, func(t *testing.T) {
69+
if _, ok := seen[fname]; !ok {
70+
t.Errorf("file %s not found in fixtures", fname)
71+
}
72+
})
73+
return nil
74+
})
5075
}

0 commit comments

Comments
 (0)