blob: 9c543e66536bd76745cef677dcff076a4f396d3a [file] [log] [blame] [edit]
#!/usr/bin/python
# Copyright (c) 2014 The Native Client 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 packages info."""
import collections
import os
import unittest
import packages_info
CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
TEST_PACKAGES_JSON = os.path.join(CURRENT_DIR, 'test_packages.json')
TEST_PLATFORM = 'platform'
TEST_ARCH_ALL = 'arch_all'
TEST_ARCH_SHARED = 'arch_shared'
TEST_ARCH_NON_SHARED = 'arch_non_shared'
TEST_EMPTY_PACKAGE_TARGET = 'empty_package_target'
class TestPackagesInfo(unittest.TestCase):
def setUp(self):
self._packages = packages_info.PackagesInfo(TEST_PACKAGES_JSON)
def test_LoadPackagesFilePath(self):
self.assertTrue(
self._packages.GetPackageTargets(TEST_PLATFORM, TEST_ARCH_ALL)
)
def test_LoadPackagesFilePointer(self):
with open(TEST_PACKAGES_JSON, 'rt') as f:
packages = packages_info.PackagesInfo(f)
self.assertTrue(packages.GetPackageTargets(TEST_PLATFORM, TEST_ARCH_ALL))
def test_SharedMarkShared(self):
shared_package_targets = self._packages.GetPackageTargets(
TEST_PLATFORM,
TEST_ARCH_SHARED
)
self.assertTrue(shared_package_targets)
for package_target in shared_package_targets:
for package in self._packages.GetPackages(package_target):
self.assertTrue(self._packages.IsSharedPackage(package))
def test_NonSharedNotMarkShared(self):
non_shared_targets = self._packages.GetPackageTargets(
TEST_PLATFORM,
TEST_ARCH_NON_SHARED
)
self.assertTrue(non_shared_targets)
for package_target in non_shared_targets:
for package in self._packages.GetPackages(package_target):
self.assertFalse(self._packages.IsSharedPackage(package))
def test_SplitPackageTargets(self):
all_package_targets = self._packages.GetPackageTargets(
TEST_PLATFORM,
TEST_ARCH_ALL
)
package_targets_1 = self._packages.GetPackageTargets(
TEST_PLATFORM,
TEST_ARCH_SHARED
)
package_targets_2 = self._packages.GetPackageTargets(
TEST_PLATFORM,
TEST_ARCH_NON_SHARED
)
set_all = set(all_package_targets)
set_1 = set(package_targets_1)
set_2 = set(package_targets_2)
self.assertFalse(set_1.intersection(set_2))
self.assertEqual(set_all, set_1.union(set_2))
def test_InvalidPackageTargetPackages(self):
self.assertEqual(None, self._packages.GetPackages('InvalidPackageTarget'))
def test_ValidPackageTargetPackages(self):
all_package_targets = self._packages.GetPackageTargets(
TEST_PLATFORM,
TEST_ARCH_ALL
)
for package_target in all_package_targets:
packages = self._packages.GetPackages(package_target)
self.assertTrue(isinstance(packages,list))
def test_EmptyPackageTargetPackages(self):
packages = self._packages.GetPackages(TEST_EMPTY_PACKAGE_TARGET)
self.assertEqual([], packages)
def test_GetPackagesTargetsForPackage(self):
all_package_targets = self._packages.GetPackageTargets(
TEST_PLATFORM,
TEST_ARCH_ALL
)
package_targets_dict = collections.defaultdict(set)
for package_target in all_package_targets:
for package in self._packages.GetPackages(package_target):
package_targets_dict[package].add(package_target)
for package, expected_package_targets in package_targets_dict.iteritems():
package_targets = self._packages.GetPackageTargetsForPackage(package)
self.assertEqual(expected_package_targets, set(package_targets))
if __name__ == '__main__':
unittest.main()