summaryrefslogtreecommitdiffstats
path: root/src/compiler
diff options
context:
space:
mode:
authorTimothy Arceri <[email protected]>2017-02-21 16:34:49 +1100
committerTimothy Arceri <[email protected]>2017-02-22 08:40:14 +1100
commit0441e6bc8b377cf7a7b8441bca69121b98e30620 (patch)
tree55e375d4d9be01fc988d6710309585919b7953cc /src/compiler
parent207e3a6e4b6d70a965f2852204c35ccf42fe3533 (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')
-rw-r--r--src/compiler/glsl/tests/cache_test.c40
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);
}