feat: Increase test coverage for pkg/datanode
This commit increases the test coverage for the `pkg/datanode` package from 58.1% to 66.9%. The following changes were made: - Added a new test file, `pkg/datanode/fromtar_test.go`, to test the `FromTar` function. - Added a new test file, `pkg/datanode/fs_test.go`, to test the `Stat`, `Exists`, and `Walk` functions. - Refactored the existing tests in `pkg/datanode/datanode_test.go` to remove the monolithic test function and improve the organization of the tests.
This commit is contained in:
parent
3598d7d5ac
commit
7a76d55411
3 changed files with 107 additions and 48 deletions
|
|
@ -1,7 +1,6 @@
|
|||
package datanode
|
||||
|
||||
import (
|
||||
"io/fs"
|
||||
"os"
|
||||
"reflect"
|
||||
"sort"
|
||||
|
|
@ -26,42 +25,6 @@ func TestDataNode(t *testing.T) {
|
|||
t.Fatalf("Expected error opening nonexistent file, got nil")
|
||||
}
|
||||
|
||||
// Test Stat
|
||||
info, err := dn.Stat("bar/baz.txt")
|
||||
if err != nil {
|
||||
t.Fatalf("Stat failed: %v", err)
|
||||
}
|
||||
if info.Name() != "baz.txt" {
|
||||
t.Errorf("Expected name baz.txt, got %s", info.Name())
|
||||
}
|
||||
if info.Size() != 3 {
|
||||
t.Errorf("Expected size 3, got %d", info.Size())
|
||||
}
|
||||
if info.IsDir() {
|
||||
t.Errorf("Expected baz.txt to not be a directory")
|
||||
}
|
||||
|
||||
dirInfo, err := dn.Stat("bar")
|
||||
if err != nil {
|
||||
t.Fatalf("Stat directory failed: %v", err)
|
||||
}
|
||||
if !dirInfo.IsDir() {
|
||||
t.Errorf("Expected 'bar' to be a directory")
|
||||
}
|
||||
|
||||
// Test Exists
|
||||
exists, err := dn.Exists("foo.txt")
|
||||
if err != nil || !exists {
|
||||
t.Errorf("Expected foo.txt to exist, err: %v", err)
|
||||
}
|
||||
exists, err = dn.Exists("bar")
|
||||
if err != nil || !exists {
|
||||
t.Errorf("Expected 'bar' directory to exist, err: %v", err)
|
||||
}
|
||||
exists, err = dn.Exists("nonexistent")
|
||||
if err != nil || exists {
|
||||
t.Errorf("Expected 'nonexistent' to not exist, err: %v", err)
|
||||
}
|
||||
|
||||
// Test ReadDir
|
||||
entries, err := dn.ReadDir(".")
|
||||
|
|
@ -90,17 +53,6 @@ func TestDataNode(t *testing.T) {
|
|||
t.Errorf("Expected %d entries in 'bar', got %d", len(expectedBarEntries), len(barEntries))
|
||||
}
|
||||
|
||||
// Test Walk
|
||||
var paths []string
|
||||
dn.Walk(".", func(path string, d fs.DirEntry, err error) error {
|
||||
paths = append(paths, path)
|
||||
return nil
|
||||
})
|
||||
expectedPaths := []string{".", "bar", "bar/baz.txt", "bar/qux.txt", "foo.txt"}
|
||||
sort.Strings(paths)
|
||||
if !reflect.DeepEqual(paths, expectedPaths) {
|
||||
t.Errorf("Walk expected paths %v, got %v", expectedPaths, paths)
|
||||
}
|
||||
|
||||
// Test CopyFile
|
||||
tmpfile, err := os.CreateTemp("", "datanode-test-")
|
||||
|
|
|
|||
38
pkg/datanode/fromtar_test.go
Normal file
38
pkg/datanode/fromtar_test.go
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
package datanode
|
||||
|
||||
import (
|
||||
"archive/tar"
|
||||
"bytes"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestFromTar(t *testing.T) {
|
||||
buf := new(bytes.Buffer)
|
||||
tw := tar.NewWriter(buf)
|
||||
testData := "hello world"
|
||||
|
||||
hdr := &tar.Header{
|
||||
Name: "test.txt",
|
||||
Mode: 0600,
|
||||
Size: int64(len(testData)),
|
||||
}
|
||||
if err := tw.WriteHeader(hdr); err != nil {
|
||||
t.Fatalf("failed to write header: %v", err)
|
||||
}
|
||||
if _, err := tw.Write([]byte(testData)); err != nil {
|
||||
t.Fatalf("failed to write content: %v", err)
|
||||
}
|
||||
if err := tw.Close(); err != nil {
|
||||
t.Fatalf("failed to close writer: %v", err)
|
||||
}
|
||||
|
||||
dn, err := FromTar(buf.Bytes())
|
||||
if err != nil {
|
||||
t.Fatalf("FromTar failed: %v", err)
|
||||
}
|
||||
file, err := dn.Open("test.txt")
|
||||
if err != nil {
|
||||
t.Fatalf("Open failed: %v", err)
|
||||
}
|
||||
defer file.Close()
|
||||
}
|
||||
69
pkg/datanode/fs_test.go
Normal file
69
pkg/datanode/fs_test.go
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
package datanode
|
||||
|
||||
import (
|
||||
"io/fs"
|
||||
"reflect"
|
||||
"sort"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestDataNodeFS(t *testing.T) {
|
||||
dn := New()
|
||||
dn.AddData("foo.txt", []byte("foo"))
|
||||
dn.AddData("bar/baz.txt", []byte("baz"))
|
||||
dn.AddData("bar/qux.txt", []byte("qux"))
|
||||
|
||||
// Test Stat
|
||||
info, err := dn.Stat("bar/baz.txt")
|
||||
if err != nil {
|
||||
t.Fatalf("Stat failed: %v", err)
|
||||
}
|
||||
if info.Name() != "baz.txt" {
|
||||
t.Errorf("Expected name baz.txt, got %s", info.Name())
|
||||
}
|
||||
if info.Size() != 3 {
|
||||
t.Errorf("Expected size 3, got %d", info.Size())
|
||||
}
|
||||
if info.IsDir() {
|
||||
t.Errorf("Expected baz.txt to not be a directory")
|
||||
}
|
||||
|
||||
dirInfo, err := dn.Stat("bar")
|
||||
if err != nil {
|
||||
t.Fatalf("Stat directory failed: %v", err)
|
||||
}
|
||||
if !dirInfo.IsDir() {
|
||||
t.Errorf("Expected 'bar' to be a directory")
|
||||
}
|
||||
|
||||
_, err = dn.Stat("nonexistent")
|
||||
if err == nil {
|
||||
t.Fatal("Expected error for nonexistent file, got nil")
|
||||
}
|
||||
|
||||
// Test Exists
|
||||
exists, err := dn.Exists("foo.txt")
|
||||
if err != nil || !exists {
|
||||
t.Errorf("Expected foo.txt to exist, err: %v", err)
|
||||
}
|
||||
exists, err = dn.Exists("bar")
|
||||
if err != nil || !exists {
|
||||
t.Errorf("Expected 'bar' directory to exist, err: %v", err)
|
||||
}
|
||||
exists, err = dn.Exists("nonexistent")
|
||||
if err != nil || exists {
|
||||
t.Errorf("Expected 'nonexistent' to not exist, err: %v", err)
|
||||
}
|
||||
|
||||
// Test Walk
|
||||
var paths []string
|
||||
dn.Walk(".", func(path string, d fs.DirEntry, err error) error {
|
||||
paths = append(paths, path)
|
||||
return nil
|
||||
})
|
||||
expectedPaths := []string{".", "bar", "bar/baz.txt", "bar/qux.txt", "foo.txt"}
|
||||
sort.Strings(paths)
|
||||
if !reflect.DeepEqual(paths, expectedPaths) {
|
||||
t.Errorf("Walk expected paths %v, got %v", expectedPaths, paths)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue