コード例 #1
0
    def test_scanpipe_pipes_scancode_virtual_codebase(self):
        project = Project.objects.create(name="asgiref")
        input_location = self.data_location / "asgiref-3.3.0_scan.json"
        virtual_codebase = scancode.get_virtual_codebase(
            project, input_location)
        self.assertEqual(19, len(virtual_codebase.resources.keys()))

        scancode.create_codebase_resources(project, virtual_codebase)
        scancode.create_discovered_packages(project, virtual_codebase)

        self.assertEqual(18, CodebaseResource.objects.count())
        self.assertEqual(1, DiscoveredPackage.objects.count())
        # Make sure the root is not created as a CodebaseResource, walk(skip_root=True)
        self.assertFalse(
            CodebaseResource.objects.filter(path="codebase").exists())

        # Make sure the root is properly stripped, see `.get_path(strip_root=True)`
        self.assertFalse(
            CodebaseResource.objects.filter(
                path__startswith="codebase").exists())

        # Make sure the detected package is properly assigned to its codebase resource
        package = DiscoveredPackage.objects.get()
        expected = "asgiref-3.3.0-py3-none-any.whl"
        self.assertEqual(expected, package.codebase_resources.get().path)

        # The functions can be called again and existing objects are skipped
        scancode.create_codebase_resources(project, virtual_codebase)
        scancode.create_discovered_packages(project, virtual_codebase)
        self.assertEqual(18, CodebaseResource.objects.count())
        self.assertEqual(1, DiscoveredPackage.objects.count())
コード例 #2
0
    def test_scanpipe_pipes_scancode_create_codebase_resources_inject_policy(
            self):
        project = Project.objects.create(name="asgiref")
        input_location = self.data_location / "asgiref-3.3.0_scan.json"
        virtual_codebase = scancode.get_virtual_codebase(
            project, input_location)

        scanpipe_app.license_policies_index = license_policies_index
        scancode.create_codebase_resources(project, virtual_codebase)
        resources = project.codebaseresources

        resource1 = resources.get(
            path__endswith="asgiref-3.3.0.dist-info/LICENSE")
        self.assertEqual("bsd-new", resource1.licenses[0]["key"])
        self.assertNotIn("bsd-new", license_policies_index)
        self.assertIsNone(resource1.licenses[0]["policy"])

        resource2 = resources.get(path__endswith="asgiref/timeout.py")
        self.assertEqual("apache-2.0", resource2.licenses[0]["key"])
        expected = {
            "label": "Approved License",
            "color_code": "#008000",
            "license_key": "apache-2.0",
            "compliance_alert": "",
        }
        self.assertEqual(expected, resource2.licenses[0]["policy"])
コード例 #3
0
 def build_inventory_from_scan(self):
     """
     Process the JSON scan to populate resources and packages.
     """
     project = self.project
     scanned_codebase = scancode.get_virtual_codebase(project, self.input_location)
     scancode.create_codebase_resources(project, scanned_codebase)
     scancode.create_discovered_packages(project, scanned_codebase)
コード例 #4
0
ファイル: test_pipes.py プロジェクト: vvalorous/scancode.io
    def test_scanpipe_pipes_scancode_virtual_codebase(self):
        project = Project.objects.create(name="asgiref")
        input_location = self.data_location / "asgiref-3.3.0_scan.json"
        virtual_codebase = scancode.get_virtual_codebase(project, input_location)
        self.assertEqual(19, len(virtual_codebase.resources.keys()))

        scancode.create_codebase_resources(project, virtual_codebase)
        scancode.create_discovered_packages(project, virtual_codebase)

        self.assertEqual(19, CodebaseResource.objects.count())
        self.assertEqual(1, DiscoveredPackage.objects.count())

        # The functions can be called again and existing objects are skipped
        scancode.create_codebase_resources(project, virtual_codebase)
        scancode.create_discovered_packages(project, virtual_codebase)
        self.assertEqual(19, CodebaseResource.objects.count())
        self.assertEqual(1, DiscoveredPackage.objects.count())
コード例 #5
0
ファイル: test_pipes.py プロジェクト: vvalorous/scancode.io
    def test_scanpipe_pipes_codebase_get_tree(self):
        fixtures = self.data_location / "asgiref-3.3.0_fixtures.json"
        call_command("loaddata", fixtures, **{"verbosity": 0})
        project = Project.objects.get(name="asgiref")

        scan_results = self.data_location / "asgiref-3.3.0_scan.json"
        virtual_codebase = scancode.get_virtual_codebase(project, scan_results)
        project_codebase = codebase.ProjectCodebase(project)

        fields = ["name", "path"]
        virtual_tree = codebase.get_tree(
            virtual_codebase.root, fields, codebase=virtual_codebase
        )
        project_tree = codebase.get_tree(project_codebase.root, fields)

        with open(self.data_location / "asgiref-3.3.0_tree.json") as f:
            expected = json.loads(f.read())

        self.assertEqual(expected, project_tree)
        self.assertEqual(expected, virtual_tree)