Skip to content
Snippets Groups Projects
Select Git revision
  • bd2b12a232a789b3aa956385438f2c276e8180ff
  • main default protected
  • dev
  • f-unmod
  • f-checkidentical
  • f-simple-breakpoint
  • f-new-debug-tree
  • f-existing-file-id
  • f-no-ident
  • f-collect-problems
  • f-refactor-debug-tree
  • v0.13.0
  • v0.12.0
  • v0.11.0
  • v0.10.1
  • v0.10.0
  • v0.9.1
  • v0.9.0
  • v0.8.0
  • v0.7.1
  • v0.7.0
  • v0.6.0
  • v0.5.0
  • v0.4.0
  • v0.3.0
  • v0.2.0
  • v0.1.0
27 results

test_zipfile_converter.py

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    test_zipfile_converter.py 2.49 KiB
    #!/usr/bin/env python3
    # encoding: utf-8
    #
    # This file is a part of the LinkAhead Project.
    #
    # Copyright (C) 2024 Indiscale GmbH <info@indiscale.com>
    # Copyright (C) 2024 Alexander Schlemmer <a.schlemmer@indiscale.com>
    #
    # This program is free software: you can redistribute it and/or modify
    # it under the terms of the GNU Affero General Public License as
    # published by the Free Software Foundation, either version 3 of the
    # License, or (at your option) any later version.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU Affero General Public License for more details.
    #
    # You should have received a copy of the GNU Affero General Public License
    # along with this program. If not, see <https://www.gnu.org/licenses/>.
    #
    
    """
    test the zip-file converter
    """
    import importlib
    import os
    from pathlib import Path
    
    import pytest
    import yaml
    from caoscrawler.converters import DirectoryConverter, ZipFileConverter
    from caoscrawler.stores import GeneralStore
    from caoscrawler.structure_elements import Directory, File
    
    UNITTESTDIR = Path(__file__).parent
    
    
    @pytest.fixture
    def converter_registry():
        converter_registry: dict[str, dict[str, str]] = {
            "ZipFile": {
                "converter": "ZipFileConverter",
                "package": "caoscrawler.converters"},
        }
    
        for key, value in converter_registry.items():
            module = importlib.import_module(value["package"])
            value["class"] = getattr(module, value["converter"])
        return converter_registry
    
    
    def test_zipfile_converter(converter_registry):
        zipfile = File("PASTA.eln", os.path.join(UNITTESTDIR, "eln_files", "PASTA.eln"))
        zip_conv = ZipFileConverter(yaml.safe_load("""
    type: ZipFile
    match: .*$
    """), "TestZipFileConverter", converter_registry)
    
        match = zip_conv.match(zipfile)
        assert match is not None
    
        children = zip_conv.create_children(GeneralStore(), zipfile)
        assert len(children) == 1
        assert children[0].name == "PASTA"
    
        dir_conv = DirectoryConverter(yaml.safe_load("""
    type: Directory
    match: ^PASTA$
    """), "TestDirectory", converter_registry)
        match = dir_conv.match(children[0])
        assert match is not None
        children = dir_conv.create_children(GeneralStore(), children[0])
        assert len(children) == 5
        print(children)
        for i in range(2):
            assert isinstance(children[i], Directory)
        for i in range(2, 5):
            assert isinstance(children[i], File)