| #!/usr/bin/env python3 |
| # -*- coding: utf-8 -*- |
| # Copyright 2020 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Unit tests for create_pkg_info.""" |
| |
| from __future__ import print_function |
| |
| import io |
| import unittest |
| |
| import create_pkg_info |
| |
| |
| class CreatePkgInfoTest(unittest.TestCase): |
| """All the tests.""" |
| |
| INSTALLED_PKG_INPUT_LINES = [ |
| 'app-arch/gzip-1.9', |
| 'dev-libs/popt-1.16-r2', |
| 'app-emulation/docker-credential-helpers-0.6.3-r1', |
| '_not.real-category1+/_not-real_package1-12.34.56.78', |
| ' _not.real-category1+/_not-real_package2-12.34.56.78-r26 ', |
| ' _not.real-category1+/_not-real_package3-12.34.56.78_rc3 ', |
| ' _not.real-category1+/_not-real_package4-12.34.56.78_rc3-r26 ', |
| ' _not.real-category1+/_not-real_package5-12.34.56.78_pre2_rc3-r26 ', |
| '_not.real-category2+/_not-real_package1-12.34.56.78q', |
| '_not.real-category2+/_not-real_package2-12.34.56.78q-r26', |
| '_not.real-category2+/_not-real_package3-12.34.56.78q_rc3', |
| '_not.real-category2+/_not-real_package4-12.34.56.78q_rc3-r26', |
| '_not.real-category2+/_not-real_package5-12.34.56.78q_pre2_rc3-r26' |
| ] |
| |
| BUILDTIME_PKG_INPUT_LINES = [ |
| 'virtual/pkgconfig-0-r1', |
| 'dev-go/protobuf-1.3.2-r1', |
| 'app-emulation/docker-credential-helpers-0.6.3-r1', |
| '_not.real-category1+/_not-real_package1-12.34.56.78', |
| ' _not.real-category1+/_not-real_package2-12.34.56.78-r26 ', |
| ' _not.real-category1+/_not-real_package3-12.34.56.78_rc3 ', |
| ' _not.real-category1+/_not-real_package4-12.34.56.78_rc3-r26 ', |
| ' _not.real-category1+/_not-real_package5-12.34.56.78_pre2_rc3-r26 ', |
| '_not.real-category2+/_not-real_package1-12.34.56.78q', |
| '_not.real-category2+/_not-real_package2-12.34.56.78q-r26', |
| '_not.real-category2+/_not-real_package3-12.34.56.78q_rc3', |
| '_not.real-category2+/_not-real_package4-12.34.56.78q_rc3-r26', |
| '_not.real-category2+/_not-real_package5-12.34.56.78q_pre2_rc3-r26' |
| ] |
| |
| |
| INSTALLED_PKG_EXPECTED_LIST = [ |
| {'category': 'app-arch', 'package': 'gzip', 'version_no_rev': '1.9', |
| 'revision': None}, |
| {'category': 'dev-libs', 'package': 'popt', 'version_no_rev': '1.16', |
| 'revision': '2'}, |
| {'category': 'app-emulation', 'package': 'docker-credential-helpers', |
| 'version_no_rev': '0.6.3', 'revision': '1'}, |
| {'category': '_not.real-category1+', 'package': '_not-real_package1', |
| 'version_no_rev': '12.34.56.78', 'revision': None}, |
| {'category': '_not.real-category1+', 'package': '_not-real_package2', |
| 'version_no_rev': '12.34.56.78', 'revision': '26'}, |
| {'category': '_not.real-category1+', 'package': '_not-real_package3', |
| 'version_no_rev': '12.34.56.78_rc3', 'revision': None}, |
| {'category': '_not.real-category1+', 'package': '_not-real_package4', |
| 'version_no_rev': '12.34.56.78_rc3', 'revision': '26'}, |
| {'category': '_not.real-category1+', 'package': '_not-real_package5', |
| 'version_no_rev': '12.34.56.78_pre2_rc3', 'revision': '26'}, |
| {'category': '_not.real-category2+', 'package': '_not-real_package1', |
| 'version_no_rev': '12.34.56.78q', 'revision': None}, |
| {'category': '_not.real-category2+', 'package': '_not-real_package2', |
| 'version_no_rev': '12.34.56.78q', 'revision': '26'}, |
| {'category': '_not.real-category2+', 'package': '_not-real_package3', |
| 'version_no_rev': '12.34.56.78q_rc3', 'revision': None}, |
| {'category': '_not.real-category2+', 'package': '_not-real_package4', |
| 'version_no_rev': '12.34.56.78q_rc3', 'revision': '26'}, |
| {'category': '_not.real-category2+', 'package': '_not-real_package5', |
| 'version_no_rev': '12.34.56.78q_pre2_rc3', 'revision': '26'} |
| ] |
| |
| BUILDTIME_PKG_EXPECTED_LIST = [ |
| {'category': 'virtual', 'package': 'pkgconfig', 'version_no_rev': '0', |
| 'revision': '1'}, |
| {'category': 'dev-go', 'package': 'protobuf', 'version_no_rev': '1.3.2', |
| 'revision': '1'}, |
| {'category': 'app-emulation', 'package': 'docker-credential-helpers', |
| 'version_no_rev': '0.6.3', 'revision': '1'}, |
| {'category': '_not.real-category1+', 'package': '_not-real_package1', |
| 'version_no_rev': '12.34.56.78', 'revision': None}, |
| {'category': '_not.real-category1+', 'package': '_not-real_package2', |
| 'version_no_rev': '12.34.56.78', 'revision': '26'}, |
| {'category': '_not.real-category1+', 'package': '_not-real_package3', |
| 'version_no_rev': '12.34.56.78_rc3', 'revision': None}, |
| {'category': '_not.real-category1+', 'package': '_not-real_package4', |
| 'version_no_rev': '12.34.56.78_rc3', 'revision': '26'}, |
| {'category': '_not.real-category1+', 'package': '_not-real_package5', |
| 'version_no_rev': '12.34.56.78_pre2_rc3', 'revision': '26'}, |
| {'category': '_not.real-category2+', 'package': '_not-real_package1', |
| 'version_no_rev': '12.34.56.78q', 'revision': None}, |
| {'category': '_not.real-category2+', 'package': '_not-real_package2', |
| 'version_no_rev': '12.34.56.78q', 'revision': '26'}, |
| {'category': '_not.real-category2+', 'package': '_not-real_package3', |
| 'version_no_rev': '12.34.56.78q_rc3', 'revision': None}, |
| {'category': '_not.real-category2+', 'package': '_not-real_package4', |
| 'version_no_rev': '12.34.56.78q_rc3', 'revision': '26'}, |
| {'category': '_not.real-category2+', 'package': '_not-real_package5', |
| 'version_no_rev': '12.34.56.78q_pre2_rc3', 'revision': '26'} |
| ] |
| |
| |
| EXPECTED_JSON = """{ |
| "installedPackages": [ |
| { |
| "category": "app-arch", |
| "name": "gzip", |
| "version": "1.9" |
| }, |
| { |
| "category": "dev-libs", |
| "name": "popt", |
| "version": "1.16", |
| "revision": "2" |
| }, |
| { |
| "category": "app-emulation", |
| "name": "docker-credential-helpers", |
| "version": "0.6.3", |
| "revision": "1" |
| }, |
| { |
| "category": "_not.real-category1+", |
| "name": "_not-real_package1", |
| "version": "12.34.56.78" |
| }, |
| { |
| "category": "_not.real-category1+", |
| "name": "_not-real_package2", |
| "version": "12.34.56.78", |
| "revision": "26" |
| }, |
| { |
| "category": "_not.real-category1+", |
| "name": "_not-real_package3", |
| "version": "12.34.56.78_rc3" |
| }, |
| { |
| "category": "_not.real-category1+", |
| "name": "_not-real_package4", |
| "version": "12.34.56.78_rc3", |
| "revision": "26" |
| }, |
| { |
| "category": "_not.real-category1+", |
| "name": "_not-real_package5", |
| "version": "12.34.56.78_pre2_rc3", |
| "revision": "26" |
| }, |
| { |
| "category": "_not.real-category2+", |
| "name": "_not-real_package1", |
| "version": "12.34.56.78q" |
| }, |
| { |
| "category": "_not.real-category2+", |
| "name": "_not-real_package2", |
| "version": "12.34.56.78q", |
| "revision": "26" |
| }, |
| { |
| "category": "_not.real-category2+", |
| "name": "_not-real_package3", |
| "version": "12.34.56.78q_rc3" |
| }, |
| { |
| "category": "_not.real-category2+", |
| "name": "_not-real_package4", |
| "version": "12.34.56.78q_rc3", |
| "revision": "26" |
| }, |
| { |
| "category": "_not.real-category2+", |
| "name": "_not-real_package5", |
| "version": "12.34.56.78q_pre2_rc3", |
| "revision": "26" |
| } |
| ], |
| "buildTimePackages": [ |
| { |
| "category": "virtual", |
| "name": "pkgconfig", |
| "version": "0", |
| "revision": "1" |
| }, |
| { |
| "category": "dev-go", |
| "name": "protobuf", |
| "version": "1.3.2", |
| "revision": "1" |
| }, |
| { |
| "category": "app-emulation", |
| "name": "docker-credential-helpers", |
| "version": "0.6.3", |
| "revision": "1" |
| }, |
| { |
| "category": "_not.real-category1+", |
| "name": "_not-real_package1", |
| "version": "12.34.56.78" |
| }, |
| { |
| "category": "_not.real-category1+", |
| "name": "_not-real_package2", |
| "version": "12.34.56.78", |
| "revision": "26" |
| }, |
| { |
| "category": "_not.real-category1+", |
| "name": "_not-real_package3", |
| "version": "12.34.56.78_rc3" |
| }, |
| { |
| "category": "_not.real-category1+", |
| "name": "_not-real_package4", |
| "version": "12.34.56.78_rc3", |
| "revision": "26" |
| }, |
| { |
| "category": "_not.real-category1+", |
| "name": "_not-real_package5", |
| "version": "12.34.56.78_pre2_rc3", |
| "revision": "26" |
| }, |
| { |
| "category": "_not.real-category2+", |
| "name": "_not-real_package1", |
| "version": "12.34.56.78q" |
| }, |
| { |
| "category": "_not.real-category2+", |
| "name": "_not-real_package2", |
| "version": "12.34.56.78q", |
| "revision": "26" |
| }, |
| { |
| "category": "_not.real-category2+", |
| "name": "_not-real_package3", |
| "version": "12.34.56.78q_rc3" |
| }, |
| { |
| "category": "_not.real-category2+", |
| "name": "_not-real_package4", |
| "version": "12.34.56.78q_rc3", |
| "revision": "26" |
| }, |
| { |
| "category": "_not.real-category2+", |
| "name": "_not-real_package5", |
| "version": "12.34.56.78q_pre2_rc3", |
| "revision": "26" |
| } |
| ] |
| }""" |
| |
| def __init__(self, *args, **kwargs): |
| unittest.TestCase.__init__(self, *args, **kwargs) |
| self.maxDiff = None |
| |
| def testCreateList(self): |
| self.assertEqual( |
| create_pkg_info.CreateList(self.INSTALLED_PKG_INPUT_LINES), |
| self.INSTALLED_PKG_EXPECTED_LIST) |
| self.assertEqual( |
| create_pkg_info.CreateList(self.BUILDTIME_PKG_INPUT_LINES), |
| self.BUILDTIME_PKG_EXPECTED_LIST) |
| |
| def testWriteJson(self): |
| mock_file = io.StringIO() |
| pkg_info = { |
| 'installedPackages': self.INSTALLED_PKG_EXPECTED_LIST, |
| 'buildTimePackages': self.BUILDTIME_PKG_EXPECTED_LIST, |
| } |
| create_pkg_info.WriteJson(pkg_info, mock_file) |
| self.assertEqual(mock_file.getvalue(), self.EXPECTED_JSON) |
| mock_file.close() |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |