| #!/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_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() |