Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd280d6e

Browse files
serhiy-storchakawoodruffw
authored andcommitted
pythongh-115961: Improve tests for compressed file-like objects (pythonGH-115963)
* Increase coverage for compressed file-like objects initialized with a file name, an open file object, a file object opened by file descriptor, and a file-like object without name and mode attributes (io.BytesIO)* Increase coverage for name, fileno(), mode, readable(), writable(), seekable() in different modes and states* No longer skip tests with bytes names* Test objects implementing the path protocol, not just pathlib.Path.
1 parente66d2a0 commitd280d6e

File tree

5 files changed

+476
-45
lines changed

5 files changed

+476
-45
lines changed

‎Lib/test/test_bz2.py

Lines changed: 131 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@
33

44
importarray
55
importunittest
6+
importio
67
fromioimportBytesIO,DEFAULT_BUFFER_SIZE
78
importos
89
importpickle
910
importglob
1011
importtempfile
11-
importpathlib
1212
importrandom
1313
importshutil
1414
importsubprocess
1515
importthreading
1616
fromtest.supportimportimport_helper
1717
fromtest.supportimportthreading_helper
18-
fromtest.support.os_helperimportunlink
18+
fromtest.support.os_helperimportunlink,FakePath
1919
import_compression
2020
importsys
2121

@@ -537,12 +537,136 @@ def testMultiStreamOrdering(self):
537537
withBZ2File(self.filename)asbz2f:
538538
self.assertEqual(bz2f.read(),data1+data2)
539539

