| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| 11 #include <stdio.h> | 11 #include <stdio.h> |
| 12 | 12 |
| 13 // File utilities for testing purposes. | |
| 14 // | |
| 15 // The ProjectRootPath() method is a convenient way of getting an absolute | |
| 16 // path to the project source tree root directory. Using this, it is easy to | |
| 17 // refer to test resource files in a portable way. | |
| 18 // | |
| 19 // Notice that even if Windows platforms use backslash as path delimiter, it is | |
| 20 // also supported to use slash, so there's no need for #ifdef checks in test | |
| 21 // code for setting up the paths to the resource files. | |
| 22 // | |
| 23 // Example use: | |
| 24 // Assume we have the following code being used in a test source file: | |
| 25 // const std::string kInputFile = webrtc::test::ProjectRootPath() + | |
| 26 // "test/data/voice_engine/audio_long16.wav"; | |
| 27 // // Use the kInputFile for the tests... | |
| 28 // | |
| 29 // Then here's some example outputs for different platforms: | |
| 30 // Linux: | |
| 31 // * Source tree located in /home/user/webrtc/trunk | |
| 32 // * Test project located in /home/user/webrtc/trunk/src/testproject | |
| 33 // * Test binary compiled as: | |
| 34 // /home/user/webrtc/trunk/out/Debug/testproject_unittests | |
| 35 // Then ProjectRootPath() will return /home/user/webrtc/trunk/ no matter if | |
| 36 // the test binary is executed from standing in either of: | |
| 37 // /home/user/webrtc/trunk | |
| 38 // or | |
| 39 // /home/user/webrtc/trunk/out/Debug | |
| 40 // (or any other directory below the trunk for that matter). | |
| 41 // | |
| 42 // Windows: | |
| 43 // * Source tree located in C:\Users\user\webrtc\trunk | |
| 44 // * Test project located in C:\Users\user\webrtc\trunk\src\testproject | |
| 45 // * Test binary compiled as: | |
| 46 // C:\Users\user\webrtc\trunk\src\testproject\Debug\testproject_unittests.exe | |
| 47 // Then ProjectRootPath() will return C:\Users\user\webrtc\trunk\ when the | |
| 48 // test binary is executed from inside Visual Studio. | |
| 49 // It will also return the same path if the test is executed from a command | |
| 50 // prompt standing in C:\Users\user\webrtc\trunk\src\testproject\Debug | |
| 51 // | |
| 52 // Mac: | |
| 53 // * Source tree located in /Users/user/webrtc/trunk | |
| 54 // * Test project located in /Users/user/webrtc/trunk/src/testproject | |
| 55 // * Test binary compiled as: | |
| 56 // /Users/user/webrtc/trunk/xcodebuild/Debug/testproject_unittests | |
| 57 // Then ProjectRootPath() will return /Users/user/webrtc/trunk/ no matter if | |
| 58 // the test binary is executed from standing in either of: | |
| 59 // /Users/user/webrtc/trunk | |
| 60 // or | |
| 61 // /Users/user/webrtc/trunk/out/Debug | |
| 62 // (or any other directory below the trunk for that matter). | |
| 63 | |
| 64 #ifndef WEBRTC_TEST_TESTSUPPORT_FILEUTILS_H_ | 13 #ifndef WEBRTC_TEST_TESTSUPPORT_FILEUTILS_H_ |
| 65 #define WEBRTC_TEST_TESTSUPPORT_FILEUTILS_H_ | 14 #define WEBRTC_TEST_TESTSUPPORT_FILEUTILS_H_ |
| 66 | 15 |
| 67 #include <string> | 16 #include <string> |
| 68 | 17 |
| 69 namespace webrtc { | 18 namespace webrtc { |
| 70 namespace test { | 19 namespace test { |
| 71 | 20 |
| 72 // This is the "directory" returned if the ProjectPath() function fails | 21 // This is the "directory" returned if the ProjectPath() function fails |
| 73 // to find the project root. | 22 // to find the project root. |
| 74 extern const char* kCannotFindProjectRootDir; | 23 extern const char* kCannotFindProjectRootDir; |
| 75 | 24 |
| 76 // Finds the root dir of the project, to be able to set correct paths to | |
| 77 // resource files used by tests. | |
| 78 // For desktop, we assume that the project root is two levels above (i.e. the | |
| 79 // current working directory + /../../) | |
| 80 // For Android, it is assumed to be /sdcard/chromium_tests_root/ | |
| 81 // For iOS, the resource files are assumed to be included in the test's .app | |
| 82 // bundle. | |
| 83 // If the current working directory is above the project root dir, it will not | |
| 84 // be found. | |
| 85 // | |
| 86 // If symbolic links occur in the path they will be resolved and the actual | |
| 87 // directory will be returned. | |
| 88 // | |
| 89 // Returns the absolute path to the project root dir (usually the trunk dir) | |
| 90 // WITH a trailing path delimiter. | |
| 91 // If the project root is not found, the string specified by | |
| 92 // kCannotFindProjectRootDir is returned. | |
| 93 std::string ProjectRootPath(); | |
| 94 | |
| 95 // Creates and returns the absolute path to the output directory where log files | 25 // Creates and returns the absolute path to the output directory where log files |
| 96 // and other test artifacts should be put. The output directory is generally a | 26 // and other test artifacts should be put. The output directory is generally a |
| 97 // directory named "out" at the top-level of the project, i.e. a subfolder to | 27 // directory named "out" at the top-level of the project, i.e. a subfolder to |
| 98 // the path returned by ProjectRootPath(). The exception is Android where we use | 28 // the path returned by ProjectRootPath(). The exception is Android where we use |
| 99 // /sdcard/ instead. | 29 // /sdcard/ instead. |
| 100 // | 30 // |
| 101 // Details described for ProjectRootPath() apply here too. | 31 // If symbolic links occur in the path they will be resolved and the actual |
| 32 // directory will be returned. |
| 102 // | 33 // |
| 103 // Returns the path WITH a trailing path delimiter. If the project root is not | 34 // Returns the path WITH a trailing path delimiter. If the project root is not |
| 104 // found, the current working directory ("./") is returned as a fallback. | 35 // found, the current working directory ("./") is returned as a fallback. |
| 105 std::string OutputPath(); | 36 std::string OutputPath(); |
| 106 | 37 |
| 107 // Generates an empty file with a unique name in the specified directory and | 38 // Generates an empty file with a unique name in the specified directory and |
| 108 // returns the file name and path. | 39 // returns the file name and path. |
| 109 std::string TempFilename(const std::string &dir, const std::string &prefix); | 40 std::string TempFilename(const std::string &dir, const std::string &prefix); |
| 110 | 41 |
| 111 // Returns a path to a resource file for the currently executing platform. | 42 // Returns a path to a resource file for the currently executing platform. |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 // but can also be an absolute path. The intention with this function is to pass | 82 // but can also be an absolute path. The intention with this function is to pass |
| 152 // the argv[0] being sent into the main function to make it possible for | 83 // the argv[0] being sent into the main function to make it possible for |
| 153 // fileutils.h to find the correct project paths even when the working directory | 84 // fileutils.h to find the correct project paths even when the working directory |
| 154 // is outside the project tree (which happens in some cases). | 85 // is outside the project tree (which happens in some cases). |
| 155 void SetExecutablePath(const std::string& path_to_executable); | 86 void SetExecutablePath(const std::string& path_to_executable); |
| 156 | 87 |
| 157 } // namespace test | 88 } // namespace test |
| 158 } // namespace webrtc | 89 } // namespace webrtc |
| 159 | 90 |
| 160 #endif // WEBRTC_TEST_TESTSUPPORT_FILEUTILS_H_ | 91 #endif // WEBRTC_TEST_TESTSUPPORT_FILEUTILS_H_ |
| OLD | NEW |