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