540+
deftestOpenFilename(self):
541+
withBZ2File(self.filename,"wb")asf:
542+
f.write(b'content')
543+
self.assertIsInstance(f.fileno(),int)
544+
self.assertIs(f.readable(),False)
545+
self.assertIs(f.writable(),True)
546+
self.assertIs(f.seekable(),False)
547+
self.assertIs(f.closed,False)
548+
self.assertIs(f.closed,True)
549+
self.assertRaises(ValueError,f.fileno)
550+
self.assertRaises(ValueError,f.readable)
551+
self.assertRaises(ValueError,f.writable)
552+
self.assertRaises(ValueError,f.seekable)
553+
554+
withBZ2File(self.filename,"ab")asf:
555+
f.write(b'appendix')
556+
self.assertIsInstance(f.fileno(),int)
557+
self.assertIs(f.readable(),False)
558+
self.assertIs(f.writable(),True)
559+
self.assertIs(f.seekable(),False)
560+
self.assertIs(f.closed,False)
561+
self.assertIs(f.closed,True)
562+
self.assertRaises(ValueError,f.fileno)
563+
self.assertRaises(ValueError,f.readable)
564+
self.assertRaises(ValueError,f.writable)
565+
self.assertRaises(ValueError,f.seekable)
566+
567+
withBZ2File(self.filename,'rb')asf:
568+
self.assertEqual(f.read(),b'contentappendix')
569+
self.assertIsInstance(f.fileno(),int)
570+
self.assertIs(f.readable(),True)
571+
self.assertIs(f.writable(),False)
572+
self.assertIs(f.seekable(),True)
573+
self.assertIs(f.closed,False)
574+
self.assertIs(f.closed,True)
575+
withself.assertRaises(ValueError):
576+
f.fileno()
577+
self.assertRaises(ValueError,f.readable)
578+
self.assertRaises(ValueError,f.writable)
579+
self.assertRaises(ValueError,f.seekable)
580+
581+
deftestOpenFileWithName(self):
582+
withopen(self.filename,'wb')asraw:
583+
withBZ2File(raw,'wb')asf:
584+
f.write(b'content')
585+
self.assertEqual(f.fileno(),raw.fileno())
586+
self.assertIs(f.readable(),False)
587+
self.assertIs(f.writable(),True)
588+
self.assertIs(f.seekable(),False)
589+
self.assertIs(f.closed,False)
590+
self.assertIs(f.closed,True)
591+
self.assertRaises(ValueError,f.fileno)
592+
self.assertRaises(ValueError,f.readable)
593+
self.assertRaises(ValueError,f.writable)
594+
self.assertRaises(ValueError,f.seekable)
595+
596+
withopen(self.filename,'ab')asraw:
597+
withBZ2File(raw,'ab')asf:
598+
f.write(b'appendix')
599+
self.assertEqual(f.fileno(),raw.fileno())
600+
self.assertIs(f.readable(),False)
601+
self.assertIs(f.writable(),True)
602+
self.assertIs(f.seekable(),False)
603+
self.assertIs(f.closed,False)
604+
self.assertIs(f.closed,True)
605+
self.assertRaises(ValueError,f.fileno)
606+
self.assertRaises(ValueError,f.readable)
607+
self.assertRaises(ValueError,f.writable)
608+
self.assertRaises(ValueError,f.seekable)
609+
610+
withopen(self.filename,'rb')asraw:
611+
withBZ2File(raw,'rb')asf:
612+
self.assertEqual(f.read(),b'contentappendix')
613+
self.assertEqual(f.fileno(),raw.fileno())
614+
self.assertIs(f.readable(),True)
615+
self.assertIs(f.writable(),False)
616+
self.assertIs(f.seekable(),True)
617+
self.assertIs(f.closed,False)
618+
self.assertIs(f.closed,True)
619+
withself.assertRaises(ValueError):
620+
f.fileno()
621+
self.assertRaises(ValueError,f.readable)
622+
self.assertRaises(ValueError,f.writable)
623+
self.assertRaises(ValueError,f.seekable)
624+
625+
deftestOpenFileWithoutName(self):
626+
bio=BytesIO()
627+
withBZ2File(bio,'wb')asf:
628+
f.write(b'content')
629+
self.assertRaises(io.UnsupportedOperation,f.fileno)
630+
self.assertRaises(ValueError,f.fileno)
631+
632+
withBZ2File(bio,'ab')asf:
633+
f.write(b'appendix')
634+
self.assertRaises(io.UnsupportedOperation,f.fileno)
635+
self.assertRaises(ValueError,f.fileno)
636+
637+
bio.seek(0)
638+
withBZ2File(bio,'rb')asf:
639+
self.assertEqual(f.read(),b'contentappendix')
640+
self.assertRaises(io.UnsupportedOperation,f.fileno)
641+
withself.assertRaises(ValueError):
642+
f.fileno()
643+
644+
deftestOpenFileWithIntName(self):
645+
fd=os.open(self.filename,os.O_WRONLY|os.O_CREAT|os.O_TRUNC)
646+
withopen(fd,'wb')asraw:
647+
withBZ2File(raw,'wb')asf:
648+
f.write(b'content')
649+
self.assertEqual(f.fileno(),raw.fileno())
650+
self.assertRaises(ValueError,f.fileno)
651+
652+
fd=os.open(self.filename,os.O_WRONLY|os.O_CREAT|os.O_APPEND)
653+
withopen(fd,'ab')asraw:
654+
withBZ2File(raw,'ab')asf:
655+
f.write(b'appendix')
656+
self.assertEqual(f.fileno(),raw.fileno())
657+
self.assertRaises(ValueError,f.fileno)
658+
659+
fd=os.open(self.filename,os.O_RDONLY)
660+
withopen(fd,'rb')asraw:
661+
withBZ2File(raw,'rb')asf:
662+
self.assertEqual(f.read(),b'contentappendix')
663+
self.assertEqual(f.fileno(),raw.fileno())
664+
withself.assertRaises(ValueError):
665+
f.fileno()
666+
540667
deftestOpenBytesFilename(self):
541668
str_filename=self.filename
542-
try:
543-
bytes_filename=str_filename.encode("ascii")
544-
exceptUnicodeEncodeError:
545-
self.skipTest("Temporary file name needs to be ASCII")
669+
bytes_filename=os.fsencode(str_filename)
546670
withBZ2File(bytes_filename,"wb")asf:
547671
f.write(self.DATA)
548672
withBZ2File(bytes_filename,"rb")asf:
@@ -552,7 +676,7 @@ def testOpenBytesFilename(self):
552676
self.assertEqual(f.read(),self.DATA)
553677

554678
deftestOpenPathLikeFilename(self):
555-
filename=pathlib.Path(self.filename)
679+
filename=FakePath(self.filename)
556680
withBZ2File(filename,"wb")asf:
557681
f.write(self.DATA)
558682
withBZ2File(filename,"rb")asf:

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp