| package utils |
| |
| import ( |
| "bytes" |
| "testing" |
| |
| "golang.org/x/sys/unix" |
| ) |
| |
| var labelTest = []struct { |
| labels []string |
| query string |
| expVal string |
| expOk bool |
| }{ |
| {[]string{"bundle=/path/to/bundle"}, "bundle", "/path/to/bundle", true}, |
| {[]string{"test=a", "test=b"}, "bundle", "", false}, |
| {[]string{"bundle=a", "test=b", "bundle=c"}, "bundle", "a", true}, |
| {[]string{"", "test=a", "bundle=b"}, "bundle", "b", true}, |
| {[]string{"test", "bundle=a"}, "bundle", "a", true}, |
| {[]string{"test=a", "bundle="}, "bundle", "", true}, |
| } |
| |
| func TestSearchLabels(t *testing.T) { |
| for _, tt := range labelTest { |
| v, ok := SearchLabels(tt.labels, tt.query) |
| if ok != tt.expOk { |
| t.Errorf("expected ok: %v, got %v", tt.expOk, ok) |
| continue |
| } |
| if v != tt.expVal { |
| t.Errorf("expected value '%s' for query '%s'; got '%s'", tt.expVal, tt.query, v) |
| } |
| } |
| } |
| |
| func TestExitStatus(t *testing.T) { |
| status := unix.WaitStatus(0) |
| ex := ExitStatus(status) |
| if ex != 0 { |
| t.Errorf("expected exit status to equal 0 and received %d", ex) |
| } |
| } |
| |
| func TestExitStatusSignaled(t *testing.T) { |
| status := unix.WaitStatus(2) |
| ex := ExitStatus(status) |
| if ex != 130 { |
| t.Errorf("expected exit status to equal 130 and received %d", ex) |
| } |
| } |
| |
| func TestWriteJSON(t *testing.T) { |
| person := struct { |
| Name string |
| Age int |
| }{ |
| Name: "Alice", |
| Age: 30, |
| } |
| |
| var b bytes.Buffer |
| err := WriteJSON(&b, person) |
| if err != nil { |
| t.Fatal(err) |
| } |
| |
| expected := `{"Name":"Alice","Age":30}` |
| if b.String() != expected { |
| t.Errorf("expected to write %s but was %s", expected, b.String()) |
| } |
| } |