blob: c91bab1e01e4cdc2432bff20e7547387fea1afba [file] [log] [blame]
#!/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": "123.0.1",
"ebuild_version": "1.9"
},
{
"category": "dev-libs",
"name": "popt",
"version": "123.0.1",
"ebuild_version": "1.16-r2"
},
{
"category": "app-emulation",
"name": "docker-credential-helpers",
"version": "123.0.1",
"ebuild_version": "0.6.3-r1"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package1",
"version": "123.0.1",
"ebuild_version": "12.34.56.78"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package2",
"version": "123.0.1",
"ebuild_version": "12.34.56.78-r26"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package3",
"version": "123.0.1",
"ebuild_version": "12.34.56.78_rc3"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package4",
"version": "123.0.1",
"ebuild_version": "12.34.56.78_rc3-r26"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package5",
"version": "123.0.1",
"ebuild_version": "12.34.56.78_pre2_rc3-r26"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package1",
"version": "123.0.1",
"ebuild_version": "12.34.56.78q"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package2",
"version": "123.0.1",
"ebuild_version": "12.34.56.78q-r26"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package3",
"version": "123.0.1",
"ebuild_version": "12.34.56.78q_rc3"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package4",
"version": "123.0.1",
"ebuild_version": "12.34.56.78q_rc3-r26"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package5",
"version": "123.0.1",
"ebuild_version": "12.34.56.78q_pre2_rc3-r26"
}
],
"buildTimePackages": [
{
"category": "virtual",
"name": "pkgconfig",
"version": "123.0.1",
"ebuild_version": "0-r1"
},
{
"category": "dev-go",
"name": "protobuf",
"version": "123.0.1",
"ebuild_version": "1.3.2-r1"
},
{
"category": "app-emulation",
"name": "docker-credential-helpers",
"version": "123.0.1",
"ebuild_version": "0.6.3-r1"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package1",
"version": "123.0.1",
"ebuild_version": "12.34.56.78"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package2",
"version": "123.0.1",
"ebuild_version": "12.34.56.78-r26"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package3",
"version": "123.0.1",
"ebuild_version": "12.34.56.78_rc3"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package4",
"version": "123.0.1",
"ebuild_version": "12.34.56.78_rc3-r26"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package5",
"version": "123.0.1",
"ebuild_version": "12.34.56.78_pre2_rc3-r26"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package1",
"version": "123.0.1",
"ebuild_version": "12.34.56.78q"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package2",
"version": "123.0.1",
"ebuild_version": "12.34.56.78q-r26"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package3",
"version": "123.0.1",
"ebuild_version": "12.34.56.78q_rc3"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package4",
"version": "123.0.1",
"ebuild_version": "12.34.56.78q_rc3-r26"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package5",
"version": "123.0.1",
"ebuild_version": "12.34.56.78q_pre2_rc3-r26"
}
]
}"""
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, '123.0.1', mock_file)
print(mock_file.getvalue())
self.assertEqual(mock_file.getvalue(), self.EXPECTED_JSON)
mock_file.close()
if __name__ == '__main__':
unittest.main()