예제 #1
0
    def testCacheCreation(self):
        c = cache.T()
        self.assertEqual(
            os.path.expandvars("${HOME}/.gnofract4d-cache"), c.dir)
        self.assertEqual({},c.files)

        c = cache.T("experiment")
        self.assertEqual("experiment",c.dir)

        self.assertEqual(False,os.path.exists("experiment"))
        
        c.init()
        self.failUnless(os.path.isdir("experiment"))

        f = open("experiment/file1.txt","w")
        f.close()
        self.failUnless(os.path.exists("experiment/file1.txt"))

        c.clear()
        self.assertEqual(False, os.path.exists("experiment/file1.txt"))
예제 #2
0
    def disabled_testPickleFile(self):
        c = cache.T("experiment")
        c.init()
        f = open("experiment/file1.txt","w").write("fish")

        contents = c.getcontents("experiment/file1.txt", self.readall)        
        self.assertEqual(
            "experiment/0de8fb66544e4ae95935a50ab783fdba.pkl",
            c.files["experiment/file1.txt"].cache_file)
        self.failUnless(
            os.path.exists("experiment/0de8fb66544e4ae95935a50ab783fdba.pkl"),
            "no pickled file found")
        val = cPickle.load(open("experiment/0de8fb66544e4ae95935a50ab783fdba.pkl"))
        self.assertEqual(contents, val)

        c.save()

        c2 = cache.T("experiment")
        c2.init()
        self.readall_called = False
        contents2 = c2.getcontents("experiment/file1.txt", self.readall)        

        self.assertEqual(False, self.readall_called)
        self.assertEqual(contents,contents2)
예제 #3
0
    def testAddFile(self):
        c = cache.T("experiment")
        c.init()
        f = open("experiment/file1.txt","w").write("fish")

        self.readall_called = False
        
        contents = c.getcontents("experiment/file1.txt", self.readall)        
        self.assertEqual("fish",contents)
        self.failUnless(self.readall_called, "Should have called readall")

        self.readall_called = False
        contents = c.getcontents("experiment/file1.txt", self.readall)
        self.assertEqual("fish",contents)
        self.failUnless(
            not self.readall_called, "Should not have called readall")
예제 #4
0
    def testUpdateFileOnDisk(self):
        c = cache.T("experiment")
        c.init()
        f = open("experiment/file1.txt","w").write("fish")

        self.readall_called = False
        
        contents = c.getcontents("experiment/file1.txt", self.readall)        
        self.assertEqual("fish",contents)
        self.failUnless(self.readall_called, "Should have called readall")

        self.readall_called = False
        time.sleep(1.0) # ensure filesystem will have a different time
        
        open("experiment/file1.txt","w").write("wibble")

        contents = c.getcontents("experiment/file1.txt", self.readall)
        self.assertEqual("wibble",contents)
        self.failUnless(
            self.readall_called, "Should have called readall")
예제 #5
0
 def __init__(self):
     self.parser = fractparser.parser
     self.lexer = fractlexer.lexer
     self.c_code = ""
     self.path_lists = [[], [], [], []]
     self.cache = cache.T()
     self.cache_dir = os.path.expanduser("~/.gnofract4d-cache/")
     self.init_cache()
     if 'win' != sys.platform[:3]:
         self.compiler_name = "gcc"
         self.flags = "-fPIC -DPIC -g -O3 -shared"
         self.output_flag = "-o "
         self.libs = "-lm"
     else:
         self.compiler_name = "cl"
         self.flags = "/EHsc /Gd /nologo /W3 /LD /MT /TP /DWIN32 /DWINDOWS /D_USE_MATH_DEFINES"
         self.output_flag = "/Fe"
         self.libs = "/link /LIBPATH:\"%s/fract4d\" fract4d_stdlib.lib" % sys.path[
             0]  # /DELAYLOAD:fract4d_stdlib.pyd DelayImp.lib
     self.tree_cache = {}
     self.leave_dirty = False
     self.next_inline_number = 0
예제 #6
0
 def testMakeFilename(self):
     c = cache.T("foo")
     self.assertEqual("foo/fract4d_blah.x", c.makefilename("blah",".x"))
예제 #7
0
 def testHashCode(self):
     c = cache.T("experiment")
     c.init()
     self.assertEqual("acbd18db4cc2f85cedef654fccc4a4d8", c.hashcode("foo"))
     self.assertEqual(
         "b34231a85737d0b078d7ffb17e6bb3b5",c.hashcode("foo","flag"))