1
0
Fork 0
mirror of https://github.com/vbatts/go-mtree.git synced 2025-10-04 04:31:00 +00:00
go-mtree/walk_test.go
Aleksa Sarai 3252a4ad82
test: migrate most tests to testify
testify makes most bog-standard test checks much easier to read and
maintain, and is quite widely used. It wasn't really well known back
when go-mtree was first written, but the migration is fairly
straight-forward for most tests.

Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
2025-09-20 12:43:45 +10:00

48 lines
1.3 KiB
Go

package mtree
import (
"os"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestWalk(t *testing.T) {
walkDh, err := Walk(".", nil, append(DefaultKeywords, "sha1"), nil)
require.NoError(t, err, "walk .")
walkEntries := countTypes(walkDh)
fh, err := os.CreateTemp(t.TempDir(), "walk.")
require.NoError(t, err)
defer fh.Close()
n, err := walkDh.WriteTo(fh)
require.NoError(t, err, "write directory hierarchy representation")
assert.NotZero(t, n, "output mtree spec should be non-empty")
_, err = fh.Seek(0, 0)
require.NoError(t, err)
specDh, err := ParseSpec(fh)
require.NoErrorf(t, err, "parse spec %s", fh.Name())
specEntries := countTypes(specDh)
assert.Equal(t, walkEntries, specEntries, "round-trip specfile should have the same set of entries")
}
func TestWalkDirectory(t *testing.T) {
dh, err := Walk(".", []ExcludeFunc{ExcludeNonDirectories}, []Keyword{"type"}, nil)
require.NoError(t, err, "walk . (ExcludeNonDirectories)")
for i := range dh.Entries {
for _, keyval := range dh.Entries[i].AllKeys() {
if dh.Entries[i].Type == FullType || dh.Entries[i].Type == RelativeType {
if keyval.Keyword() == "type" && keyval.Value() != "dir" {
t.Errorf("expected only directories, but %q is a %q", dh.Entries[i].Name, keyval.Value())
}
}
}
}
}