1*3f982cf4SFabien Sanglard // Copyright 2020 The Chromium Authors. All rights reserved. 2*3f982cf4SFabien Sanglard // Use of this source code is governed by a BSD-style license that can be 3*3f982cf4SFabien Sanglard // found in the LICENSE file. 4*3f982cf4SFabien Sanglard 5*3f982cf4SFabien Sanglard #include "platform/test/paths.h" 6*3f982cf4SFabien Sanglard #include "platform/test/paths_internal.h" 7*3f982cf4SFabien Sanglard #include "util/osp_logging.h" 8*3f982cf4SFabien Sanglard 9*3f982cf4SFabien Sanglard namespace openscreen { 10*3f982cf4SFabien Sanglard namespace { 11*3f982cf4SFabien Sanglard ReadTestDataPath()12*3f982cf4SFabien Sanglardstd::string ReadTestDataPath() { 13*3f982cf4SFabien Sanglard std::string exe_path = GetExePath(); 14*3f982cf4SFabien Sanglard OSP_DCHECK(!exe_path.empty()); 15*3f982cf4SFabien Sanglard 16*3f982cf4SFabien Sanglard // NOTE: This assumes that the executable is two directories above the source 17*3f982cf4SFabien Sanglard // root (e.g. out/Debug/unittests). This is the standard layout GN expects 18*3f982cf4SFabien Sanglard // but is also assumed by Chromium infra. 19*3f982cf4SFabien Sanglard int slashes_found = 0; 20*3f982cf4SFabien Sanglard int i = exe_path.size() - 1; 21*3f982cf4SFabien Sanglard for (; i >= 0; --i) { 22*3f982cf4SFabien Sanglard slashes_found += exe_path[i] == '/'; 23*3f982cf4SFabien Sanglard if (slashes_found == 3) { 24*3f982cf4SFabien Sanglard break; 25*3f982cf4SFabien Sanglard } 26*3f982cf4SFabien Sanglard } 27*3f982cf4SFabien Sanglard OSP_DCHECK_EQ(slashes_found, 3); 28*3f982cf4SFabien Sanglard 29*3f982cf4SFabien Sanglard return exe_path.substr(0, i + 1) + OPENSCREEN_TEST_DATA_DIR; 30*3f982cf4SFabien Sanglard } 31*3f982cf4SFabien Sanglard 32*3f982cf4SFabien Sanglard } // namespace 33*3f982cf4SFabien Sanglard GetTestDataPath()34*3f982cf4SFabien Sanglardconst std::string& GetTestDataPath() { 35*3f982cf4SFabien Sanglard static std::string data_path = ReadTestDataPath(); 36*3f982cf4SFabien Sanglard return data_path; 37*3f982cf4SFabien Sanglard } 38*3f982cf4SFabien Sanglard 39*3f982cf4SFabien Sanglard } // namespace openscreen 40