blob: 25204b9ed60aafbb5c0afebbc0a8f60dd001a50a [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."""
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'
]
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'}
]
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"
}
]
}"""
def __init__(self, *args, **kwargs):
unittest.TestCase.__init__(self, *args, **kwargs)
self.maxDiff = None
def testCreateList(self):
self.assertEqual(
create_pkg_info.CreateList(self.INPUT_LINES),
self.EXPECTED_LIST)
def testWriteJson(self):
mock_file = io.StringIO()
create_pkg_info.WriteJson(self.EXPECTED_LIST, mock_file)
self.assertEqual(mock_file.getvalue(), self.EXPECTED_JSON)
mock_file.close()
if __name__ == '__main__':
unittest.main()