1 // Copyright 2010-2018, Google Inc. 2 // All rights reserved. 3 // 4 // Redistribution and use in source and binary forms, with or without 5 // modification, are permitted provided that the following conditions are 6 // met: 7 // 8 // * Redistributions of source code must retain the above copyright 9 // notice, this list of conditions and the following disclaimer. 10 // * Redistributions in binary form must reproduce the above 11 // copyright notice, this list of conditions and the following disclaimer 12 // in the documentation and/or other materials provided with the 13 // distribution. 14 // * Neither the name of Google Inc. nor the names of its 15 // contributors may be used to endorse or promote products derived from 16 // this software without specific prior written permission. 17 // 18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 30 #ifndef MOZC_TESTING_BASE_PUBLIC_MOZCTEST_H_ 31 #define MOZC_TESTING_BASE_PUBLIC_MOZCTEST_H_ 32 33 #include <string> 34 #include <vector> 35 36 #include "base/port.h" 37 #include "base/string_piece.h" 38 39 namespace mozc { 40 namespace testing { 41 42 // Gets an absolute path of test resource from path components relative to 43 // mozc's root directory. 44 // 45 // Example: 46 // 47 // string path = GetSourcePath({"data", "test", "dictionary", "id.def"}); 48 // 49 // This call gives the absolute path to data/test/dictionary/id.def. (Note that 50 // the actual result is separated by OS-specific path separator.) 51 string GetSourcePath(const std::vector<StringPiece> &components); 52 53 // Gets an absolute path of test resource file. If the file doesn't exist, 54 // terminates the program. 55 string GetSourceFileOrDie(const std::vector<StringPiece> &components); 56 57 // Gets an absolute path of test resource directory. If the directory doesn't 58 // exist, terminates the program. 59 string GetSourceDirOrDie(const std::vector<StringPiece> &components); 60 61 // Gets absolute paths of test resource files in a directory. If one of files 62 // don't exit, terminates the program. 63 // 64 // vector<string> paths = GetSourceDirOrDie({"my", "dir"}, {"file1", "file2"}); 65 // paths = { 66 // "/test/srcdir/my/dir/file1", 67 // "/test/srcdir/my/dir/file2", 68 // }; 69 std::vector<string> GetSourceFilesInDirOrDie( 70 const std::vector<StringPiece> &dir_components, 71 const std::vector<StringPiece> &filenames); 72 73 // Temporarily sets the user profile directory to FLAGS_test_tmpdir during the 74 // scope. The original directory is restored at the end of the scope. 75 class ScopedTmpUserProfileDirectory { 76 public: 77 ScopedTmpUserProfileDirectory(); 78 ~ScopedTmpUserProfileDirectory(); 79 80 private: 81 const string original_dir_; 82 }; 83 84 } // namespace testing 85 } // namespace mozc 86 87 #endif // MOZC_TESTING_BASE_PUBLIC_MOZCTEST_H_ 88