dir.appendUnichar(SkPATH_SEPARATOR);
test_dir_with_file(reporter, dir, filename);
+ // Test using no filename.
+ test_dir_with_file(reporter, dir, SkString());
+
+ // Testing using no directory.
+ test_dir_with_file(reporter, SkString(), filename);
+
// Test with a sub directory.
dir.append("subDir");
test_dir_with_file(reporter, dir, filename);
// Basename of NULL is an empty string.
SkString empty = SkOSPath::SkBasename(NULL);
REPORTER_ASSERT(reporter, empty.size() == 0);
+
+ // Test that NULL can be used for the directory and filename.
+ SkString emptyPath = SkOSPath::SkPathJoin(NULL, NULL);
+ REPORTER_ASSERT(reporter, emptyPath.size() == 1);
+ REPORTER_ASSERT(reporter, emptyPath.contains(SkPATH_SEPARATOR));
}
#include "TestClassDef.h"
}
static void test_filestreams(skiatest::Reporter* reporter, const char* tmpDir) {
- SkString path;
- path.printf("%s%s", tmpDir, "wstream_test");
+ SkString path = SkOSPath::SkPathJoin(tmpDir, "wstream_test");
const char s[] = "abcdefghijklmnopqrstuvwxyz";
}
delete[] dst;
- if (!skiatest::Test::GetTmpDir().isEmpty()) {
- test_filestreams(reporter, skiatest::Test::GetTmpDir().c_str());
+ SkString tmpDir = skiatest::Test::GetTmpDir();
+ if (!tmpDir.isEmpty()) {
+ test_filestreams(reporter, tmpDir.c_str());
}
}
bool fAllowThreaded;
};
-static const char* make_canonical_dir_path(const char* path, SkString* storage) {
- if (path) {
- // clean it up so it always has a trailing searator
- size_t len = strlen(path);
- if (0 == len) {
- path = NULL;
- } else if (SkPATH_SEPARATOR != path[len - 1]) {
- // resize to len + 1, to make room for searator
- storage->set(path, len + 1);
- storage->writable_str()[len] = SkPATH_SEPARATOR;
- path = storage->c_str();
- }
- }
- return path;
-}
-
-static SkString gTmpDir;
-
-const SkString& Test::GetTmpDir() {
- return gTmpDir;
-}
-
-static SkString gResourcePath;
-
-const SkString& Test::GetResourcePath() {
- return gResourcePath;
-}
-
DEFINE_string2(match, m, NULL, "[~][^]substring[$] [...] of test name to run.\n" \
"Multiple matches may be separated by spaces.\n" \
"~ causes a matching test to always be skipped\n" \
DEFINE_int32(threads, SkThreadPool::kThreadPerCore,
"Run threadsafe tests on a threadpool with this many threads.");
+SkString Test::GetTmpDir() {
+ const char* tmpDir = FLAGS_tmpDir.isEmpty() ? NULL : FLAGS_tmpDir[0];
+ return SkString(tmpDir);
+}
+
+SkString Test::GetResourcePath() {
+ const char* resourcePath = FLAGS_resourcePath.isEmpty() ? NULL : FLAGS_resourcePath[0];
+ return SkString(resourcePath);
+}
+
// Deletes self when run.
class SkTestRunnable : public SkRunnable {
public:
SkCommandLineFlags::SetUsage("");
SkCommandLineFlags::Parse(argc, argv);
- if (!FLAGS_tmpDir.isEmpty()) {
- make_canonical_dir_path(FLAGS_tmpDir[0], &gTmpDir);
- }
- if (!FLAGS_resourcePath.isEmpty()) {
- make_canonical_dir_path(FLAGS_resourcePath[0], &gResourcePath);
- }
-
#if SK_ENABLE_INST_COUNT
gPrintInstCount = true;
#endif
header.appendf(" %s", FLAGS_match[index]);
}
}
- if (!gTmpDir.isEmpty()) {
- header.appendf(" --tmpDir %s", gTmpDir.c_str());
+ SkString tmpDir = Test::GetTmpDir();
+ if (!tmpDir.isEmpty()) {
+ header.appendf(" --tmpDir %s", tmpDir.c_str());
}
- if (!gResourcePath.isEmpty()) {
- header.appendf(" --resourcePath %s", gResourcePath.c_str());
+ SkString resourcePath = Test::GetResourcePath();
+ if (!resourcePath.isEmpty()) {
+ header.appendf(" --resourcePath %s", resourcePath.c_str());
}
#ifdef SK_DEBUG
header.append(" SK_DEBUG");