[Python-checkins] python/dist/src/Lib/test test_bz2.py,1.5,1.6

tim_one@users.sourceforge.net tim_one@users.sourceforge.net
Fri, 08 Nov 2002 22:31:58 -0800


Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv32717/Lib/test

Modified Files:
	test_bz2.py 
Log Message:
Many changes to get this to pass on Windows, and to make it easier to
figure out what the code was doing.  The fixes were a combination of
closing open files before deletion, opening files in binary mode, and
plain skipping things that can't work on Windows (BaseTest.decompress
uses a process gimmick that doesn't exist on Windows, and, even if it
did, assumes a "bunzip2" executable is on PATH).


Index: test_bz2.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_bz2.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** test_bz2.py	9 Nov 2002 05:26:14 -0000	1.5
--- test_bz2.py	9 Nov 2002 06:31:56 -0000	1.6
***************
*** 1,3 ****
--- 1,5 ----
  #!/usr/bin/python
+ from test import test_support
+ 
  import unittest
  from cStringIO import StringIO
***************
*** 5,10 ****
  import popen2
  import tempfile
! from bz2 import *
! from test import test_support
  
  class BaseTest(unittest.TestCase):
--- 7,14 ----
  import popen2
  import tempfile
! import sys
! 
! import bz2
! from bz2 import BZ2File, BZ2Compressor, BZ2Decompressor
  
  class BaseTest(unittest.TestCase):
***************
*** 14,18 ****
--- 18,28 ----
      DATA_CRLF = 'BZh91AY&SY\xaez\xbbN\x00\x01H\xdf\x80\x00\x12@\x02\xff\xf0\x01\x07n\x00?\xe7\xff\xe0@\x01\xbc\xc6`\x86*\x8d=M\xa9\x9a\x86\xd0L@\x0fI\xa6!\xa1\x13\xc8\x88jdi\x8d@\x03@\x1a\x1a\x0c\x0c\x83 \x00\xc4h2\x19\x01\x82D\x84e\t\xe8\x99\x89\x19\x1ah\x00\r\x1a\x11\xaf\x9b\x0fG\xf5(\x1b\x1f?\t\x12\xcf\xb5\xfc\x95E\x00ps\x89\x12^\xa4\xdd\xa2&\x05(\x87\x04\x98\x89u\xe40%\xb6\x19\'\x8c\xc4\x89\xca\x07\x0e\x1b!\x91UIFU%C\x994!DI\xd2\xfa\xf0\xf1N8W\xde\x13A\xf5\x9cr%?\x9f3;I45A\xd1\x8bT\xb1<l\xba\xcb_\xc00xY\x17r\x17\x88\x08\x08@\xa0\ry@\x10\x04$)`\xf2\xce\x89z\xb0s\xec\x9b.iW\x9d\x81\xb5-+t\x9f\x1a\'\x97dB\xf5x\xb5\xbe.[.\xd7\x0e\x81\xe7\x08\x1cN`\x88\x10\xca\x87\xc3!"\x80\x92R\xa1/\xd1\xc0\xe6mf\xac\xbd\x99\xcca\xb3\x8780>\xa4\xc7\x8d\x1a\\"\xad\xa1\xabyBg\x15\xb9l\x88\x88\x91k"\x94\xa4\xd4\x89\xae*\xa6\x0b\x10\x0c\xd6\xd4m\xe86\xec\xb5j\x8a\x86j\';\xca.\x01I\xf2\xaaJ\xe8\x88\x8cU+t3\xfb\x0c\n\xa33\x13r2\r\x16\xe0\xb3(\xbf\x1d\x83r\xe7M\xf0D\x1365\xd8\x88\xd3\xa4\x92\xcb2\x06\x04\\\xc1\xb0\xea//\xbek&\xd8\xe6+t\xe5\xa1\x13\xada\x16\xder5"w]\xa2i\xb7[\x97R \xe2IT\xcd;Z\x04dk4\xad\x8a\t\xd3\x81z\x10\xf1:^`\xab\x1f\xc5\xdc\x91N\x14$+\x9e\xae\xd3\x80'
  
+     # XXX BaseTest.decompress can't run on Windows -- popen2.Popen3 doesn't
+     # XXX exist there, XXX and even if it did, bunzip2 isn't available to
+     # XXX run.  Tests using this are therefore skipped on Windows.
+     skip_decompress_tests = sys.platform in ("win32",)
+ 
      def decompress(self, data):
+         assert not self.skip_decompress_tests
          pop = popen2.Popen3("bunzip2", capturestderr=1)
          pop.tochild.write(data)
***************
*** 21,25 ****
          pop.fromchild.close()
          if pop.wait() != 0:
!             ret = decompress(data)
          return ret
  
--- 31,38 ----
          pop.fromchild.close()
          if pop.wait() != 0:
