diff options
author | Michael Pratt <mpratt@google.com> | 2019-12-03 12:45:43 -0800 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2019-12-03 12:47:03 -0800 |
commit | d7cc2480cb6e465ce01eb245e7edbad2c68c44d8 (patch) | |
tree | 584a6bf59ce62e76382010252fea5ba5fb1e143f /test/util/test_util_runfiles.cc | |
parent | 812189664cab0a17ae29095e4029e2f8762a6779 (diff) |
Add RunfilesPath to test_util
A few tests have their own ad-hoc implementations. Add a single common one.
PiperOrigin-RevId: 283601666
Diffstat (limited to 'test/util/test_util_runfiles.cc')
-rw-r--r-- | test/util/test_util_runfiles.cc | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/test/util/test_util_runfiles.cc b/test/util/test_util_runfiles.cc new file mode 100644 index 000000000..7210094eb --- /dev/null +++ b/test/util/test_util_runfiles.cc @@ -0,0 +1,46 @@ +// Copyright 2019 The gVisor 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. + +#include <iostream> +#include <string> + +#include "test/util/fs_util.h" +#include "test/util/test_util.h" +#include "tools/cpp/runfiles/runfiles.h" + +namespace gvisor { +namespace testing { + +std::string RunfilePath(std::string path) { + static const bazel::tools::cpp::runfiles::Runfiles* const runfiles = [] { + std::string error; + auto* runfiles = + bazel::tools::cpp::runfiles::Runfiles::CreateForTest(&error); + if (runfiles == nullptr) { + std::cerr << "Unable to find runfiles: " << error << std::endl; + } + return runfiles; + }(); + + if (!runfiles) { + // Can't find runfiles? This probably won't work, but __main__/path is our + // best guess. + return JoinPath("__main__", path); + } + + return runfiles->Rlocation(JoinPath("__main__", path)); +} + +} // namespace testing +} // namespace gvisor |