Example #1
0
    def test_seek_with_whence(self):
        data = 'foo bar baz'
        h = storage.file(FILE, 'w')
        try:
            h.write(data)
        finally:
            h.close()

        h = storage.file(FILE)
        self.assertRaises(IOError, h.seek, 0, 3)
        self.assertRaises(IOError, h.seek, -1, 0)
        self.assertRaises(IOError, h.seek, 0, -1)
        self.assertRaises(TypeError, h.seek, 0, None)

        h.seek(3, 0)
        self.assertEqual(h.tell(), 3)

        h.seek(-3, 1)
        self.assertEqual(h.tell(), 0)
        self.assertRaises(IOError, h.seek, -1, 1)

        h.seek(3, 1)
        self.assertEqual(h.tell(), 3)

        h.seek(0, 2)
        self.assertEqual(h.tell(), len(data))

        h.seek(-2, 2)
        self.assertEqual(h.tell(), len(data) - 2)

        h.seek(2, 2)
        self.assertEqual(h.tell(), len(data) + 2)
        self.assertRaises(IOError, h.seek, -(len(data) + 1), 2)
Example #2
0
    def test_append_read_mode(self):
        f = storage.file(FILE, 'w')
        try:
            f.write('foo')
        finally:
            f.close()

        h = storage.file(FILE, 'a+')
        try:
            f = storage.file(FILE)
            try:
                self.assertEqual(f.read(), 'foo')
            finally:
                f.close()

            self.assertEqual(h.tell(), 3)
            self.assertEqual(h.read(), '')
            h.write('bar')
            self.assertEqual(h.tell(), 6)
            self.assertEqual(h.read(), '')

            h.seek(0)
            self.assertEqual(h.read(), 'foobar')
        finally:
            h.close()
Example #3
0
    def test_read_to_write(self):
        handle = storage.file(FILE, 'w')
        handle.write('some new data')
        handle.close()

        h = storage.file(FILE)
        self.assertRaises(IOError, h.write, 'foobar')
Example #4
0
    def test_read_seek_tell(self):
        storage._store.clear()
        h = storage.file(FILE, 'w')
        h.write('foobar')
        h.close()

        h = storage.file(FILE)
        self.assertEqual(h.tell(), 0)

        self.assertEqual(h.read(0), '')
        self.assertEqual(h.read(1), 'f')
        self.assertEqual(h.tell(), 1)
        h.seek(0)
        self.assertEqual(h.tell(), 0)
        self.assertEqual(h.read(1), 'f')

        self.assertEqual(h.read(), 'oobar')
        self.assertEqual(h.read(), '')

        h.seek(0)
        self.assertEqual(h.read(100), 'foobar')

        h.seek(1000)
        self.assertEqual(h.tell(), 1000)
        self.assertEqual(h.read(100), '')

        self.assertRaises(IOError, h.seek, -1)
        self.assertRaises(TypeError, h.seek, None)
Example #5
0
    def test_multiple_writes(self):
        handle = storage.file(FILE, 'w')
        handle.write('foo')
        handle.write('bar')
        handle.close()

        self.assertEqual(storage.file(FILE).read(), 'foobar')
Example #6
0
 def test_gc_closes(self):
     handle = storage.file(FILE, 'w')
     handle.write('some new data')
     del handle
     gc.collect()
     gc.collect()
     self.assertEqual(storage.file(FILE).read(), 'some new data')
Example #7
0
    def test_open_write_deletes_and_creates(self):
        handle = storage.file(FILE, 'w')
        self.assertEqual(storage.file(FILE).read(), '')
        handle.write('foobar')
        handle.close()

        handle = storage.file(FILE, 'w')
        self.assertEqual(storage.file(FILE).read(), '')
Example #8
0
    def test_read_negative(self):
        h = storage.file(FILE, 'w')
        try:
            h.write('foo bar baz')
        finally:
            h.close()

        h = storage.file(FILE)
        try:
            self.assertEqual(h.read(-3), 'foo bar baz')
        finally:
            h.close()
Example #9
0
    def test_repr(self):
        write = storage.file(FILE, 'w')
        read = storage.file(FILE, 'r')
        string = '<open file %r mode %r>'
        self.assertEqual(repr(read), string % (FILE, 'r'))
        self.assertEqual(repr(write), string % (FILE, 'w'))

        string = '<closed file %r mode %r>'
        write.close()
        read.close()
        self.assertEqual(repr(read), string % (FILE, 'r'))
        self.assertEqual(repr(write), string % (FILE, 'w'))
Example #10
0
    def test_flush(self):
        h = storage.file(FILE, 'w')
        h.write('foo')

        read_handle = storage.file(FILE)
        self.assertEqual(read_handle.read(), '')

        h.flush()
        self.assertEqual(read_handle.read(), 'foo')
        h.close()

        self.assertRaises(IOError, read_handle.flush)
        read_handle.close()
