Add systemd resource budgets with TOML profiles
This commit is contained in:
commit
be8749a384
1 changed files with 2591 additions and 0 deletions
66
internal/budget/cli_test.go
Normal file
66
internal/budget/cli_test.go
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
package budget
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/BurntSushi/toml"
|
||||
)
|
||||
|
||||
func TestParseArgs(t *testing.T) {
|
||||
for _, action := range []string{"apply", "watch", "status"} {
|
||||
r, err := parseArgs([]string{action})
|
||||
if err != nil || r.action != action {
|
||||
t.Fatalf("%#v, %v", r, err)
|
||||
}
|
||||
}
|
||||
r, err := parseArgs([]string{"run", "compute", "--", "java", "-Xmx8G", "a b"})
|
||||
if err != nil || r.profile != "compute" || !reflect.DeepEqual(r.command, []string{"--", "java", "-Xmx8G", "a b"}) {
|
||||
t.Fatalf("%#v, %v", r, err)
|
||||
}
|
||||
r, err = parseArgs([]string{"set", "unrestricted", "editor"})
|
||||
if err != nil || r.profile != "unrestricted" || r.target != "editor" {
|
||||
t.Fatalf("%#v, %v", r, err)
|
||||
}
|
||||
for _, args := range [][]string{nil, {"unknown"}, {"apply", "extra"}, {"run"}, {"set", "compute"}, {"set", "compute", "editor", "extra"}} {
|
||||
if _, err := parseArgs(args); err == nil {
|
||||
t.Errorf("accepted %v", args)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestHelp(t *testing.T) {
|
||||
for _, flag := range []string{"-h", "--help"} {
|
||||
var out bytes.Buffer
|
||||
if err := Run([]string{flag}, &out); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !strings.Contains(out.String(), "run PROFILE") || !strings.Contains(out.String(), "~/.config/budget/profiles.toml") {
|
||||
t.Fatal(out.String())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestStatus(t *testing.T) {
|
||||
home := t.TempDir()
|
||||
t.Setenv("HOME", home)
|
||||
want := testConfig()
|
||||
var data bytes.Buffer
|
||||
if err := toml.NewEncoder(&data).Encode(want); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
put(t, homePaths(home).config, data.String())
|
||||
var out bytes.Buffer
|
||||
if err := Run([]string{"status"}, &out); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var got config
|
||||
if _, err := toml.Decode(out.String(), &got); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !reflect.DeepEqual(got, want) {
|
||||
t.Fatalf("got %#v, want %#v", got, want)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue