| // Copyright (C) 2016 The Android Open Source Project |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| package log_test |
| |
| import ( |
| "bytes" |
| "errors" |
| "testing" |
| |
| "android.googlesource.com/platform/tools/gpu/framework/log" |
| ) |
| |
| var greetingError = errors.New("greeting") |
| |
| func TestHelpers(t *testing.T) { |
| buf := &bytes.Buffer{} |
| ctx := log.Background().PreFilter(log.NoLimit).Filter(log.Pass).Handler(log.Writer(log.Normal, buf)). |
| Recorder(log.StacktraceOnError).StackFilter(LogTestStackFilter) |
| expect := func(s string) { |
| got := buf.String() |
| buf.Reset() |
| if s != got { |
| t.Errorf("Got %v expected %v", got, s) |
| } |
| } |
| ctx.Emergency().Log("Hello") |
| expect("Emergency:log_test.go:38:Hello\n") |
| ctx.Alert().Log("Hello") |
| expect("Alert:log_test.go:40:Hello\n") |
| ctx.Critical().Log("Hello") |
| expect("Critical:log_test.go:42:Hello\n") |
| ctx.Error().Log("Hello") |
| expect("Error:log_test.go:44:Hello\n") |
| ctx.Fail(greetingError, "Hello") |
| expect("Error:log_test.go:46:Failed:Hello<greeting>\n") |
| ctx.Cause(greetingError).Critical().Log("Goodbye") |
| expect("Critical:log_test.go:48:Failed:Goodbye<greeting>\n") |
| ctx.Warning().Log("Hello") |
| expect("Warning:Hello\n") |
| ctx.Notice().Log("Hello") |
| expect("Notice:Hello\n") |
| ctx.Print("Hello") |
| expect("Info:Hello\n") |
| ctx.Debug().Log("Hello") |
| expect("Debug:Hello\n") |
| |
| ctx.Info().S("string", "one").I("int", 1).F("float", 1.0).Log("Hello") |
| expect("Info:Hello:string=one,int=1,float=1\n") |
| ctx.S("string", "one").I("int", 1).F("float", 1.0).Info().Log("Hello") |
| expect("Info:Hello:string=one,int=1,float=1\n") |
| |
| v := errors.New("test") |
| ctx.Info().V("value", v).T("type", v).Log("Hello") |
| expect("Info:Hello:value=test,type=*errors.errorString\n") |
| ctx.V("value", v).T("type", v).Info().Log("Hello") |
| expect("Info:Hello:value=test,type=*errors.errorString\n") |
| |
| ctx.Info().Tag("a_tag").Log("Hello") |
| expect("Info:a_tag:Hello\n") |
| ctx.Tag("b_tag").Info().Log("Hello") |
| expect("Info:b_tag:Hello\n") |
| } |
| |
| func LogTestStackFilter(entry *log.StackEntry) bool { |
| return entry.Package != "android.googlesource.com/platform/tools/gpu/framework/log_test" |
| } |