diff options
author | Timothy Arceri <[email protected]> | 2017-02-21 16:34:49 +1100 |
---|---|---|
committer | Timothy Arceri <[email protected]> | 2017-02-22 08:40:14 +1100 |
commit | 0441e6bc8b377cf7a7b8441bca69121b98e30620 (patch) | |
tree | 55e375d4d9be01fc988d6710309585919b7953cc /src/compiler/glsl | |
parent | 207e3a6e4b6d70a965f2852204c35ccf42fe3533 (diff) |
util/disk_cache: create timestamp and gpu_id dirs when MESA_GLSL_CACHE_DIR is used
The make check test is also updated to make sure these dirs are created.
Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src/compiler/glsl')
-rw-r--r-- | src/compiler/glsl/tests/cache_test.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/compiler/glsl/tests/cache_test.c b/src/compiler/glsl/tests/cache_test.c index ba56441b92e..c4e6e369942 100644 --- a/src/compiler/glsl/tests/cache_test.c +++ b/src/compiler/glsl/tests/cache_test.c @@ -31,6 +31,8 @@ #include <errno.h> #include <stdarg.h> #include <inttypes.h> +#include <limits.h> +#include <unistd.h> #include "util/mesa-sha1.h" #include "util/disk_cache.h" @@ -40,6 +42,16 @@ bool error = false; #ifdef ENABLE_SHADER_CACHE static void +expect_true(bool result, const char *test) +{ + if (!result) { + fprintf(stderr, "Error: Test '%s' failed: Expected=true" + ", Actual=false\n", test); + error = true; + } +} + +static void expect_equal(uint64_t actual, uint64_t expected, const char *test) { if (actual != expected) { @@ -114,6 +126,26 @@ rmrf_local(const char *path) return nftw(path, remove_entry, 64, FTW_DEPTH | FTW_PHYS | FTW_MOUNT); } +static void +check_timestamp_and_gpu_id_directories_created(const char *cache_dir) +{ + bool sub_dirs_created = false; + + char buf[PATH_MAX]; + if (getcwd(buf, PATH_MAX)) { + char *full_path = NULL; + if (asprintf(&full_path, "%s%s", buf, ++cache_dir) != -1 ) { + struct stat sb; + if (stat(full_path, &sb) != -1 && S_ISDIR(sb.st_mode)) + sub_dirs_created = true; + + free(full_path); + } + } + + expect_true(sub_dirs_created, "create timestamp and gpu ip sub dirs"); +} + #define CACHE_TEST_TMP "./cache-test-tmp" static void @@ -152,6 +184,10 @@ test_disk_cache_create(void) cache = disk_cache_create("test", "make_check"); expect_non_null(cache, "disk_cache_create with XDG_CACHE_HOME set"); + check_timestamp_and_gpu_id_directories_created(CACHE_TEST_TMP + "/xdg-cache-home" + "/mesa/make_check/test"); + disk_cache_destroy(cache); /* Test with MESA_GLSL_CACHE_DIR set */ @@ -167,6 +203,10 @@ test_disk_cache_create(void) cache = disk_cache_create("test", "make_check"); expect_non_null(cache, "disk_cache_create with MESA_GLSL_CACHE_DIR set"); + check_timestamp_and_gpu_id_directories_created(CACHE_TEST_TMP + "/mesa-glsl-cache-dir" + "/mesa/make_check/test"); + disk_cache_destroy(cache); } |