Skip to content
Snippets Groups Projects
Select Git revision
  • d7d9e6f6e1c8a2f28d7c6a08a2011765d06e7a80
  • main default protected
  • dev protected
  • f-linkahead-rename
  • f-real-id
  • f-filesystem-import
  • f-filesystem-link
  • f-filesystem-directory
  • f-filesystem-core
  • f-filesystem-cleanup
  • f-filesystem-main
  • f-name
  • keep_changes
  • f-permission-checks-2
  • f-mysql8-tests
  • f-retrieve-history
  • t-distinct-parents
  • v8.1.0
  • v8.0.0
  • v7.0.2
  • v7.0.1
  • v7.0.0
  • v6.0.1
  • v6.0.0
  • v5.0.0
  • v4.1.0
  • v4.0.0
  • v3.0
  • v2.0.30
29 results

retrieveEntityProperties.sql

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    test_tool.py 5.61 KiB
    #!/bin/python
    # Tests for the tool using pytest
    # Adapted from check-sfs
    # A. Schlemmer, 06/2021
    
    from newcrawler import Crawler
    from newcrawler.converters import MarkdownFileConverter
    from newcrawler.structure_elements import File, DictTextElement, DictListElement
    from os.path import join, dirname, basename
    import caosdb as db
    
    def rfp(*pathcomponents):
        """
        Return full path.
        Shorthand convenience function.
        """
        return join(dirname(__file__), *pathcomponents)
    
    def dircheckstr(*pathcomponents):
        """
        Return the debug tree identifier for a given path.
        """
        return "newcrawler.structure_elements.Directory: " + basename(join(*pathcomponents)) + ", " + rfp("test_directories", "examples_article", *pathcomponents)
    
    def test_crawler():
        crawler = Crawler(debug=True)
        crawler.crawl_directory(rfp("test_directories", "examples_article"),
                  rfp("scifolder_cfood.yml"))
        
        subd = crawler.debug_tree[dircheckstr("DataAnalysis")]
        subc = crawler.debug_copied[dircheckstr("DataAnalysis")]
        assert len(subd) == 2
        assert len(subd[0]) == 0
        assert len(subd[1]) == 0
        assert len(subc) == 2
        assert len(subc[0]) == 0
        assert len(subc[1]) == 0
        
        subd = crawler.debug_tree[dircheckstr("DataAnalysis", "2020_climate-model-predict")]
        subc = crawler.debug_copied[dircheckstr("DataAnalysis", "2020_climate-model-predict")]
        
        assert len(subd[1]) == 1
        assert len(subd[1]["Project"].get_parents()) == 1
        assert subd[1]["Project"].get_parents()[0].name == "Project"
        assert subd[1]["Project"].get_property("date").value == "2020"
        assert subd[1]["Project"].get_property("identifier").value == "climate-model-predict"
        
        assert len(subd[0]) == 3
        assert subd[0]["date"] == "2020"
        assert subd[0]["identifier"] == "climate-model-predict"
        assert subd[0]["Project"].__class__ == db.Record
    
        # Check the copy flags for the first level in the hierarchy:
        assert len(subc[0]) == 3
        assert len(subc[1]) == 1
        assert subc[1]["Project"] is False
        assert subc[0]["Project"] is False
        assert subc[0]["date"] is False
        assert subc[0]["identifier"] is False
    
        
    
        subd = crawler.debug_tree[dircheckstr("DataAnalysis",
                                              "2020_climate-model-predict",
                                              "2020-02-08_prediction-errors")]
        subc = crawler.debug_copied[dircheckstr("DataAnalysis",
                                              "2020_climate-model-predict",
                                              "2020-02-08_prediction-errors")]
        assert len(subd[0]) == 4
        assert subd[0]["date"] == "2020-02-08"
        assert subd[0]["identifier"] == "prediction-errors"
        assert subd[0]["Project"].__class__ == db.Record
        assert subd[0]["Measurement"].__class__ == db.Record
    
        assert len(subd[1]) == 2
        
        assert len(subd[1]["Project"].get_parents()) == 1
        assert subd[1]["Project"].get_parents()[0].name == "Project"
        assert subd[1]["Project"].get_property("date").value == "2020"
        assert subd[1]["Project"].get_property("identifier").value == "climate-model-predict"
    
        assert len(subd[1]["Measurement"].get_parents()) == 1
        assert subd[1]["Measurement"].get_parents()[0].name == "Measurement"
        assert subd[1]["Measurement"].get_property("date").value == "2020-02-08"
        assert subd[1]["Measurement"].get_property("identifier").value == "prediction-errors"
        assert subd[1]["Measurement"].get_property("project").value != "$Project"
        assert subd[1]["Measurement"].get_property("project").value.__class__ == db.Record
        assert subd[1]["Measurement"].get_property("project").value == subd[0]["Project"]
    
        # Check the copy flags for the second level in the hierarchy:
        assert subc[1]["Project"] is True
        assert subc[0]["Project"] is True
        assert subc[1]["Measurement"] is False
        assert subc[0]["Measurement"] is False
        assert subc[0]["date"] is False
        assert subc[0]["identifier"] is False
    
    def test_markdown_converter():
        test_readme = File("README.md", rfp(
            "test_directories", "examples_article", "DataAnalysis",
            "2020_climate-model-predict", "2020-02-08_prediction-errors", "README.md"))
        
        converter = MarkdownFileConverter({
            "match": "(.*)"
        }, "TestMarkdownFileConverter")
    
        m = converter.match(File("test_tool.py", rfp(
            "test_tool.py")))
        assert m is None
    
        m = converter.match(test_readme)
        assert m is not None
        assert m.__class__ == dict
        assert len(m) == 0
    
        converter = MarkdownFileConverter({
            "match": "README.md"
        }, "TestMarkdownFileConverter")
    
        m = converter.match(test_readme)
        assert m is not None
        assert len(m) == 0
    
        children = converter.create_children(None, test_readme)
        assert len(children) == 5
        assert children[1].__class__ == DictTextElement
        assert children[1].name == "description"
        assert children[1].value.__class__ == str
    
        assert children[0].__class__ == DictTextElement
        assert children[0].name == "responsible"
        assert children[0].value.__class__ == str
    
        test_readme2 = File("README.md", rfp("test_directories", "examples_article", "ExperimentalData", "2020_SpeedOfLight", "2020-01-01_TimeOfFlight", "README.md"))
    
        m = converter.match(test_readme2)
        assert m is not None
        assert len(m) == 0
    
        children = converter.create_children(None, test_readme2)
        assert len(children) == 2
        assert children[1].__class__ == DictTextElement
        assert children[1].name == "description"
        assert children[1].value.__class__ == str
    
        assert children[0].__class__ == DictListElement
        assert children[0].name == "responsible"
        assert children[0].value.__class__ == list