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.
64 lines
1.4 KiB
Go
64 lines
1.4 KiB
Go
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")
|
|
}
|
|
})
|
|
}
|
|
}
|