106 lines
3.6 KiB
Diff
106 lines
3.6 KiB
Diff
From a3dbafe9294948708da9e5030f044f695a99b999 Mon Sep 17 00:00:00 2001
|
|
From: Adam Williamson <awilliam@redhat.com>
|
|
Date: Thu, 25 Jan 2024 15:55:03 -0800
|
|
Subject: [PATCH] tests: mock network functions so tests work with no network
|
|
|
|
There's a few places where the tests implicitly need a network
|
|
connection. Mainly, since the TDL XML test blocks in test_guest
|
|
are for a subclass of RedHatLinuxCDYumGuest and specify a URL,
|
|
we wind up hitting RedHatLinuxCDYumGuest._check_url which tries
|
|
to get the headers for the URL to figure out if the server
|
|
supports byte ranges. Let's just mock out the header retrieval
|
|
to make that method happy. Secondly, test-53-command-http-url.tdl
|
|
specifies an HTTP URL, so we wind up trying to retrieve it;
|
|
mock out the actual download, since that's not what this test is
|
|
really exercising.
|
|
|
|
Signed-off-by: Adam Williamson <awilliam@redhat.com>
|
|
---
|
|
Containerfile.tests.el7 | 2 +-
|
|
README | 2 +-
|
|
tests/guest/test_guest.py | 9 ++++++++-
|
|
tests/tdl/test_tdl.py | 7 ++++++-
|
|
4 files changed, 16 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/Containerfile.tests.el7 b/Containerfile.tests.el7
|
|
index 06a9b78..406fbb8 100644
|
|
--- a/Containerfile.tests.el7
|
|
+++ b/Containerfile.tests.el7
|
|
@@ -4,7 +4,7 @@
|
|
FROM quay.io/centos/centos:7
|
|
RUN set -exo pipefail \
|
|
&& yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
|
|
- && yum install -y python-requests m2crypto libvirt-python python-lxml python-libguestfs pytest python-monotonic libvirt \
|
|
+ && yum install -y python-requests m2crypto libvirt-python python-lxml python-libguestfs pytest python-monotonic python-mock libvirt \
|
|
&& yum clean all \
|
|
&& rm -rf /var/cache/* /var/log/yum*
|
|
|
|
diff --git a/README b/README
|
|
index 5f2c983..c53e23d 100644
|
|
--- a/README
|
|
+++ b/README
|
|
@@ -28,7 +28,7 @@ dnf install python3-requests python3-m2crypto python3-libvirt python3-lxml pytho
|
|
|
|
If you wish to test on EL 7, make that:
|
|
|
|
-yum install python-requests m2crypto libvirt-python python-lxml python-libguestfs pytest python-monotonic
|
|
+yum install python-requests m2crypto libvirt-python python-lxml python-libguestfs pytest python-monotonic python-mock
|
|
|
|
then run the tests:
|
|
|
|
diff --git a/tests/guest/test_guest.py b/tests/guest/test_guest.py
|
|
index 625eb67..880807b 100644
|
|
--- a/tests/guest/test_guest.py
|
|
+++ b/tests/guest/test_guest.py
|
|
@@ -12,6 +12,10 @@ except:
|
|
from io import StringIO
|
|
import logging
|
|
import os
|
|
+try:
|
|
+ from unittest import mock
|
|
+except ImportError:
|
|
+ import mock
|
|
|
|
# Find oz library
|
|
prefix = '.'
|
|
@@ -72,7 +76,10 @@ def setup_guest(xml, macaddress=None):
|
|
config = configparser.ConfigParser()
|
|
config.read_file(StringIO("[libvirt]\nuri=qemu:///session\nbridge_name=%s" % route))
|
|
|
|
- guest = oz.GuestFactory.guest_factory(tdl, config, None, macaddress=macaddress)
|
|
+ # mock this - it's used in RedHatLinuxCDYumGuest._check_url() -
|
|
+ # so the tests can run without a network connection
|
|
+ with mock.patch("oz.ozutil.http_get_header", return_value={}):
|
|
+ guest = oz.GuestFactory.guest_factory(tdl, config, None, macaddress=macaddress)
|
|
return guest
|
|
|
|
tdlxml = """
|
|
diff --git a/tests/tdl/test_tdl.py b/tests/tdl/test_tdl.py
|
|
index a94b2c1..badee63 100644
|
|
--- a/tests/tdl/test_tdl.py
|
|
+++ b/tests/tdl/test_tdl.py
|
|
@@ -2,6 +2,10 @@
|
|
|
|
import sys
|
|
import os
|
|
+try:
|
|
+ from unittest import mock
|
|
+except ImportError:
|
|
+ import mock
|
|
|
|
try:
|
|
import lxml.etree
|
|
@@ -97,7 +101,8 @@ tests = {
|
|
}
|
|
|
|
# Test that iterates over all .tdl files
|
|
-def test_all():
|
|
+@mock.patch("oz.ozutil.http_download_file")
|
|
+def test_all(fakedl):
|
|
for (tdl, expected_pass) in list(tests.items()):
|
|
|
|
# locate full path for tdl file
|
|
--
|
|
2.43.0
|
|
|