Example #11
0
    def test_assorted_members(self):
        h = storage.file(FILE, 'w')
        self.assertEqual(h.encoding, None)
        self.assertEqual(h.errors, None)
        self.assertEqual(h.newlines, None)
        self.assertFalse(h.isatty())
        h.close()

        h = storage.file(FILE)
        self.assertEqual(h.encoding, None)
        self.assertEqual(h.errors, None)
        self.assertEqual(h.newlines, None)
        self.assertFalse(h.isatty())
        h.close()
Example #12
0
    def test_readlines(self):
        h = storage.file(FILE, 'w')
        h.write('foo\nbar\nbaz\n')
        self.assertRaises(IOError, h.readlines)
        h.close()

        h = storage.file(FILE)
        self.assertEqual(h.readlines(), ['foo\n', 'bar\n', 'baz\n'])
        self.assertEqual(h.readlines(), [])
        h.seek(0)

        self.assertRaises(TypeError, h.readline, None)
        self.assertEqual(h.readlines(0), ['foo\n', 'bar\n', 'baz\n'])
        h.close()
Example #13
0
    def test_writelines(self):
        h = storage.file(FILE, 'w')

        self.assertRaises(IOError, storage.file(FILE).writelines, [])
        self.assertRaises(TypeError, h.writelines, object())

        h.write('blah')
        h.writelines(['\n', 'q', 'w', 'e'])
        h.close()

        f = storage.file(FILE)
        data = f.read()
        f.close()
        self.assertEqual(data, 'blah\nqwe')
Example #14
0
    def test_writelines(self):
        h = storage.file(FILE, 'w')


        self.assertRaises(IOError, storage.file(FILE).writelines, [])
        self.assertRaises(TypeError, h.writelines, object())

        h.write('blah')
        h.writelines(['\n','q', 'w', 'e'])
        h.close()

        f = storage.file(FILE)
        data = f.read()
        f.close()
        self.assertEqual(data, 'blah\nqwe')
Example #15
0
    def test_fileno(self):
        h = storage.file(FILE, 'w')
        h2 = storage.file(FILE)
        fileno1 = h.fileno()
        fileno2 = h2.fileno()

        self.assertTrue(isinstance(fileno1, int))
        self.assertTrue(isinstance(fileno2, int))

        self.assertTrue(fileno1 > 2)
        self.assertTrue(fileno2 > 2)

        self.assertNotEqual(fileno1, fileno2)

        h.close()
        h2.close()
Example #16
0
    def foo_closed(self):
        handle = storage.file(FILE, 'w')
        self.assertFalse(handle.closed)

        handle.close()
        self.assertTrue(handle.closed)

        self.assertRaises(ValueError, handle.write, 'foo')

        handle = storage.file(FILE)
        self.assertFalse(handle.closed)

        handle.close()
        self.assertTrue(handle.closed)

        self.assertRaises(ValueError, handle.read)
Example #17
0
    def test_read_write_binary(self):
        h = storage.file(FILE, 'w')
        h.write('foo\nbar\n')
        h.close()

        h = storage.file(FILE)
        self.assertEqual(h.read(), 'foo\nbar\n')
        h.close()

        h = storage.file(FILE, 'rb')
        self.assertEqual(h.read(), 'foo\r\nbar\r\n')
        h.close()

        h = storage.file(FILE, 'wb')
        h.write('foo\nbar\n')
        h.close()

        h = storage.file(FILE, 'rb')
        self.assertEqual(h.read(), 'foo\nbar\n')
        h.close()

        h = storage.file(FILE, 'w')
        h.write('foo\nbar\n')
        h.close()

        h = storage.file(FILE, 'rb')
        self.assertEqual(h.read(), 'foo\r\nbar\r\n')
        h.close()
Example #18
0
    def test_default_backend(self):
        storage.backend = dict_backend
        storage._store.clear()

        self.assertRaises(IOError, storage.file, FILE)

        h = storage.file(FILE, 'w')
        h.__enter__()
        try:
            h.write('foo')
        finally:
            h.__exit__()

        h = storage.file(FILE)
        h.__enter__()
        try:
            self.assertEqual(h.read(), 'foo')
        finally:
            h.__exit__()
Example #19
0
    def test_truncate(self):
        h = storage.file(FILE, 'w')
        h.write('kabloooie')

        self.assertRaises(IOError, storage.file(FILE).truncate)
        self.assertRaises(TypeError, h.truncate, 'foo')
        self.assertRaises(IOError, h.truncate, -1)

        h.seek(3)
        h.truncate()
        self.assertEqual(storage.file(FILE).read(), 'kab')

        h.truncate(10)
        self.assertEqual(storage.file(FILE).read(), 'kab\x00\x00\x00\x00\x00\x00\x00')
        self.assertEqual(h.tell(), 3)

        h.truncate(2)
        self.assertEqual(h.tell(), 3)
        h.close()
