You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
2.8 KiB
110 lines
2.8 KiB
#!/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.
|
|
|
|
"""Tests for fetch_gn_descs.py."""
|
|
|
|
from __future__ import print_function
|
|
|
|
import io
|
|
import unittest
|
|
|
|
import fetch_gn_descs
|
|
|
|
# pylint: disable=protected-access
|
|
|
|
|
|
class Test(unittest.TestCase):
|
|
"""Tests for fetch_gn_descs."""
|
|
|
|
def test_fix_result_removes_uninteresting_items(self):
|
|
items = {
|
|
'//uninteresting:a': {},
|
|
'//uninteresting:b': {
|
|
'sources': ['whee'],
|
|
},
|
|
'//uninteresting:c': {
|
|
'configs': ['whee'],
|
|
},
|
|
'//uninteresting:d': {
|
|
'sources': [],
|
|
'configs': [],
|
|
},
|
|
'//interesting:a': {
|
|
'sources': ['a'],
|
|
'configs': ['b'],
|
|
},
|
|
'//interesting:b': {
|
|
'sources': ['d'],
|
|
'configs': ['c'],
|
|
},
|
|
}
|
|
|
|
expected_items = {
|
|
'//interesting:a': items['//interesting:a'],
|
|
'//interesting:b': items['//interesting:b'],
|
|
}
|
|
|
|
self.assertDictEqual(
|
|
fetch_gn_descs._fix_result('/', '/', '/', items), expected_items)
|
|
|
|
def test_fix_result_translates_paths_in_out_dir(self):
|
|
items = {
|
|
'//interesting:a': {
|
|
'sources': ['//out_dir/foo', '//out_dir'],
|
|
'configs': ['b'],
|
|
},
|
|
}
|
|
|
|
expected_items = {
|
|
'//interesting:a': {
|
|
'sources': ['//out_translated/foo', '//out_translated/'],
|
|
'configs': ['b'],
|
|
},
|
|
}
|
|
|
|
self.assertDictEqual(
|
|
fetch_gn_descs._fix_result(
|
|
rename_out='//out_translated',
|
|
out_dir='/chromium/src/out_dir',
|
|
chromium_root='/chromium',
|
|
gn_desc=items,
|
|
),
|
|
expected_items,
|
|
)
|
|
|
|
def test_gn_desc_output_parsing_skips_pre_json_warnings(self):
|
|
gn_desc = io.StringIO('\n'.join((
|
|
'foo',
|
|
'warning: "{" is bad',
|
|
'{"bar": "baz",',
|
|
' "qux": true}',
|
|
)))
|
|
|
|
warnings, desc_json = fetch_gn_descs._parse_gn_desc_output(gn_desc)
|
|
self.assertEqual(warnings, '\n'.join((
|
|
'foo',
|
|
'warning: "{" is bad',
|
|
)))
|
|
self.assertEqual(desc_json, {
|
|
'bar': 'baz',
|
|
'qux': True,
|
|
})
|
|
|
|
def test_gn_desc_output_parsing_issues_no_warnings_if_none_are_present(self):
|
|
gn_desc = io.StringIO('{"bar": "baz"}')
|
|
warnings, desc_json = fetch_gn_descs._parse_gn_desc_output(gn_desc)
|
|
self.assertEqual(warnings, '')
|
|
self.assertEqual(desc_json, {'bar': 'baz'})
|
|
|
|
gn_desc = io.StringIO('\n \n\t\n{"bar": "baz"}')
|
|
warnings, desc_json = fetch_gn_descs._parse_gn_desc_output(gn_desc)
|
|
self.assertEqual(warnings, '')
|
|
self.assertEqual(desc_json, {'bar': 'baz'})
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|