mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
62 lines
2.4 KiB
Python
62 lines
2.4 KiB
Python
# test_host.py - Unit tests for swift_build_support.cmake -*-- python -*-
|
|
#
|
|
# This source file is part of the Swift.org open source project
|
|
#
|
|
# Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
|
|
# Licensed under Apache License v2.0 with Runtime Library Exception
|
|
#
|
|
# See https://swift.org/LICENSE.txt for license information
|
|
# See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
|
|
import platform
|
|
import unittest
|
|
|
|
import swift_build_support.host as sbs_host
|
|
|
|
|
|
class HostTestCase(unittest.TestCase):
|
|
|
|
def test_system_memory(self):
|
|
# We make sure that we get an integer back. If we get an integer back,
|
|
# we know that we at least were able to get some sort of information
|
|
# from the system and it could be parsed as an integer. This is just a
|
|
# smoke test.
|
|
supported_platforms = [('Darwin', 'x86_64')]
|
|
|
|
mem = sbs_host.system_memory()
|
|
|
|
if (platform.system(), platform.machine()) not in supported_platforms:
|
|
self.assertIsNone(mem)
|
|
else:
|
|
self.assertIsInstance(mem, int)
|
|
|
|
def test_lto_link_job_counts(self):
|
|
# Make sure that:
|
|
#
|
|
# 1. we get back a dictionary with two keys in it, the first called
|
|
# llvm, the other called swift.
|
|
#
|
|
# 2. The values associated with these keys is either None (if we do not
|
|
# support the platform) or is an int that is reasonable (i.e. <
|
|
# 100). The number 100 is just a heuristic number that is appropriate
|
|
# currently since LTO uses so much memory. If and when that changes,
|
|
# this number should change.
|
|
supported_platforms = [('Darwin', 'x86_64')]
|
|
reasonable_upper_bound_of_lto_threads = 100
|
|
|
|
result = sbs_host.max_lto_link_job_counts()
|
|
self.assertIsInstance(result, dict)
|
|
self.assertEqual(len(result), 2)
|
|
|
|
if (platform.system(), platform.machine()) not in supported_platforms:
|
|
self.assertIsNone(result['llvm'])
|
|
self.assertIsNone(result['swift'])
|
|
return
|
|
|
|
self.assertIsNotNone(result['llvm'])
|
|
self.assertIsNotNone(result['swift'])
|
|
self.assertIsInstance(result['llvm'], int)
|
|
self.assertIsInstance(result['swift'], int)
|
|
self.assertLess(result['llvm'], reasonable_upper_bound_of_lto_threads)
|
|
self.assertLess(result['swift'], reasonable_upper_bound_of_lto_threads)
|