refactored util_test.go to test on real files
Signed-off-by: Christian Goll <cgoll@suse.com>
This commit is contained in:
committed by
Jonathon Anderson
parent
242276bba9
commit
767be4fd8c
@@ -1,11 +1,14 @@
|
||||
package warewulfd
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path"
|
||||
"testing"
|
||||
|
||||
warewulfconf "github.com/hpcng/warewulf/internal/pkg/config"
|
||||
"github.com/hpcng/warewulf/internal/pkg/node"
|
||||
"github.com/hpcng/warewulf/internal/pkg/wwlog"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var getOverlayFileTests = []struct {
|
||||
@@ -14,33 +17,47 @@ var getOverlayFileTests = []struct {
|
||||
context string
|
||||
overlays []string
|
||||
result string
|
||||
succeed bool // getOverlayFile will always fail if no overlay dir is defined!
|
||||
succeed bool
|
||||
}{
|
||||
{"empty", "", "", nil, "", false},
|
||||
{"empty node", "node1", "", nil, "", false},
|
||||
{"specific overlays without node", "", "", []string{"o1", "o2"}, "p/overlays/node1/o1-o2.img", false},
|
||||
{"system overlay", "node1", "system", nil, "p/overlays/node1/__SYSTEM__.img", false},
|
||||
{"runtime overlay", "node1", "runtime", nil, "p/overlays/node1/__RUNTIME__.img", false},
|
||||
{"specific overlay", "node1", "", []string{"o1"}, "p/overlays/node1/o1.img", false},
|
||||
{"multiple specific overlays", "node1", "", []string{"o1", "o2"}, "p/overlays/node1/o1-o2.img", false},
|
||||
{"multiple specific overlays with context", "node1", "system", []string{"o1", "o2"}, "p/overlays/node1/__SYSTEM__.img", false},
|
||||
{"empty", "", "", nil, "", true},
|
||||
{"empty node", "node1", "", nil, "", true},
|
||||
{"specific overlays without node", "", "", []string{"o1", "o2"}, "overlays/o1-o2.img", true}, // will fail as node is empty
|
||||
{"system overlay", "node1", "system", []string{"o1"}, "overlays/node1/__SYSTEM__.img", true},
|
||||
{"runtime overlay", "node1", "runtime", nil, "overlays/node1/__RUNTIME__.img", true},
|
||||
{"specific overlay", "node1", "", []string{"o1"}, "overlays/node1/o1.img", true},
|
||||
{"multiple specific overlays", "node1", "", []string{"o1", "o2"}, "overlays/node1/o1-o2.img", true},
|
||||
{"multiple specific overlays with context", "node1", "system", []string{"o1", "o2"}, "overlays/node1/__SYSTEM__.img", true},
|
||||
}
|
||||
|
||||
func Test_getOverlayFile(t *testing.T) {
|
||||
wwlog.SetLogLevel(wwlog.VERBOSE)
|
||||
wwlog.SetLogLevel(wwlog.DEBUG)
|
||||
conf := warewulfconf.Get()
|
||||
conf.Paths.WWProvisiondir = "p"
|
||||
var n node.NodeInfo
|
||||
overlayPDir, overlayPDirErr := os.MkdirTemp(os.TempDir(), "ww-test-overlay-*")
|
||||
assert.NoError(t, overlayPDirErr)
|
||||
conf.Paths.WWProvisiondir = overlayPDir
|
||||
overlayDir, overlayDirErr := os.MkdirTemp(os.TempDir(), "ww-test-provision-*")
|
||||
assert.NoError(t, overlayDirErr)
|
||||
conf.Paths.WWOverlaydir = overlayDir
|
||||
defer os.RemoveAll(overlayDir)
|
||||
assert.NoError(t, os.MkdirAll(path.Join(overlayDir, "o1"), 0700))
|
||||
assert.NoError(t, os.WriteFile(path.Join(overlayDir, "o1", "test_file_o1"), []byte("test file"), 0600))
|
||||
assert.NoError(t, os.MkdirAll(path.Join(overlayDir, "o2"), 0700))
|
||||
|
||||
for _, tt := range getOverlayFileTests {
|
||||
n.Id.Set(tt.node)
|
||||
t.Run(tt.description, func(t *testing.T) {
|
||||
result, err := getOverlayFile(n, tt.context, tt.overlays, false)
|
||||
var nodeInfo node.NodeInfo
|
||||
nodeInfo.Id.Set(tt.node)
|
||||
nodeInfo.RuntimeOverlay.SetSlice(tt.overlays)
|
||||
nodeInfo.SystemOverlay.SetSlice(tt.overlays)
|
||||
result, err := getOverlayFile(nodeInfo, tt.context, tt.overlays, false)
|
||||
if !tt.succeed {
|
||||
assert.Error(t, err)
|
||||
} else {
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
if tt.result != "" {
|
||||
tt.result = path.Join(overlayPDir, tt.result)
|
||||
}
|
||||
assert.Equal(t, tt.result, result)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user