[Python-checkins] r57104 - in python/branches/alex-py3k: Lib/test/test_memoryio.py Modules/_bytesiomodule.c
alexandre.vassalotti
python-checkins at python.org
Thu Aug 16 23:49:04 CEST 2007
Author: alexandre.vassalotti
Date: Thu Aug 16 23:49:02 2007
New Revision: 57104
Modified:
python/branches/alex-py3k/Lib/test/test_memoryio.py
python/branches/alex-py3k/Modules/_bytesiomodule.c
Log:
Make the close method of ByteIO objects do nothing.
Update tests.
Modified: python/branches/alex-py3k/Lib/test/test_memoryio.py
==============================================================================
--- python/branches/alex-py3k/Lib/test/test_memoryio.py (original)
+++ python/branches/alex-py3k/Lib/test/test_memoryio.py Thu Aug 16 23:49:02 2007
@@ -40,6 +40,8 @@
self.write_ops(memio)
memio = self.ioclass()
self.write_ops(memio)
+ memio.close()
+ memio.write(buf)
def test_writelines(self):
buf = self.buftype("1234567890")
@@ -47,6 +49,8 @@
memio.writelines([buf] * 100)
self.assertEqual(memio.getvalue(), buf * 100)
+ memio.close()
+ memio.writelines([buf])
def test_writelines_error(self):
memio = self.ioclass()
@@ -69,6 +73,8 @@
memio.write(buf)
self.assertEqual(memio.getvalue(), buf[:4] + buf)
self.assertRaises(ValueError, memio.truncate, -1)
+ memio.close()
+ memio.truncate(0)
def test_init(self):
buf = self.buftype("1234567890")
@@ -86,6 +92,8 @@
self.assertEqual(memio.read(), buf)
self.assertEqual(memio.read(), self.EOF)
self.assertEqual(memio.tell(), 10)
+ memio.close()
+ memio.read()
def test_readline(self):
buf = self.buftype("1234567890\n")
@@ -98,6 +106,8 @@
self.assertEqual(memio.readline(5), buf[:5])
self.assertEqual(memio.readline(5), buf[5:10])
self.assertEqual(memio.readline(5), buf[10:15])
+ memio.close()
+ memio.readline()
def test_readlines(self):
buf = self.buftype("1234567890\n")
@@ -108,6 +118,8 @@
self.assertEqual(memio.readlines(), [buf[5:]] + [buf] * 9)
memio.seek(0)
self.assertEqual(memio.readlines(15), [buf] * 2)
+ memio.close()
+ memio.readlines()
def test_iterator(self):
buf = self.buftype("1234567890\n")
@@ -127,6 +139,12 @@
self.assertEqual(line, buf)
i += 1
self.assertEqual(i, 10)
+ memio = self.ioclass(buf * 2)
+ memio.close()
+ i = 0
+ for line in memio:
+ i += 1
+ self.assertEqual(i, 2)
def test_getvalue(self):
buf = self.buftype("1234567890")
@@ -137,6 +155,9 @@
self.assertEqual(memio.getvalue(), buf)
memio = self.ioclass(buf * 1000)
self.assertEqual(memio.getvalue()[-3:], self.buftype("890"))
+ memio = self.ioclass(buf)
+ memio.close()
+ self.assertEqual(memio.getvalue(), buf)
def test_seek(self):
buf = self.buftype("1234567890")
@@ -148,6 +169,8 @@
memio.seek(3)
self.assertEqual(buf[3:], memio.read())
+ memio.close()
+ memio.seek(0)
def test_tell(self):
buf = self.buftype("1234567890")
@@ -158,12 +181,16 @@
self.assertEqual(memio.tell(), 5)
memio.seek(10000)
self.assertEqual(memio.tell(), 10000)
+ memio.close()
+ memio.tell()
def test_flush(self):
buf = self.buftype("1234567890")
memio = self.ioclass(buf)
self.assertEqual(memio.flush(), None)
+ memio.close()
+ memio.flush()
def test_flags(self):
memio = self.ioclass()
@@ -173,6 +200,12 @@
self.assertEqual(memio.seekable(), True)
self.assertEqual(memio.isatty(), False)
self.assertEqual(memio.closed, False)
+ memio.close()
+ self.assertEqual(memio.writable(), True)
+ self.assertEqual(memio.readable(), True)
+ self.assertEqual(memio.seekable(), True)
+ self.assertEqual(memio.isatty(), False)
+ self.assertEqual(memio.closed, False)
def test_subclassing(self):
buf = self.buftype("1234567890")
@@ -193,31 +226,6 @@
self.assertEqual(memio.write(buf), len(buf))
self.assertEqual(memio.getvalue(), buf + buf)
- def test_close(self):
- buf = self.buftype("1234567890")
- memio = self.ioclass(buf)
-
- # close() does nothing.
- memio.close()
- self.assertEqual(memio.getvalue(), buf)
-
- # Just check if methods are still functioning.
- memio.write(buf)
- memio.truncate(len(buf))
- memio.seek(2)
- memio.flush()
- memio.tell()
- memio.read()
- memio.writelines([buf + self.buftype("\n")] * 5)
- memio.readline()
- memio.readlines()
-
- self.assertEqual(memio.writable(), True)
- self.assertEqual(memio.readable(), True)
- self.assertEqual(memio.seekable(), True)
- self.assertEqual(memio.isatty(), False)
- self.assertEqual(memio.closed, False)
-
class PyBytesIOTest(MemoryTestMixin, unittest.TestCase):
buftype = bytes
@@ -244,7 +252,7 @@
self.assertEqual(memio.readinto(b), 0)
self.assertEqual(b, b"")
memio.close()
- self.assertRaises(ValueError, memio.readinto, b)
+ memio.readinto(b)
def test_overseek(self):
buf = self.buftype("1234567890")
Modified: python/branches/alex-py3k/Modules/_bytesiomodule.c
==============================================================================
--- python/branches/alex-py3k/Modules/_bytesiomodule.c (original)
+++ python/branches/alex-py3k/Modules/_bytesiomodule.c Thu Aug 16 23:49:02 2007
@@ -12,15 +12,9 @@
} BytesIOObject;
-static PyObject *
-err_closed(void)
-{
- PyErr_SetString(PyExc_ValueError, "I/O operation on closed file");
- return NULL;
-}
-
/* Internal routine to get a line from the buffer of a BytesIO
- object. Returns the number of bytes read. */
+ object. Returns the length between the current position to the
+ next newline character. */
static Py_ssize_t
get_line(BytesIOObject *self, char **output)
{
@@ -101,17 +95,10 @@
return len;
}
-
static PyObject *
bytesio_get_closed(BytesIOObject *self)
{
- PyObject *result = Py_False;
-
- if (self->buf == NULL)
- result = Py_True;
-
- Py_INCREF(result);
- return result;
+ Py_RETURN_FALSE;
}
/* Generic getter for the writable, readable and seekable properties */
@@ -124,18 +111,12 @@
static PyObject *
bytesio_flush(BytesIOObject *self)
{
- if (self->buf == NULL)
- return err_closed();
-
Py_RETURN_NONE;
}
static PyObject *
bytesio_getvalue(BytesIOObject *self)
{
- if (self->buf == NULL)
- return err_closed();
-
return PyBytes_FromStringAndSize(self->buf, self->string_size);
}
@@ -146,11 +127,6 @@
const char *bytes;
Py_ssize_t len;
- if (self->buf == NULL) {
- err_closed();
- return -1;
- }
-
self->pos = 0;
self->string_size = 0;
@@ -173,18 +149,12 @@
static PyObject *
bytesio_isatty(BytesIOObject *self)
{
- if (self->buf == NULL)
- return err_closed();
-
Py_RETURN_FALSE;
}
static PyObject *
bytesio_tell(BytesIOObject *self)
{
- if (self->buf == NULL)
- return err_closed();
-
return PyInt_FromSsize_t(self->pos);
}
@@ -194,9 +164,6 @@
Py_ssize_t len, n = -1;
char *output;
- if (self->buf == NULL)
- return err_closed();
-
if (!PyArg_ParseTuple(args, "|n:read", &n))
return NULL;
@@ -226,9 +193,6 @@
Py_ssize_t n, size = -1;
char *output;
- if (self->buf == NULL)
- return err_closed();
-
if (!PyArg_ParseTuple(args, "|i:readline", &size))
return NULL;
@@ -250,9 +214,6 @@
PyObject *result, *line;
char *output;
- if (self->buf == NULL)
- return err_closed();
-
if (!PyArg_ParseTuple(args, "|i:readlines", &size))
return NULL;
@@ -286,9 +247,6 @@
void *raw_buffer;
Py_ssize_t len;
- if (self->buf == NULL)
- return err_closed();
-
if (PyObject_AsWriteBuffer(buffer, &raw_buffer, &len) == -1)
return NULL;
@@ -311,9 +269,6 @@
/* Truncate to current position if no argument is passed. */
size = self->pos;
- if (self->buf == NULL)
- return err_closed();
-
if (!PyArg_ParseTuple(args, "|n:truncate", &size))
return NULL;
@@ -336,9 +291,6 @@
char *next;
Py_ssize_t n;
- if (self->buf == NULL)
- return err_closed();
-
n = get_line(self, &next);
if (!next || n == 0)
@@ -353,9 +305,6 @@
Py_ssize_t newpos, prevpos;
int mode = 0;
- if (self->buf == NULL)
- return err_closed();
-
if (!PyArg_ParseTuple(args, "n|i:seek", &newpos, &mode))
return NULL;
@@ -398,9 +347,6 @@
const char *bytes;
Py_ssize_t size, len;
- if (self->buf == NULL)
- return err_closed();
-
if (PyUnicode_Check(obj)) {
bytes = PyUnicode_AsString(obj);
size = strlen(bytes);
@@ -423,9 +369,6 @@
PyObject *it, *item;
PyObject *ret;
- if (self->buf == NULL)
- return err_closed();
-
it = PyObject_GetIter(v);
if (it == NULL)
return NULL;
@@ -449,13 +392,6 @@
static PyObject *
bytesio_close(BytesIOObject *self)
{
- if (self->buf != NULL) {
- PyMem_Del(self->buf);
- self->buf = NULL;
- }
-
- self->pos = self->string_size = self->buf_size = 0;
-
Py_RETURN_NONE;
}
@@ -565,7 +501,7 @@
"Returns the new size.");
PyDoc_STRVAR(BytesIO_close_doc,
-"close() -> None. Close the file and release the resources held.");
+"close() -> None. Does nothing.");
PyDoc_STRVAR(BytesIO_seek_doc,
"seek(pos, whence=0) -> int. Change stream position.\n"
More information about the Python-checkins
mailing list