package zfs_test import ( "fmt" "os" "os/exec" "testing" "git.gentoo.party/sam/thanks/internal/zfs" "github.com/stretchr/testify/assert" ) type zfscmd struct { cmd string } type zrunner struct { cmd string args []string } func (z *zrunner) Run(zcmd *zfscmd, fargs ...any) ([]byte, error) { var zargs string if len(fargs) > 0 { zargs = fmt.Sprintf(zcmd.cmd, fargs...) } else { zargs = zcmd.cmd } largs := append(z.args, zargs) cmd := exec.Command(z.cmd, largs...) return cmd.CombinedOutput() } func Test_ZFSCommand(t *testing.T) { cmd := zfscmd{"zfs list -j %s"} runner := zrunner{"/bin/sh", []string{"-c"}} sshRunner := zrunner{"ssh", []string{"root@10.10.10.254"}} out, err := runner.Run(&cmd, "zroot/ROOT/gentoo") if err != nil { t.Errorf("zrunner failed: %s \n\n%s", err.Error(), out) } out, err = sshRunner.Run(&cmd, "zroot/ROOT") if err != nil { t.Errorf("SSH zrunner failed: %s \n\n%s", err.Error(), out) } } func Test_Snapshots(t *testing.T) { f, err := os.Open("./zfs-list_snapshot.txt") assert.Nil(t, err, "failed to open test data") out, err := zfs.ParseSnapshots(f) assert.Nil(t, err, "ParseSnapshots returned non-nil error") for _, snap := range out { assert.Contains(t, snap.SnapshotName, "thanks") } }