| 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) | |
| } | |
| } |