mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
9ce47b3031
Summary: [edenfs] Move eden.cli namespace to eden.fs.cli Reviewed By: simpkins Differential Revision: D20520952 fbshipit-source-id: 182793867404dcb0753363282640f8fd4d2ff496
78 lines
3.0 KiB
Python
78 lines
3.0 KiB
Python
#!/usr/bin/env python3
|
|
# Copyright (c) Facebook, Inc. and its affiliates.
|
|
#
|
|
# This software may be used and distributed according to the terms of the
|
|
# GNU General Public License version 2.
|
|
|
|
import typing
|
|
|
|
from eden.fs.cli.config import EdenInstance
|
|
from eden.fs.cli.doctor import check_os
|
|
from eden.fs.cli.doctor.test.lib.fake_eden_instance import FakeEdenInstance
|
|
from eden.fs.cli.doctor.test.lib.testcase import DoctorTestBase
|
|
|
|
|
|
class OperatingSystemsCheckTest(DoctorTestBase):
|
|
def setUp(self) -> None:
|
|
test_config = {
|
|
"doctor.minimum-kernel-version": "4.11.3-67",
|
|
"doctor.known-bad-kernel-versions": "TODO,TEST",
|
|
}
|
|
tmp_dir = self.make_temporary_directory()
|
|
self.instance = FakeEdenInstance(tmp_dir, config=test_config)
|
|
|
|
def test_kernel_version_split(self) -> None:
|
|
test_versions = (
|
|
("1", (1, 0, 0, 0)),
|
|
("1.2", (1, 2, 0, 0)),
|
|
("1.2.3", (1, 2, 3, 0)),
|
|
("1.2.3.4", (1, 2, 3, 4)),
|
|
("1.2.3-4", (1, 2, 3, 4)),
|
|
("1.2.3.4-abc", (1, 2, 3, 4)),
|
|
("1.2.3-4.abc", (1, 2, 3, 4)),
|
|
("1.2.3.4-abc.def", (1, 2, 3, 4)),
|
|
("1.2.3-4.abc-def", (1, 2, 3, 4)),
|
|
)
|
|
for test_version, expected in test_versions:
|
|
with self.subTest(test_version=test_version):
|
|
result = check_os._parse_os_kernel_version(test_version)
|
|
self.assertEquals(result, expected)
|
|
|
|
def test_kernel_version_min(self) -> None:
|
|
# Each of these are ((test_value, expected_result), ...)
|
|
min_kernel_versions_tests = (
|
|
("4.6.7-73_fbk21_3608_gb5941a6", True),
|
|
("4.6", True),
|
|
("4.11", True),
|
|
("4.11.3", True),
|
|
("4.11.3.66", True),
|
|
("4.11.3-52_fbk13", True),
|
|
("4.11.3-77_fbk20_4162_g6e876878d18e", False),
|
|
("4.11.3-77", False),
|
|
)
|
|
for fake_release, expected in min_kernel_versions_tests:
|
|
with self.subTest(fake_release=fake_release):
|
|
result = check_os._os_is_kernel_version_too_old(
|
|
typing.cast(EdenInstance, self.instance), fake_release
|
|
)
|
|
self.assertIs(result, expected)
|
|
|
|
def test_bad_kernel_versions(self) -> None:
|
|
kernel_versions_tests = {
|
|
"999.2.3-4_TEST": True,
|
|
"777.1_TODO": True,
|
|
"4.16.18-151_fbk13": False,
|
|
}
|
|
for release, is_bad in kernel_versions_tests.items():
|
|
with self.subTest(release=release):
|
|
result = check_os._os_is_bad_release(
|
|
typing.cast(EdenInstance, self.instance), release
|
|
)
|
|
self.assertEqual(result, is_bad)
|
|
|
|
def test_custom_kernel_names(self) -> None:
|
|
custom_name = "4.16.18-custom_byme_3744_g7833bc918498"
|
|
instance = typing.cast(EdenInstance, self.instance)
|
|
self.assertFalse(check_os._os_is_kernel_version_too_old(instance, custom_name))
|
|
self.assertFalse(check_os._os_is_bad_release(instance, custom_name))
|