blob: 00c4bc4cfa31b918f46812abbab93d9c51a7f026 [file]
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)
}
}
func TestInstallLatestInRange(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 --min-version 1.1 --sourcetree testdata/source-tree --dkmstree %s --force-version-override --installtree %s", dkmsTree, installTree))
if err == nil {
t.Fatalf("expected installation to fail when --min-version greater than all package versions")
}
_, err = runDkmsCommand(fmt.Sprintf("install mymodule --latest --max-version 0.9 --sourcetree testdata/source-tree --dkmstree %s --force-version-override --installtree %s", dkmsTree, installTree))
if err == nil {
t.Fatalf("expected installation to fail when --min-version less than all package versions")
}
status = strings.TrimSpace(out)
if status != "Broken" {
t.Fatalf("expected status Broken, got %s", status)
}
_, err = runDkmsCommand(fmt.Sprintf("install mymodule --latest --min-version 0.9 --max-version 1.1 --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)
}
}