| // Copyright 2020 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "platform/test/paths.h" |
| #include "platform/test/paths_internal.h" |
| #include "util/osp_logging.h" |
| |
| namespace openscreen { |
| namespace { |
| |
| std::string ReadTestDataPath() { |
| std::string exe_path = GetExePath(); |
| OSP_DCHECK(!exe_path.empty()); |
| |
| // NOTE: This assumes that the executable is two directories above the source |
| // root (e.g. out/Debug/unittests). This is the standard layout GN expects |
| // but is also assumed by Chromium infra. |
| int slashes_found = 0; |
| int i = exe_path.size() - 1; |
| for (; i >= 0; --i) { |
| slashes_found += exe_path[i] == '/'; |
| if (slashes_found == 3) { |
| break; |
| } |
| } |
| OSP_DCHECK_EQ(slashes_found, 3); |
| |
| return exe_path.substr(0, i + 1) + OPENSCREEN_TEST_DATA_DIR; |
| } |
| |
| } // namespace |
| |
| const std::string& GetTestDataPath() { |
| static std::string data_path = ReadTestDataPath(); |
| return data_path; |
| } |
| |
| } // namespace openscreen |