Example #20
0
    def test_file_simple_read_and_write(self):
        source_data = 'Some text\nwith newlines\n'

        handle = storage.file(FILE, 'w')
        self.assertEqual(handle.mode, 'w')
        handle.write(source_data)
        handle.close()

        handle = storage.file(FILE,'r')
        data = handle.read()
        self.assertEqual(handle.mode, 'r')
        handle.close()
        self.assertEqual(data, source_data)

        handle = storage.file(FILE)
        self.assertEqual(handle.mode, 'r')
        data = handle.read()
        handle.close()
        self.assertEqual(data, source_data)
Example #21
0
    def test_softspace(self):
        h = storage.file(FILE, 'w')
        h.softspace = 1
        h.write('blam')
        self.assertEqual(h.softspace, 0)

        def set_softspace():
            h.softspace = 'kablooie'
        self.assertRaises(TypeError, set_softspace)

        h.close()
Example #22
0
    def test_write_seek_tell(self):
        h = storage.file(FILE, 'w')
        self.assertEqual(h.tell(), 0)

        h.write('f')
        self.assertEqual(h.tell(), 1)
        h.seek(2)
        self.assertEqual(h.tell(), 2)
        h.write('g')
        h.close()
        self.assertEqual(storage.file(FILE).read(), 'f\x00g')

        h = storage.file(FILE, 'w')
        h.write('f')
        h.seek(0)
        h.write('g')
        h.close()
        self.assertEqual(storage.file(FILE).read(), 'g')

        h = storage.file(FILE, 'w')
        h.seek(1000)
        h.write('g')
        h.close()

        expected = '\x00' * 1000 + 'g'
        self.assertEqual(storage.file(FILE).read(), expected)

        self.assertRaises(IOError, h.seek, -1)
        self.assertRaises(TypeError, h.seek, None)
Example #23
0
    def test_readline(self):
        h = storage.file(FILE, 'w')
        h.write('foo\nbar\nbaz\n')
        self.assertRaises(IOError, h.readline)
        h.close()

        h = storage.file(FILE)
        self.assertEqual(h.readline(), 'foo\n')
        self.assertEqual(h.tell(), 4)
        h.seek(0)
        self.assertEqual(h.readline(), 'foo\n')

        self.assertRaises(TypeError, h.readline, None)
        self.assertEqual(h.readline(0), '')
        self.assertEqual(h.readline(1), 'b')
        self.assertEqual(h.readline(100), 'ar\n')
        self.assertEqual(h.tell(), 8)
        self.assertEqual(h.readline(-1), 'baz\n')
        self.assertEqual(h.tell(), 12)
        self.assertEqual(h.readline(), '')
        self.assertEqual(h.tell(), 12)
        h.close()
Example #24
0
    def test_read_write_mode(self):
        #self.assertRaises(IOError, storage.file, FILE, 'r+')

        h = storage.file(FILE, 'w')
        h.__enter__()
        try:
            h.write('foo')
        finally:
            h.__exit__()

        h = storage.file(FILE, 'r+')
        h.__enter__()
        try:
            self.assertEqual(h.tell(), 0)
            self.assertEqual(h.read(), 'foo')
            self.assertEqual(h.tell(), 3)
            h.write('bar')
            self.assertEqual(h.tell(), 6)
            h.seek(0)
            self.assertEqual(h.read(), 'foobar')
        finally:
            h.__exit__()
Example #25
0
    def test_read_only_attributes(self):
        def setter(attribute, value):
            return lambda: setattr(h, attribute, value)

        h = storage.file(FILE, 'w')
        try:
            self.assertRaises(AttributeError, setter('mode', 'w'))
            self.assertRaises(AttributeError, setter('name', 'foo2'))
            self.assertRaises(AttributeError, setter('closed', True))
            self.assertRaises(AttributeError, setter('encoding', 'ascii'))
            self.assertRaises(AttributeError, setter('errors', None))
            self.assertRaises(AttributeError, setter('newlines', 'foo'))
        finally:
            h.close()
Example #26
0
    def test_next(self):
        h = storage.file(FILE, 'w')
        h.write('foo\nbar\nbaz\n')
        self.assertRaises(IOError, h.__next__)
        h.close()

        h = storage.file(FILE)
        self.assertEqual(next(h), 'foo\n')

        self.assertRaises(ValueError, h.read)

        self.assertEqual(next(h), 'bar\n')
        self.assertEqual(next(h), 'baz\n')
        self.assertRaises(StopIteration, h.__next__)
        h.close()

        h = storage.file(FILE)
        self.assertEqual(next(h), 'foo\n')
        h.seek(1)
        self.assertEqual(next(h), 'oo\n')

        h.seek(3)
        self.assertEqual(h.read(4), '\nbar')
        self.assertEqual(next(h), '\n')
Example #27
0
 def test_xreadlines(self):
     h = storage.file(FILE, 'w')
     self.assertTrue(h is h)
     h.close()
Example #28
0
 def test__iter__(self):
     # not as hard as you might think
     h = storage.file(FILE, 'w')
     i = h.__iter__()
     self.assertTrue(h is i)
     h.close()
Example #29
0
 def test_write_to_read(self):
     h = storage.file(FILE, 'w')
     self.assertRaises(IOError, h.read)