blob: 60ad828ac1b5445a549c70ad8cf4b6aea0f10155 [file] [log] [blame]
# -*- coding: utf-8 -*-
# Copyright (c) 2012 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.
"""Unittests for the module."""
from __future__ import print_function
import os
import sys
from chromite.lib import binpkg
from chromite.lib import cros_test_lib
from chromite.lib import gs_unittest
from chromite.lib import osutils
assert sys.version_info >= (3, 6), 'This module requires Python 3.6+'
CPV: chromeos-base/shill-0.0.1-r1
CPV: chromeos-base/test-0.0.1-r1
class FetchTarballsTest(cros_test_lib.MockTempDirTestCase):
"""Tests for GSContext that go over the network."""
def testFetchFakePackages(self):
"""Pretend to fetch binary packages."""
gs_mock = self.StartPatcher(gs_unittest.GSContextMock())
uri = 'gs://foo/bar'
packages_uri = '{}/Packages'.format(uri)
packages_file = """URI: gs://foo
CPV: boo/baz
PATH boo/baz.tbz2
gs_mock.AddCmdResult(['cat', packages_uri], output=packages_file)
binpkg.FetchTarballs([uri], self.tempdir)
def testFetchRealPackages(self):
"""Actually fetch a real binhost from the network."""
uri = 'gs://chromeos-prebuilt/board/lumpy/paladin-R37-5905.0.0-rc2/packages'
binpkg.FetchTarballs([uri], self.tempdir)
class DebugSymbolsTest(cros_test_lib.TempDirTestCase):
"""Tests for the debug symbols handling in binpkg."""
def testDebugSymbolsDetected(self):
"""When generating the Packages file, DEBUG_SYMBOLS is updated."""
'hello', makedirs=True)
osutils.WriteFile(os.path.join(self.tempdir, 'Packages'),
index = binpkg.GrabLocalPackageIndex(self.tempdir)
self.assertEqual(index.packages[0]['CPV'], 'chromeos-base/shill-0.0.1-r1')
self.assertEqual(index.packages[0].get('DEBUG_SYMBOLS'), 'yes')
self.assertFalse('DEBUG_SYMBOLS' in index.packages[1])
class PackageIndexTest(cros_test_lib.TempDirTestCase):
"""Package index tests."""
def testReadWrite(self):
"""Sanity check that the read and write method work properly."""
packages1 = os.path.join(self.tempdir, 'Packages1')
packages2 = os.path.join(self.tempdir, 'Packages2')
# Set some data.
pkg_index = binpkg.PackageIndex()
pkg_index.header['A'] = 'B'
pkg_index.packages = [
{'CPV': 'foo/bar',
'KEY': 'value'},
{'CPV': 'cat/pkg',
'KEY': 'also_value'},
# Write the package index files using each writing method.
pkg_index.modified = True
with open(packages2, 'w') as f:
tmpf = pkg_index.WriteToNamedTemporaryFile()
# Make sure the files are the same.
fc1 = osutils.ReadFile(packages1)
fc2 = osutils.ReadFile(packages2)
fc3 =
self.assertEqual(fc1, fc2)
self.assertEqual(fc1, fc3)
# Make sure it parses out the same data we wrote.
with open(packages1) as f:
read_index = binpkg.PackageIndex()
self.assertDictEqual(pkg_index.header, read_index.header)
self.assertCountEqual(pkg_index.packages, read_index.packages)