blob: aabb15b94b235b7c2a9e8995dc5cfee2de4b81ed [file] [log] [blame]
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright 2018 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.
# pylint: disable=module-missing-docstring,class-missing-docstring
from __future__ import print_function
import json
import os
import cros_config_test_schema
import libcros_schema
from chromite.lib import cros_test_lib
from chromite.lib import osutils
BASIC_CONFIG = """
mosys-base: &mosys_base_cmds
name: 'mosys'
args:
- 'platform id'
- 'platform name'
nautilus-mosys-base: &nautilus_mosys_cmds
name: 'mosys'
args:
- 'platform version'
cros-config-base: &cros_config_base_cmds
name: 'cros-config'
args:
- '/ brand-name'
cros-config-lte: &cros_config_lte_cmds
name: 'cros-config'
args:
- '/arc/build-properties device'
chromeos:
devices:
- device-name: 'nautilus'
command-groups:
- *mosys_base_cmds
- *nautilus_mosys_cmds
- *cros_config_base_cmds
- device-name: 'nautiluslte'
command-groups:
- *mosys_base_cmds
- *nautilus_mosys_cmds
- *cros_config_base_cmds
- *cros_config_lte_cmds
"""
this_dir = os.path.dirname(__file__)
class ParseArgsTests(cros_test_lib.TestCase):
def testParseArgs(self):
argv = ['-s', 'schema', '-c', 'config', '-f', 'nautilus', '-o', 'output']
opts = cros_config_test_schema.ParseArgs(argv)
self.assertEqual(opts.schema, 'schema')
self.assertEqual(opts.config, 'config')
self.assertEqual(opts.filter, 'nautilus')
self.assertEqual(opts.output, 'output')
class TransformConfigTests(cros_test_lib.TestCase):
def testBasicTransform(self):
result = cros_config_test_schema.TransformConfig(BASIC_CONFIG)
json_dict = json.loads(result)
self.assertEqual(1, len(json_dict))
json_obj = libcros_schema.GetNamedTuple(json_dict)
self.assertEqual(2, len(json_obj.chromeos.devices))
device = json_obj.chromeos.devices[0]
self.assertEqual('nautilus', device.device_name)
self.assertEqual(3, len(device.command_groups))
device = json_obj.chromeos.devices[1]
self.assertEqual('nautiluslte', device.device_name)
self.assertEqual(4, len(device.command_groups))
def testTransformConfig_NoMatch(self):
result = cros_config_test_schema.TransformConfig(
BASIC_CONFIG, device_filter='abc123')
json_dict = json.loads(result)
json_obj = libcros_schema.GetNamedTuple(json_dict)
self.assertEqual(0, len(json_obj.chromeos.devices))
def testTransformConfig_FilterMatch(self):
result = cros_config_test_schema.TransformConfig(
BASIC_CONFIG, device_filter='nautilus')
json_dict = json.loads(result)
json_obj = libcros_schema.GetNamedTuple(json_dict)
self.assertEqual(1, len(json_obj.chromeos.devices))
device = json_obj.chromeos.devices[0]
self.assertEqual('nautilus', device.device_name)
self.assertEqual(3, len(device.command_groups))
class MainTests(cros_test_lib.TempDirTestCase):
def testMainImportNoFilter(self):
output = os.path.join(self.tempdir, 'output.json')
cros_config_test_schema.Start(
os.path.join(this_dir, 'test_data/cros_config_test_device.yaml'),
None,
output,
None)
json_dict = json.loads(osutils.ReadFile(output))
json_obj = libcros_schema.GetNamedTuple(json_dict)
self.assertEqual(2, len(json_obj.chromeos.devices))
device = json_obj.chromeos.devices[0]
self.assertEqual('nautilus', device.device_name)
self.assertEqual(3, len(device.command_groups))
device = json_obj.chromeos.devices[1]
self.assertEqual('nautiluslte', device.device_name)
self.assertEqual(4, len(device.command_groups))
def testMainImportFilterNautilus(self):
output = os.path.join(self.tempdir, 'output.json')
cros_config_test_schema.Start(
os.path.join(this_dir, 'test_data/cros_config_test_device.yaml'),
'nautilus',
output,
None)
json_dict = json.loads(osutils.ReadFile(output))
json_obj = libcros_schema.GetNamedTuple(json_dict)
self.assertEqual(1, len(json_obj.chromeos.devices))
device = json_obj.chromeos.devices[0]
self.assertEqual('nautilus', device.device_name)
self.assertEqual(3, len(device.command_groups))
def testMainImportFilterNautilusLte(self):
output = os.path.join(self.tempdir, 'output.json')
cros_config_test_schema.Start(
os.path.join(this_dir, 'test_data/cros_config_test_device.yaml'),
'nautiluslte',
output,
None)
json_dict = json.loads(osutils.ReadFile(output))
json_obj = libcros_schema.GetNamedTuple(json_dict)
self.assertEqual(1, len(json_obj.chromeos.devices))
device = json_obj.chromeos.devices[0]
self.assertEqual('nautiluslte', device.device_name)
self.assertEqual(4, len(device.command_groups))
if __name__ == '__main__':
cros_test_lib.main(module=__name__)