File: spdx_writer_test.py

package info (click to toggle)
chromium 120.0.6099.224-1~deb11u1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 6,112,112 kB
  • sloc: cpp: 32,907,025; ansic: 8,148,123; javascript: 3,679,536; python: 2,031,248; asm: 959,718; java: 804,675; xml: 617,256; sh: 111,417; objc: 100,835; perl: 88,443; cs: 53,032; makefile: 29,579; fortran: 24,137; php: 21,162; tcl: 21,147; sql: 20,809; ruby: 17,735; pascal: 12,864; yacc: 8,045; lisp: 3,388; lex: 1,323; ada: 727; awk: 329; jsp: 267; csh: 117; exp: 43; sed: 37
file content (80 lines) | stat: -rwxr-xr-x 2,523 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/usr/bin/env python3
# Copyright 2022 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Unit tests for //tools/spdx_writer.py."""

import collections
import os
import sys
import unittest

REPOSITORY_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))
sys.path.append(os.path.join(REPOSITORY_ROOT, 'tools', 'licenses'))

from spdx_writer import _get_spdx_path
from spdx_writer import _Package
from spdx_writer import _SPDXJSONWriter
from test_utils import path_from_root


class SpdxPathTest(unittest.TestCase):
  def test_get_spdx_path(self):
    actual = _get_spdx_path(path_from_root('src'),
                            path_from_root('src', 'root', 'third_party', 'abc'))
    self.assertEqual(actual, os.path.join(os.sep, 'root', 'third_party', 'abc'))

  def test_get_spdx_path_error(self):
    with self.assertRaises(ValueError):
      _get_spdx_path(path_from_root('src'),
                     path_from_root('some', 'other', 'path'))


class PackageTest(unittest.TestCase):
  def setUp(self):
    super().setUp()

    self.p = _Package('abc def ghi', path_from_root('src', 'LICENSE'))

  def test_package_spdx_id(self):
    self.assertEqual(self.p.package_spdx_id, 'SPDXRef-Package-abc-def-ghi')

  def test_license_spdx_id(self):
    self.assertEqual(self.p.license_spdx_id, 'LicenseRef-abc-def-ghi')


class SPDXJSONWriterTest(unittest.TestCase):
  def setUp(self):
    super().setUp()

    root_pkg = _Package('root', path_from_root('src', 'LICENSE'))
    self.writer = _SPDXJSONWriter(path_from_root('src'), root_pkg, '', '',
                                  '', lambda _: '')

  def test_get_dedup_id(self):
    id_dict = collections.defaultdict(int)
    elem_id = 'abc'

    id1 = self.writer._get_dedup_id(elem_id, id_dict)
    self.assertEqual(id1, elem_id)

    id2 = self.writer._get_dedup_id(elem_id, id_dict)
    self.assertEqual(id2, elem_id + '-1')

  def test_get_license_id(self):
    license_path = path_from_root('src', 'p1', 'LICENSE')
    p1 = _Package('p1', license_path)

    p1_id, need_license = self.writer._get_license_id(p1)
    self.assertEqual(p1_id, p1.license_spdx_id)
    self.assertTrue(need_license)

    # Try a new package with the same license path.
    p2 = _Package('p2', license_path)
    p2_id, need_license = self.writer._get_license_id(p2)
    self.assertEqual(p2_id, p1.license_spdx_id)
    self.assertFalse(need_license)


if __name__ == '__main__':
  unittest.main()