!             # XXX I don't think this works.  On Windows, trying to call
!             # XXX bz2.decompress in this function always raises
!             # XXD     ValueError: couldn't find end of stream
!             ret = bz2.decompress(data)
          return ret
  
***************
*** 120,123 ****
--- 133,138 ----
  
      def testWrite(self):
+         if self.skip_decompress_tests:
+             return
          # "Test BZ2File.write()"
          bz2f = BZ2File(self.filename, "w")
***************
*** 130,133 ****
--- 145,150 ----
      def testWriteChunks10(self):
          # "Test BZ2File.write() with chunks of 10 bytes"
+         if self.skip_decompress_tests:
+             return
          bz2f = BZ2File(self.filename, "w")
          n = 0
***************
*** 145,148 ****
--- 162,167 ----
      def testWriteLines(self):
          # "Test BZ2File.writelines()"
+         if self.skip_decompress_tests:
+             return
          bz2f = BZ2File(self.filename, "w")
          sio = StringIO(self.TEXT)
***************
*** 159,162 ****
--- 178,182 ----
          bz2f.seek(150)
          self.assertEqual(bz2f.read(), self.TEXT[150:])
+         bz2f.close()
  
      def testSeekBackwards(self):
***************
*** 167,170 ****
--- 187,191 ----
          bz2f.seek(-150, 1)
          self.assertEqual(bz2f.read(), self.TEXT[500-150:])
+         bz2f.close()
  
      def testSeekBackwardsFromEnd(self):
***************
*** 174,177 ****
--- 195,199 ----
          bz2f.seek(-150, 2)
          self.assertEqual(bz2f.read(), self.TEXT[len(self.TEXT)-150:])
+         bz2f.close()
  
      def testSeekPostEnd(self):
***************
*** 182,185 ****
--- 204,208 ----
          self.assertEqual(bz2f.tell(), len(self.TEXT))
          self.assertEqual(bz2f.read(), "")
+         bz2f.close()
  
      def testSeekPostEndTwice(self):
***************
*** 191,194 ****
--- 214,218 ----
          self.assertEqual(bz2f.tell(), len(self.TEXT))
          self.assertEqual(bz2f.read(), "")
+         bz2f.close()
  
      def testSeekPreStart(self):
***************
*** 199,206 ****
--- 223,233 ----
          self.assertEqual(bz2f.tell(), 0)
          self.assertEqual(bz2f.read(), self.TEXT)
+         bz2f.close()
  
  class BZ2CompressorTest(BaseTest):
      def testCompress(self):
          # "Test BZ2Compressor.compress()/flush()"
+         if self.skip_decompress_tests:
+             return
          bz2c = BZ2Compressor()
          data = bz2c.compress(self.TEXT)
***************
*** 210,213 ****
--- 237,242 ----
      def testCompressChunks10(self):
          # "Test BZ2Compressor.compress()/flush() with chunks of 10 bytes"
+         if self.skip_decompress_tests:
+             return
          bz2c = BZ2Compressor()
          n = 0
***************
*** 262,287 ****
      def testCompress(self):
          # "Test compress() function"
!         data = compress(self.TEXT)
          self.assertEqual(self.decompress(data), self.TEXT)
  
      def testDecompress(self):
          # "Test decompress() function"
!         text = decompress(self.DATA)
          self.assertEqual(text, self.TEXT)
  
      def testDecompressEmpty(self):
          # "Test decompress() function with empty string"
!         text = decompress("")
          self.assertEqual(text, "")
  
      def testDecompressIncomplete(self):
          # "Test decompress() function with incomplete data"
!         self.assertRaises(ValueError, decompress, self.DATA[:-10])
  
  def test_main():
!     test_support.run_unittest(BZ2FileTest)
!     test_support.run_unittest(BZ2CompressorTest)
!     test_support.run_unittest(BZ2DecompressorTest)
!     test_support.run_unittest(FuncTest)
  
  if __name__ == '__main__':
--- 291,321 ----
      def testCompress(self):
          # "Test compress() function"
!         if self.skip_decompress_tests:
!             return
!         data = bz2.compress(self.TEXT)
          self.assertEqual(self.decompress(data), self.TEXT)
  
      def testDecompress(self):
          # "Test decompress() function"
!         text = bz2.decompress(self.DATA)
          self.assertEqual(text, self.TEXT)
  
      def testDecompressEmpty(self):
          # "Test decompress() function with empty string"
!         text = bz2.decompress("")
          self.assertEqual(text, "")
  
      def testDecompressIncomplete(self):
          # "Test decompress() function with incomplete data"
!         self.assertRaises(ValueError, bz2.decompress, self.DATA[:-10])
  
  def test_main():
!     suite = unittest.TestSuite()
!     for test in (BZ2FileTest,
!                  BZ2CompressorTest,
!                  BZ2DecompressorTest,
!                  FuncTest):
!         suite.addTest(unittest.makeSuite(test))
!     test_support.run_suite(suite)
  
  if __name__ == '__main__':