aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar scroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-06-06 14:59:56 +0000
committerGravatar scroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-06-06 14:59:56 +0000
commitc76218d5edf08f1b73dc06a92e3af52ed268e7ba (patch)
tree2f569e6427743a8e18c06f02eb4c040063b2630d
parent7d05ac9508bff5b1c62fec42dacb8aabd4cf8adb (diff)
Fix bug in setting directories for tests.
make_canonical_dir_path only worked if the provided directory did not end with a slash. Remove this function, and call SkPathJoin instead. Update the documentation to acknowledge that this is an acceptable use of SkPathJoin, and update its test. R=epoger@google.com Review URL: https://codereview.chromium.org/16098011 git-svn-id: http://skia.googlecode.com/svn/trunk@9458 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r--include/core/SkOSFile.h4
-rw-r--r--tests/OSPathTest.cpp11
-rw-r--r--tests/StreamTest.cpp8
-rw-r--r--tests/Test.h4
-rw-r--r--tests/skia_test.cpp55
5 files changed, 36 insertions, 46 deletions
diff --git a/include/core/SkOSFile.h b/include/core/SkOSFile.h
index f8ce06bcaf..b75fe6cf7c 100644
--- a/include/core/SkOSFile.h
+++ b/include/core/SkOSFile.h
@@ -138,7 +138,9 @@ class SkOSPath {
public:
/**
* Assembles rootPath and relativePath into a single path, like this:
- * rootPath/relativePath
+ * rootPath/relativePath.
+ * It is okay to call with a NULL rootPath and/or relativePath. A path
+ * separator will still be inserted.
*
* Uses SkPATH_SEPARATOR, to work on all platforms.
*/
diff --git a/tests/OSPathTest.cpp b/tests/OSPathTest.cpp
index 96ff8a712d..5ae32ebc0d 100644
--- a/tests/OSPathTest.cpp
+++ b/tests/OSPathTest.cpp
@@ -59,6 +59,12 @@ static void test_os_path_utils_tests(skiatest::Reporter* reporter) {
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);
@@ -71,6 +77,11 @@ static void test_os_path_utils_tests(skiatest::Reporter* reporter) {
// 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"
diff --git a/tests/StreamTest.cpp b/tests/StreamTest.cpp
index 8f38f46bea..00c079abc0 100644
--- a/tests/StreamTest.cpp
+++ b/tests/StreamTest.cpp
@@ -35,8 +35,7 @@ static void test_loop_stream(skiatest::Reporter* reporter, SkStream* stream,
}
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";
@@ -98,8 +97,9 @@ static void TestWStream(skiatest::Reporter* reporter) {
}
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());
}
}
diff --git a/tests/Test.h b/tests/Test.h
index dfa12a6dfc..8cb23c1b48 100644
--- a/tests/Test.h
+++ b/tests/Test.h
@@ -75,9 +75,9 @@ namespace skiatest {
bool passed() const { return fPassed; }
SkMSec elapsedMs() const { return fElapsed; }
- static const SkString& GetTmpDir();
+ static SkString GetTmpDir();
- static const SkString& GetResourcePath();
+ static SkString GetResourcePath();
virtual bool isThreadsafe() const { return true; }
diff --git a/tests/skia_test.cpp b/tests/skia_test.cpp
index 238252d737..8cae656089 100644
--- a/tests/skia_test.cpp
+++ b/tests/skia_test.cpp
@@ -112,34 +112,6 @@ private:
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" \
@@ -156,6 +128,16 @@ DEFINE_bool2(verbose, v, false, "enable verbose output.");
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:
@@ -218,13 +200,6 @@ int tool_main(int argc, char** argv) {
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
@@ -239,11 +214,13 @@ int tool_main(int argc, char** argv) {
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");