blob: b3c3c97b0f00e17bef108624540d1e48b8e85c0e [file] [log] [blame]
package actions
import (
"bytes"
"fmt"
"strings"
"testing"
)
func runDkmsCommand(args string) (string, error) {
resetState()
cmd := rootCmd
cmd.SetArgs(strings.Split(args, " "))
out := &bytes.Buffer{}
cmd.SetOut(out)
cmd.SetErr(out)
if err := cmd.Execute(); err != nil {
return out.String(), err
}
return out.String(), nil
}
func TestAdd(t *testing.T) {
dkmsTree := t.TempDir()
installTree := t.TempDir()
out, err := runDkmsCommand(fmt.Sprintf("status mymodule/1.0 --sourcetree testdata/source-tree --dkmstree %s --installtree %s", dkmsTree, installTree))
if err != nil {
t.Fatal(err)
}
status := strings.TrimSpace(out)
if status != "Broken" {
t.Fatalf("expected status Broken, got %s", status)
}
_, err = runDkmsCommand(fmt.Sprintf("add mymodule/1.0 --sourcetree testdata/source-tree --dkmstree %s --installtree %s", dkmsTree, installTree))
if err != nil {
t.Fatal(err)
}
out, err = runDkmsCommand(fmt.Sprintf("status mymodule/1.0 --sourcetree testdata/source-tree --dkmstree %s --installtree %s", dkmsTree, installTree))
if err != nil {
t.Fatal(err)
}
status = strings.TrimSpace(out)
if status != "Added" {
t.Fatalf("expected status Added, got %s", status)
}
}
func TestBuild(t *testing.T) {
dkmsTree := t.TempDir()
installTree := t.TempDir()
out, err := runDkmsCommand(fmt.Sprintf("status mymodule/1.0 --sourcetree testdata/source-tree --dkmstree %s --installtree %s", dkmsTree, installTree))
if err != nil {
t.Fatal(err)
}
status := strings.TrimSpace(out)
if status != "Broken" {
t.Fatalf("expected status Broken, got %s", status)
}
_, err = runDkmsCommand(fmt.Sprintf("build mymodule/1.0 --sourcetree testdata/source-tree --dkmstree %s --installtree %s", dkmsTree, installTree))
if err != nil {
t.Fatal(err)
}
out, err = runDkmsCommand(fmt.Sprintf("status mymodule/1.0 --sourcetree testdata/source-tree --dkmstree %s --installtree %s", dkmsTree, installTree))
if err != nil {
t.Fatal(err)
}
status = strings.TrimSpace(out)
if status != "Built" {
t.Fatalf("expected status Built, got %s", status)
}
}
func TestInstall(t *testing.T) {
dkmsTree := t.TempDir()
installTree := t.TempDir()
out, err := runDkmsCommand(fmt.Sprintf("status mymodule/1.0 --sourcetree testdata/source-tree --dkmstree %s --installtree %s", dkmsTree, installTree))
if err != nil {
t.Fatal(err)
}
status := strings.TrimSpace(out)
if status != "Broken" {
t.Fatalf("expected status Broken, got %s", status)
}
_, err = runDkmsCommand(fmt.Sprintf("install mymodule/1.0 --sourcetree testdata/source-tree --dkmstree %s --force-version-override --installtree %s", dkmsTree, installTree))
if err != nil {
t.Fatal(err)
}
out, err = runDkmsCommand(fmt.Sprintf("status mymodule/1.0 --sourcetree testdata/source-tree --dkmstree %s --installtree %s", dkmsTree, installTree))
if err != nil {
t.Fatal(err)
}
status = strings.TrimSpace(out)
if status != "Installed" {
t.Fatalf("expected status Installed, got %s", status)
}
}
func TestInstallLatest(t *testing.T) {
dkmsTree := t.TempDir()
installTree := t.TempDir()
out, err := runDkmsCommand(fmt.Sprintf("status mymodule/1.0 --sourcetree testdata/source-tree --dkmstree %s --installtree %s", dkmsTree, installTree))
if err != nil {
t.Fatal(err)
}
status := strings.TrimSpace(out)
if status != "Broken" {
t.Fatalf("expected status Broken, got %s", status)
}
_, err = runDkmsCommand(fmt.Sprintf("add mymodule/1.0 --sourcetree testdata/source-tree --dkmstree %s --force-version-override --installtree %s", dkmsTree, installTree))
if err != nil {
t.Fatal(err)
}
_, err = runDkmsCommand(fmt.Sprintf("install mymodule --latest --sourcetree testdata/source-tree --dkmstree %s --force-version-override --installtree %s", dkmsTree, installTree))
if err != nil {
t.Fatal(err)
}
out, err = runDkmsCommand(fmt.Sprintf("status mymodule --latest --sourcetree testdata/source-tree --dkmstree %s --installtree %s", dkmsTree, installTree))
if err != nil {
t.Fatal(err)
}
status = strings.TrimSpace(out)
if status != "Installed" {
t.Fatalf("expected status Installed, got %s", status)
}
}