Skip to content

Commit

Permalink
tests: mock network functions so tests work with no network
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
AdamWill committed Oct 16, 2024
1 parent b3407ce commit 03edaa6
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 3 deletions.
2 changes: 1 addition & 1 deletion README
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ dnf install python3-requests python3-cryptography python3-libvirt python3-lxml p

If you wish to test on EL 7, make that:

yum install python-requests python-cryptography libvirt-python python-lxml python-libguestfs pytest python-monotonic
yum install python-requests python-cryptography libvirt-python python-lxml python-libguestfs pytest python-monotonic python-mock

then run the tests:

Expand Down
9 changes: 8 additions & 1 deletion tests/guest/test_guest.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@
from io import StringIO
import logging
import os
try:
from unittest import mock
except ImportError:
import mock

# Find oz library
prefix = '.'
Expand Down Expand Up @@ -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 = """
Expand Down
7 changes: 6 additions & 1 deletion tests/tdl/test_tdl.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

import sys
import os
try:
from unittest import mock
except ImportError:
import mock

try:
import lxml.etree
Expand Down Expand Up @@ -100,7 +104,8 @@
}

# 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
Expand Down

0 comments on commit 03edaa6

Please sign in to comment.