def test_file_signature(self):
     file1 = os.path.join(autoconfig.data_directory, "decl_cache_file1.txt")
     file1_dup = os.path.join(autoconfig.data_directory, "decl_cache_file1_duplicate.txt")
     file2 = os.path.join(autoconfig.data_directory, "decl_cache_file2.txt")
     sig1 = declarations_cache.file_signature(file1)
     sig1_dup = declarations_cache.file_signature(file1_dup)
     sig2 = declarations_cache.file_signature(file2)
     self.assert_(sig1 == sig1_dup)
     self.assert_(sig1 != sig2)
 def test_file_signature(self):
     file1 = os.path.join(autoconfig.data_directory, 'decl_cache_file1.txt')
     file1_dup = os.path.join(autoconfig.data_directory,
                              'decl_cache_file1_duplicate.txt')
     file2 = os.path.join(autoconfig.data_directory, 'decl_cache_file2.txt')
     sig1 = declarations_cache.file_signature(file1)
     sig1_dup = declarations_cache.file_signature(file1_dup)
     sig2 = declarations_cache.file_signature(file2)
     self.assertTrue(sig1 == sig1_dup)
     self.assertTrue(sig1 != sig2)
 def getCachedTree(self, sourceFiles, configSig):
     """ Attempt to read a cache decl tree from the cache.
     
         sourceFiles - A list of source files for the module builder
         configuration - A pygccxml configuration object being used.
         returns: None if failed sigs or none found.
     """
     ret_val = None
     
     if os.path.exists(self.cacheFileName):
         src_and_cfg_digest = self.computeSrcAndCfgDigest(sourceFiles, configSig)
         
         self.logger.info("Attempting to load module cache file: %s"%self.cacheFileName)
         cache_file = file(self.cacheFileName, 'rb')
         (cached_src_and_cfg_digest, includes_digest, includes) = cPickle.load(cache_file)
         
         if (cached_src_and_cfg_digest == src_and_cfg_digest):                
             inc_sig = md5.new()
             for f in [ x for x in includes if os.path.isfile(x)]:
                 inc_sig.update(file_signature(f))
             if inc_sig.hexdigest() == includes_digest:
                 load_start_time = time.time()
                 self.logger.info("   Signatures matched, loading data.")
                 ret_val = cPickle.load(cache_file)
                 self._module_builder_t__code_creator = None
                 self.logger.info("   Loading complete. %ss"%(time.time()-load_start_time))
             else:
                 self.logger.info("    Sig mis-match: Implicit include files changes.")
         else:
             self.logger.info("   Sig mis-match: Source files or configuration changed.")
         cache_file.close()
         
         return ret_val
 def dumpCachedTree(self, sourceFiles, configSig, declTree):
     self.logger.info("Writing module cache... ")
     cache_file = file(self.cacheFileName,'wb')
     
     src_and_cfg_digest = self.computeSrcAndCfgDigest(sourceFiles, configSig)
     decl_files = [ f for f in decls_package.declaration_files(declTree) if os.path.isfile(f)]        
     inc_sig = md5.new()
     for f in decl_files:
         inc_sig.update(file_signature(f))
         
     cPickle.dump( (src_and_cfg_digest, inc_sig.hexdigest(), decl_files), 
                   cache_file, cPickle.HIGHEST_PROTOCOL)
     cPickle.dump(declTree, cache_file, cPickle.HIGHEST_PROTOCOL)
     cache_file.close()
     self.logger.info("Complete.")
 def computeSrcAndCfgDigest(self, srcFiles, configSig):
     sig = md5.new()
     sig.update(configSig)
     for f in srcFiles:
         sig.update(file_signature(f))
     return sig.hexdigest()