debian-forge/test/__main__.py
Ondřej Budai 7fabcfe333 stages/locale: Refactor locale stage to look like similar ones
The locale stage now cannot be used to set the keymap. Use the keymap
stage instead. Also, the stage was refactored to look like keymap and
timezone stages just to be consistent (systemd-firstboot is now used).
2019-09-10 09:22:26 +02:00

95 lines
3.1 KiB
Python

import argparse
import logging
import subprocess
import os
from test.integration_tests.test_case import IntegrationTestCase, IntegrationTestType
from test.integration_tests.config import *
logging.basicConfig(level=logging.getLevelName(os.environ.get("TESTS_LOGLEVEL", "INFO")))
def test_is_system_running(result):
assert result.strip() == "running"
def test_timezone(extract_dir):
link = os.readlink(f"{extract_dir}/etc/localtime")
assert "Europe/Prague" in link
def test_firewall(extract_dir):
with open(f"{extract_dir}/etc/firewalld/zones/public.xml") as f:
content = f.read()
assert 'service name="http"' in content
assert 'service name="ftp"' in content
assert 'service name="telnet"' not in content
assert 'port port="53" protocol="tcp"' in content
assert 'port port="88" protocol="udp"' in content
def test_locale(extract_dir):
with open(f"{extract_dir}/etc/locale.conf") as f:
content = f.read()
assert 'LANG=nn_NO.utf8' in content
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Run integration tests')
parser.add_argument('--list', dest='list', action='store_true', help='list test cases')
parser.add_argument('--build-pipeline', dest='build_pipeline', metavar='PIPELINE',
type=os.path.abspath, help='the build pipeline to run tests in')
parser.add_argument('--case', dest='specific_case', metavar='TEST_CASE', help='run single test case')
args = parser.parse_args()
logging.info(f"Using {OBJECTS} for objects storage.")
logging.info(f"Using {OUTPUT_DIR} for output images storage.")
logging.info(f"Using {OSBUILD} for building images.")
f30_boot = IntegrationTestCase(
name="f30-boot",
pipeline="f30-boot.json",
build_pipeline=args.build_pipeline,
output_image="f30-boot.qcow2",
test_cases=[test_is_system_running],
type=IntegrationTestType.BOOT_WITH_QEMU
)
timezone = IntegrationTestCase(
name="timezone",
pipeline="timezone.json",
build_pipeline=args.build_pipeline,
output_image="timezone.tar.xz",
test_cases=[test_timezone],
type=IntegrationTestType.EXTRACT
)
firewall = IntegrationTestCase(
name="firewall",
pipeline="firewall.json",
build_pipeline=args.build_pipeline,
output_image="firewall.tar.xz",
test_cases=[test_firewall],
type=IntegrationTestType.EXTRACT
)
locale = IntegrationTestCase(
name="locale",
pipeline="locale.json",
build_pipeline=args.build_pipeline,
output_image="locale.tar.xz",
test_cases=[test_locale],
type=IntegrationTestType.EXTRACT
)
cases = [f30_boot, timezone, firewall, locale]
if args.list:
print("Available test cases:")
for case in cases:
print(f" - {case.name}")
else:
if not args.specific_case:
for case in cases:
case.run()
else:
for case in cases:
if case.name == args.specific_case:
case.run()