mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-06-05 06:03:34 +00:00
tools/src/utils: Add location.go
Contains helpers for obtaining the source location of the caller Bug: dawn:1342 Change-Id: I6eddf9140d10bc7889260392e04c3e2adec715d8 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/87220 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Ben Clayton <bclayton@google.com>
This commit is contained in:
parent
649687497f
commit
ba9404dac2
39
tools/src/utils/location.go
Normal file
39
tools/src/utils/location.go
Normal file
@ -0,0 +1,39 @@
|
||||
// Copyright 2022 The Tint Authors.
|
||||
//
|
||||
// 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 utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
)
|
||||
|
||||
// ThisLine returns the filepath and line number of the calling function
|
||||
func ThisLine() string {
|
||||
_, file, line, ok := runtime.Caller(1)
|
||||
if !ok {
|
||||
return ""
|
||||
}
|
||||
return fmt.Sprintf("%v:%v", file, line)
|
||||
}
|
||||
|
||||
// ThisDir returns the directory of the caller function
|
||||
func ThisDir() string {
|
||||
_, file, _, ok := runtime.Caller(1)
|
||||
if !ok {
|
||||
return ""
|
||||
}
|
||||
return filepath.Dir(file)
|
||||
}
|
36
tools/src/utils/location_test.go
Normal file
36
tools/src/utils/location_test.go
Normal file
@ -0,0 +1,36 @@
|
||||
// Copyright 2022 The Tint Authors.
|
||||
//
|
||||
// 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 utils_test
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"dawn.googlesource.com/dawn/tools/src/utils"
|
||||
)
|
||||
|
||||
func TestThisLine(t *testing.T) {
|
||||
td := utils.ThisLine()
|
||||
if !strings.HasSuffix(td, "location_test.go:25") {
|
||||
t.Errorf("TestThisLine() returned %v", td)
|
||||
}
|
||||
}
|
||||
|
||||
func TestThisDir(t *testing.T) {
|
||||
td := utils.ThisDir()
|
||||
if !strings.HasSuffix(td, "utils") {
|
||||
t.Errorf("ThisDir() returned %v", td)
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user