import unittest try: from StringIO import StringIO except ImportError: import io def StringIO(): return io.BytesIO() import zipfile class ZipBug(unittest.TestCase): def test_zip_time_bug(self): def assert_zip_time(input, output): zip_io = StringIO() zip = zipfile.ZipFile(zip_io, 'w') info = zipfile.ZipInfo() info.filename = 'foo' info.date_time = input zip.writestr(info, 'foobar') zip.close() zip_io.seek(0) zip_read = zipfile.ZipFile(zip_io, 'r') self.assertEquals(output, zip_read.getinfo('foo').date_time) assert_zip_time((2009, 3, 9, 10, 9, 53), (2009, 3, 9, 10, 9, 52)) assert_zip_time((2009, 3, 9, 10, 9, 0), (2009, 3, 9, 10, 9, 0)) assert_zip_time((2009, 3, 9, 10, 9, 1), (2009, 3, 9, 10, 9, 0)) assert_zip_time((2009, 3, 9, 10, 9, 59), (2009, 3, 9, 10, 9, 58)) assert_zip_time((2009, 3, 9, 10, 9, 60), (2009, 3, 9, 10, 9, 60)) assert_zip_time((2009, 3, 9, 10, 9, 61), (2009, 3, 9, 10, 9, 60)) def test_suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(ZipBug)) return suite unittest.main()