diff options
-rw-r--r-- | tools/skpdiff/SkDiffContext.cpp | 7 | ||||
-rw-r--r-- | tools/skpdiff/skpdiff_util.cpp | 23 | ||||
-rw-r--r-- | tools/skpdiff/skpdiff_util.h | 7 |
3 files changed, 35 insertions, 2 deletions
diff --git a/tools/skpdiff/SkDiffContext.cpp b/tools/skpdiff/SkDiffContext.cpp index cf2654ac05..f551ff3508 100644 --- a/tools/skpdiff/SkDiffContext.cpp +++ b/tools/skpdiff/SkDiffContext.cpp @@ -164,12 +164,15 @@ void SkDiffContext::outputRecords(SkWStream& stream, bool useJSONP) { while (NULL != currentRecord) { stream.writeText(" {\n"); + SkString baselineAbsPath = get_absolute_path(currentRecord->fBaselinePath); + SkString testAbsPath = get_absolute_path(currentRecord->fTestPath); + stream.writeText(" \"baselinePath\": \""); - stream.writeText(currentRecord->fBaselinePath.c_str()); + stream.writeText(baselineAbsPath.c_str()); stream.writeText("\",\n"); stream.writeText(" \"testPath\": \""); - stream.writeText(currentRecord->fTestPath.c_str()); + stream.writeText(testAbsPath.c_str()); stream.writeText("\",\n"); stream.writeText(" \"diffs\": [\n"); diff --git a/tools/skpdiff/skpdiff_util.cpp b/tools/skpdiff/skpdiff_util.cpp index 0047959b60..5b19c7311d 100644 --- a/tools/skpdiff/skpdiff_util.cpp +++ b/tools/skpdiff/skpdiff_util.cpp @@ -15,10 +15,15 @@ # include <glob.h> #endif +#if SK_BUILD_FOR_MAC +# include <sys/syslimits.h> // PATH_MAX is here for Macs +#endif + #if SK_BUILD_FOR_WIN32 # include <windows.h> #endif +#include <stdlib.h> #include <time.h> #include "SkOSFile.h" #include "skpdiff_util.h" @@ -181,3 +186,21 @@ bool glob_files(const char globPattern[], SkTArray<SkString>* entries) { return false; #endif } + +SkString get_absolute_path(const SkString& path) { +#if SK_BUILD_FOR_MAC || SK_BUILD_FOR_UNIX || SK_BUILD_FOR_ANDROID + SkString fullPath(PATH_MAX + 1); + if (realpath(path.c_str(), fullPath.writable_str()) == NULL) { + fullPath.reset(); + } + return fullPath; +#elif SK_BUILD_FOR_WIN32 + SkString fullPath(MAX_PATH); + if (_fullpath(fullPath.writable_str(), path.c_str(), MAX_PATH) == NULL) { + fullPath.reset(); + } + return fullPath; +#else + return SkString(); +#endif +} diff --git a/tools/skpdiff/skpdiff_util.h b/tools/skpdiff/skpdiff_util.h index 9df1bc0b2a..8750bf6b54 100644 --- a/tools/skpdiff/skpdiff_util.h +++ b/tools/skpdiff/skpdiff_util.h @@ -49,5 +49,12 @@ bool get_directory(const char path[], SkTArray<SkString>* entries); */ bool glob_files(const char globPattern[], SkTArray<SkString>* entries); +/** + * Gets the absolute version of the given path. + * @param path The absolute or relative path to expand + * @return The absolute path of the given path on success, or an empty string on failure. + */ +SkString get_absolute_path(const SkString& path); + #endif |