]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Introduce cc_reset(), enabling the test suite to reset global state
authorJoel Rosdahl <joel@rosdahl.net>
Fri, 30 Jul 2010 19:49:33 +0000 (21:49 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Sun, 1 Aug 2010 15:20:15 +0000 (17:20 +0200)
ccache.c
ccache.h
test/framework.c

index e9d291275dd9fced3f53a446f0f5236a4f45f56e..aac48ef685399cd06609df98bf2ed2d630d0b23a 100644 (file)
--- a/ccache.c
+++ b/ccache.c
@@ -1812,6 +1812,40 @@ out:
        return result;
 }
 
+/* Reset the global state. Used by the test suite. */
+void cc_reset(void)
+{
+       free(current_working_dir); current_working_dir = NULL;
+       free(cache_dir); cache_dir = NULL;
+       cache_logfile = NULL;
+       base_dir = NULL;
+       args_free(orig_args); orig_args = NULL;
+       free(input_file); input_file = NULL;
+       output_obj = NULL;
+       free(output_dep); output_dep = NULL;
+       free(cached_obj_hash); cached_obj_hash = NULL;
+       free(cached_obj); cached_obj = NULL;
+       free(cached_stderr); cached_stderr = NULL;
+       free(cached_dep); cached_dep = NULL;
+       free(manifest_path); manifest_path = NULL;
+       time_of_compilation = 0;
+       sloppiness = 0;
+       if (included_files) {
+               hashtable_destroy(included_files, 1); included_files = NULL;
+       }
+       generating_dependencies = 0;
+       i_extension = NULL;
+       i_tmpfile = NULL;
+       direct_i_file = 0;
+       free(cpp_stderr); cpp_stderr = NULL;
+       free(stats_file); stats_file = NULL;
+       enable_unify = 0;
+       enable_direct = 1;
+       enable_compression = 0;
+       nlevels = 2;
+       compile_preprocessed_source_code = 0;
+}
+
 static unsigned parse_sloppiness(char *p)
 {
        unsigned result = 0;
@@ -2153,7 +2187,9 @@ int ccache_main(int argc, char *argv[])
 
        current_working_dir = get_cwd();
        cache_dir = getenv("CCACHE_DIR");
-       if (!cache_dir) {
+       if (cache_dir) {
+               cache_dir = x_strdup(cache_dir);
+       } else {
                const char *home_directory = get_home_directory();
                if (home_directory) {
                        cache_dir = format("%s/.ccache", home_directory);
index 5b8d287d9a7f7c45f96d0a94daf68cc3fe2c48fc..bbde9070daab67e31e3ea2fee6362baf987cf2e1 100644 (file)
--- a/ccache.h
+++ b/ccache.h
@@ -206,6 +206,7 @@ int args_equal(struct args *args1, struct args *args2);
 
 int cc_process_args(struct args *orig_args, struct args **preprocessor_args,
                     struct args **compiler_args);
+void cc_reset(void);
 
 /* ------------------------------------------------------------------------- */
 
index a5328afb2078412b4e997959d98abab9f5eda789..fbde7dac7cfc0ea6a2ed5c493ee370f54d5bf456 100644 (file)
@@ -151,6 +151,7 @@ void cct_test_begin(const char *name)
        cct_chdir(name);
        current_test = name;
        failed_asserts_before_test = failed_asserts;
+       cc_reset();
 }
 
 void cct_test_end()