blob: 0dc2bc5eff4034a4cbc3380f535562e634fb5ff7 [file] [log] [blame]
# -*- coding: utf-8 -*-
# Copyright 2019 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.
"""build_target_lib tests."""
from __future__ import print_function
import os
from chromite.api.gen.chromiumos import common_pb2
from chromite.lib.build_target_lib import BuildTarget
from chromite.lib.build_target_lib import InvalidNameError
from chromite.lib import cros_test_lib
from chromite.lib import osutils
class BuildTargetTest(cros_test_lib.TempDirTestCase):
"""BuildTarget tests."""
def setUp(self):
self.sysroot = os.path.join(self.tempdir, 'sysroot')
self.sysroot_denormalized = os.path.join(self.tempdir, 'dne', '..',
'sysroot')
osutils.SafeMakedirs(self.sysroot)
def testEqual(self):
"""Sanity check for __eq__ method."""
bt1 = BuildTarget('board', profile='base')
bt2 = BuildTarget('board', profile='base')
bt3 = BuildTarget('different', profile='base')
bt4 = BuildTarget('board', profile='different')
self.assertEqual(bt1, bt2)
self.assertNotEqual(bt1, bt3)
self.assertNotEqual(bt1, bt4)
def testInvalidName(self):
"""Test invalid name check."""
with self.assertRaises(InvalidNameError):
BuildTarget('')
def testNormalRoot(self):
"""Test normalized sysroot path."""
target = BuildTarget('board', build_root=self.sysroot)
self.assertEqual(self.sysroot, target.root)
def testDenormalizedRoot(self):
"""Test a non-normal sysroot path."""
target = BuildTarget('board', build_root=self.sysroot_denormalized)
self.assertEqual(self.sysroot, target.root)
def testDefaultRoot(self):
"""Test the default sysroot path."""
target = BuildTarget('board')
self.assertEqual('/build/board', target.root)
def testFullPath(self):
"""Test full_path functionality."""
build_target = BuildTarget('board')
result = build_target.full_path('some/path')
self.assertEqual(result, '/build/board/some/path')
def testFullPathWithExtraArgs(self):
"""Test full_path functionality with extra args passed."""
build_target = BuildTarget('board')
path1 = 'some/path'
result = build_target.full_path(path1, '/abc', 'def', '/g/h/i')
self.assertEqual(result, '/build/board/some/path/abc/def/g/h/i')
def testConversion(self):
"""Test protobuf conversion methods."""
build_target = BuildTarget(name='board')
build_target_with_profile = BuildTarget('board', profile='profile')
proto = common_pb2.BuildTarget(name='board')
profile_proto = common_pb2.Profile(name='profile')
# Profile is moving to sysroot_lib.Profile.
self.assertEqual(proto, build_target.as_protobuf)
self.assertEqual(proto, build_target_with_profile.as_protobuf)
self.assertEqual(build_target, BuildTarget.from_protobuf(proto))
self.assertEqual(common_pb2.Profile(), build_target.profile_protobuf)
self.assertEqual(profile_proto, build_target_with_profile.profile_protobuf)