def test_posix_backend_open(self):
        """test opening a file from posix backend"""
        filepath = '1234'
        mode = 'w'
        backend = PosixBackendArchive('/tmp')
        my_file = backend.open(filepath, mode)
        self.assertTrue(isinstance(my_file, PosixBackendArchive))
        #easiest way to unit test is look at class variable
        # pylint: disable=protected-access
        self.assertTrue(isinstance(backend._file, ExtendedFile))
        # pylint: enable=protected-access
        my_file.close()
        # opening twice in a row is okay
        my_file = backend.open(filepath, mode)
        my_file = backend.open(filepath, mode)

        # force a close to throw an error
        def close_error():
            raise ArchiveInterfaceError("this is an error")

        orig_close = backend._file.close
        backend._file.close = close_error
        hit_exception = False
        try:
            my_file = backend.open(filepath, mode)
        except ArchiveInterfaceError, ex:
            hit_exception = True
 def test_posix_backend_create(self):
     """test creating a posix backend """
     backend = PosixBackendArchive('/tmp')
     self.assertTrue(isinstance(backend, PosixBackendArchive))
     #easiest way to unit test is look at class variable
     # pylint: disable=protected-access
     self.assertEqual(backend._prefix, '/tmp')
 def test_posix_backend_write(self):
     """test writing a file from posix backend"""
     filepath = '1234'
     mode = 'w'
     backend = PosixBackendArchive('/tmp/')
     my_file = backend.open(filepath, mode)
     error = my_file.write("i am a test string")
     self.assertEqual(error, None)
     my_file.close()
 def test_posix_backend_read(self):
     """test reading a file from posix backend"""
     self.test_posix_backend_write()
     filepath = '1234'
     mode = 'r'
     backend = PosixBackendArchive('/tmp/')
     my_file = backend.open(filepath, mode)
     buf = my_file.read(-1)
     self.assertEqual(buf, "i am a test string")
     my_file.close()
 def test_posix_backend_close(self):
     """test closing a file from posix backend"""
     filepath = '1234'
     mode = 'w'
     backend = PosixBackendArchive('/tmp/')
     my_file = backend.open(filepath, mode)
     #easiest way to unit test is look at class variable
     # pylint: disable=protected-access
     self.assertTrue(isinstance(backend._file, ExtendedFile))
     my_file.close()
     self.assertEqual(backend._file, None)
    def test_posix_backend_failed_write(self):
        """test writing to a failed file"""
        filepath = '1234'
        mode = 'w'
        backend = PosixBackendArchive('/tmp/')
        # test failed write
        my_file = backend.open(filepath, mode)

        def write_error():
            raise IOError("Unable to Write!")

        backend._file.write = write_error
        hit_exception = False
        try:
            backend.write('write stuff')
        except ArchiveInterfaceError, ex:
            hit_exception = True
            self.assertTrue("Can't write posix file with error" in str(ex))