コード例 #1
0
ファイル: filetest.py プロジェクト: slozier/ironclad
    def testConvertPyFileToDescriptor(self, mapper, _):
        testDir = tempfile.mkdtemp()
        outFile = os.path.join(testDir, "test")
        pyFile = file(outFile, 'w')
        pyFile.write("I love streams ")
        pyFile.flush()

        fd = mapper.ConvertPyFileToDescriptor(pyFile)
        FILE = Unmanaged._fdopen(fd, "w")

        testStr = "and file descriptors!"
        testStrPtr = mapper.Store(testStr)
        testDataPtr = OffsetPtr(testStrPtr,
                                Marshal.OffsetOf(PyStringObject, "ob_sval"))

        self.assertTrue(
            Unmanaged.fwrite(testDataPtr, 1, len(testStr), FILE) > 0,
            "writing failed")
        Unmanaged.fflush(FILE)
        pyFile.close()

        stream = file(outFile, 'r')
        output = stream.read()
        stream.close()
        self.assertEquals(output, "I love streams and file descriptors!")
コード例 #2
0
ファイル: filetest.py プロジェクト: netcharm/ironclad
    def testIC_PyFile_AsFile_Write(self, mapper, addToCleanUp, _):
        testDir = tempfile.mkdtemp()
        addToCleanUp(lambda: shutil.rmtree(testDir))
        path = os.path.join(testDir, "test")

        testStr = "meh, string data"
        testLength = len(testStr)
        testStrPtr = mapper.Store(testStr)
        testDataPtr = OffsetPtr(testStrPtr, Marshal.OffsetOf(PyStringObject, "ob_sval"))

        filePtr = mapper.Store(open(path, "w"))

        f = mapper.IC_PyFile_AsFile(filePtr)
        self.assertEquals(Unmanaged.fwrite(testDataPtr, 1, testLength, f), testLength, "didn't work")

        # nasty test: patch out PyObject_Free
        # the memory will not be deallocated, but the FILE handle should be

        calls = []

        def Free(ptr):
            calls.append(ptr)

        freeDgt = dgt_void_ptr(Free)
        CPyMarshal.WriteFunctionPtrField(mapper.PyFile_Type, PyTypeObject, "tp_free", freeDgt)

        mapper.DecRef(filePtr)
        self.assertEquals(calls, [filePtr], "failed to call tp_free function")

        mgdF = open(path)
        result = mgdF.read()
        self.assertEquals(
            result, testStr, "failed to write (got >>%s<<) -- deallocing filePtr did not close FILE" % result
        )
        mgdF.close()
コード例 #3
0
ファイル: filetest.py プロジェクト: nathanwblair/ironclad
 def testIC_PyFile_AsFile_Write(self, mapper, addToCleanUp, _):
     testDir = tempfile.mkdtemp()
     addToCleanUp(lambda: shutil.rmtree(testDir))
     path = os.path.join(testDir, "test")
     
     testStr = "meh, string data"
     testLength = len(testStr)
     testStrPtr = mapper.Store(testStr)
     testDataPtr = OffsetPtr(testStrPtr, Marshal.OffsetOf(PyStringObject, "ob_sval"))
     
     filePtr = mapper.Store(open(path, 'w'))
     
     f = mapper.IC_PyFile_AsFile(filePtr)
     self.assertEquals(Unmanaged.fwrite(testDataPtr, 1, testLength, f), testLength, "didn't work")
     
     # nasty test: patch out PyObject_Free
     # the memory will not be deallocated, but the FILE handle should be
     
     calls = []
     def Free(ptr):
         calls.append(ptr)
     
     freeDgt = dgt_void_ptr(Free)
     CPyMarshal.WriteFunctionPtrField(mapper.PyFile_Type, PyTypeObject, 'tp_free', freeDgt)
     
     mapper.DecRef(filePtr)
     self.assertEquals(calls, [filePtr], 'failed to call tp_free function')
     
     mgdF = open(path)
     result = mgdF.read()
     self.assertEquals(result, testStr, "failed to write (got >>%s<<) -- deallocing filePtr did not close FILE" % result)
     mgdF.close()
コード例 #4
0
ファイル: filetest.py プロジェクト: netcharm/ironclad
    def testConvertPyFileToDescriptor(self, mapper, _):
        testDir = tempfile.mkdtemp()
        outFile = os.path.join(testDir, "test")
        pyFile = file(outFile, "w")
        pyFile.write("I love streams ")
        pyFile.flush()

        fd = mapper.ConvertPyFileToDescriptor(pyFile)
        FILE = Unmanaged._fdopen(fd, "w")

        testStr = "and file descriptors!"
        testStrPtr = mapper.Store(testStr)
        testDataPtr = OffsetPtr(testStrPtr, Marshal.OffsetOf(PyStringObject, "ob_sval"))

        self.assertTrue(Unmanaged.fwrite(testDataPtr, 1, len(testStr), FILE) > 0, "writing failed")
        Unmanaged.fflush(FILE)
        pyFile.close()

        stream = file(outFile, "r")
        output = stream.read()
        stream.close()
        self.assertEquals(output, "I love streams and file descriptors!")