Commit 751a87ad authored by Dmitry Shelepnev's avatar Dmitry Shelepnev
Browse files

Fix sopdscan.processzip: now addcattree called only for valid zip. Add tests for zipf module.

parent fcaea0d3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -108,11 +108,11 @@ class opdsScanner:
    def processzip(self,name,full_path,file):
        rel_file=os.path.relpath(file,settings.ROOT_LIB)
        if settings.ZIPRESCAN or (not opdsdb.zipisscanned(rel_file,1)):
            cat=opdsdb.addcattree(rel_file,1)
            zip_process_error = 0
            try:
                z = zipfile.ZipFile(file, 'r', allowZip64=True)
                filelist = z.namelist()
                cat = opdsdb.addcattree(rel_file, 1)
                for n in filelist:
                    try:
                        self.logger.debug('Start process ZIP file = '+file+' book file = '+n)
+1.66 KiB

File added.

No diff preview for this file type.

+1 −0
Original line number Diff line number Diff line
This novalid zip file for tests
+36 −0
Original line number Diff line number Diff line
import os

from django.test import TestCase

from opds_catalog import zipf as zipfile

class scanTestCase(TestCase):
    test_module_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    test_ROOTLIB = os.path.join(test_module_path, 'tests/data')
    test_zip = "books.zip"
    test_bad_zip = "badfile.zip"

    def setUp(self):
        pass

    def test_zip_valid(self):
        z = zipfile.ZipFile(os.path.join(self.test_ROOTLIB, self.test_zip), 'r', allowZip64=True)
        filelist = z.namelist()
        file_size = z.getinfo("539485.fb2").file_size
        file = z.open("539485.fb2")
        self.assertListEqual(filelist,["539603.fb2","539485.fb2","539273.fb2"])
        self.assertEquals(file_size,12293)
        self.assertEquals(file.read(38), b'<?xml version="1.0" encoding="utf-8"?>')
        file.close()


    def test_zip_novalid(self):
        bad_file_count = 0
        try:
            z = zipfile.ZipFile(os.path.join(self.test_ROOTLIB, self.test_bad_zip), 'r', allowZip64=True)
        except zipfile.BadZipFile:
            bad_file_count = 1

        self.assertEquals(bad_file_count, 1)