refactored overlay class
overlay.GetOverlay(name) returns now an error if the overlay doesn't exist. This is the most canonical way to act if there is no overlay.
This commit is contained in:
committed by
Jonathon Anderson
parent
c17fe8d512
commit
6f4fd60d8f
63
internal/app/wwctl/overlay/create/main_test.go
Normal file
63
internal/app/wwctl/overlay/create/main_test.go
Normal file
@@ -0,0 +1,63 @@
|
||||
package create
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/warewulf/warewulf/internal/pkg/testenv"
|
||||
"github.com/warewulf/warewulf/internal/pkg/warewulfd"
|
||||
)
|
||||
|
||||
func Test_OverlayCreate(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
overlayName string
|
||||
setup func(t *testing.T, overlayDir string)
|
||||
wantErr bool
|
||||
}{
|
||||
{
|
||||
name: "simple create",
|
||||
overlayName: "test-overlay",
|
||||
setup: func(t *testing.T, overlayDir string) {},
|
||||
wantErr: false,
|
||||
},
|
||||
{
|
||||
name: "create existing overlay",
|
||||
overlayName: "test-overlay-exists",
|
||||
setup: func(t *testing.T, overlayDir string) {
|
||||
err := os.MkdirAll(overlayDir, 0755)
|
||||
assert.NoError(t, err)
|
||||
},
|
||||
wantErr: true,
|
||||
},
|
||||
}
|
||||
|
||||
warewulfd.SetNoDaemon()
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
env := testenv.New(t)
|
||||
conf := env.Configure()
|
||||
|
||||
overlayDir := filepath.Join(conf.Paths.WWOverlaydir, tt.overlayName)
|
||||
tt.setup(t, overlayDir)
|
||||
|
||||
baseCmd := GetCommand()
|
||||
baseCmd.SetArgs([]string{tt.overlayName})
|
||||
buf := new(bytes.Buffer)
|
||||
baseCmd.SetOut(buf)
|
||||
baseCmd.SetErr(buf)
|
||||
err := baseCmd.Execute()
|
||||
|
||||
if tt.wantErr {
|
||||
assert.Error(t, err)
|
||||
} else {
|
||||
assert.NoError(t, err)
|
||||
_, err := os.Stat(overlayDir)
|
||||
assert.NoError(t, err, "overlay directory should have been created")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user