1
0
mirror of https://github.com/lxc/distrobuilder.git synced 2026-02-05 15:46:17 +01:00
Files
distrobuilder/generators/dump_test.go
Stéphane Graber 57091a0e63 Fix golang-ci reported issues
Signed-off-by: Stéphane Graber <stgraber@stgraber.org>
2025-04-02 14:37:13 -04:00

156 lines
3.7 KiB
Go

package generators
import (
"bytes"
"io"
"os"
"path/filepath"
"testing"
"github.com/stretchr/testify/require"
"github.com/lxc/distrobuilder/shared"
)
func TestDumpGeneratorRunLXC(t *testing.T) {
cacheDir, err := os.MkdirTemp(os.TempDir(), "distrobuilder-test-")
require.NoError(t, err)
rootfsDir := filepath.Join(cacheDir, "rootfs")
setup(t, cacheDir)
defer teardown(cacheDir)
def := shared.Definition{
Targets: shared.DefinitionTarget{
LXC: shared.DefinitionTargetLXC{
CreateMessage: "message",
},
},
}
generator, err := Load("dump", nil, cacheDir, rootfsDir, shared.DefinitionFile{
Path: "/hello/world",
Content: "hello {{ targets.lxc.create_message }}",
Pongo: true,
}, def)
require.IsType(t, &dump{}, generator)
require.NoError(t, err)
err = generator.RunLXC(nil, shared.DefinitionTargetLXC{
CreateMessage: "message",
})
require.NoError(t, err)
require.FileExists(t, filepath.Join(rootfsDir, "hello", "world"))
var buffer bytes.Buffer
file, err := os.Open(filepath.Join(rootfsDir, "hello", "world"))
require.NoError(t, err)
defer file.Close()
_, err = io.Copy(&buffer, file)
require.NoError(t, err)
require.Equal(t, "hello message\n", buffer.String())
generator, err = Load("dump", nil, cacheDir, rootfsDir, shared.DefinitionFile{
Path: "/hello/world",
Content: "hello {{ targets.lxc.create_message }}",
}, def)
require.IsType(t, &dump{}, generator)
require.NoError(t, err)
err = generator.RunLXC(nil, shared.DefinitionTargetLXC{
CreateMessage: "message",
})
require.NoError(t, err)
require.FileExists(t, filepath.Join(rootfsDir, "hello", "world"))
file, err = os.Open(filepath.Join(rootfsDir, "hello", "world"))
require.NoError(t, err)
defer file.Close()
buffer.Reset()
_, err = io.Copy(&buffer, file)
require.NoError(t, err)
require.Equal(t, "hello {{ targets.lxc.create_message }}\n", buffer.String())
}
func TestDumpGeneratorRunIncus(t *testing.T) {
cacheDir, err := os.MkdirTemp(os.TempDir(), "distrobuilder-test-")
require.NoError(t, err)
rootfsDir := filepath.Join(cacheDir, "rootfs")
setup(t, cacheDir)
defer teardown(cacheDir)
def := shared.Definition{
Targets: shared.DefinitionTarget{
Incus: shared.DefinitionTargetIncus{
VM: shared.DefinitionTargetIncusVM{
Filesystem: "ext4",
},
},
},
}
generator, err := Load("dump", nil, cacheDir, rootfsDir, shared.DefinitionFile{
Path: "/hello/world",
Content: "hello {{ targets.incus.vm.filesystem }}",
Pongo: true,
}, def)
require.IsType(t, &dump{}, generator)
require.NoError(t, err)
err = generator.RunIncus(nil, shared.DefinitionTargetIncus{
VM: shared.DefinitionTargetIncusVM{
Filesystem: "ext4",
},
})
require.NoError(t, err)
require.FileExists(t, filepath.Join(rootfsDir, "hello", "world"))
var buffer bytes.Buffer
file, err := os.Open(filepath.Join(rootfsDir, "hello", "world"))
require.NoError(t, err)
defer file.Close()
_, err = io.Copy(&buffer, file)
require.NoError(t, err)
require.Equal(t, "hello ext4\n", buffer.String())
file.Close()
generator, err = Load("dump", nil, cacheDir, rootfsDir, shared.DefinitionFile{
Path: "/hello/world",
Content: "hello {{ targets.incus.vm.filesystem }}",
}, def)
require.IsType(t, &dump{}, generator)
require.NoError(t, err)
err = generator.RunIncus(nil, shared.DefinitionTargetIncus{
VM: shared.DefinitionTargetIncusVM{
Filesystem: "ext4",
},
})
require.NoError(t, err)
require.FileExists(t, filepath.Join(rootfsDir, "hello", "world"))
file, err = os.Open(filepath.Join(rootfsDir, "hello", "world"))
require.NoError(t, err)
defer file.Close()
buffer.Reset()
_, err = io.Copy(&buffer, file)
require.NoError(t, err)
require.Equal(t, "hello {{ targets.incus.vm.filesystem }}\n", buffer.String())
}