63c0bbc5c9
Occasionally we have seen the mount command fail. The default error message says to set some environment variables and try again. We can just always set the environment and only print the output on failure. Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
76 lines
2.9 KiB
Python
76 lines
2.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import mock
|
|
import os
|
|
import sys
|
|
import unittest
|
|
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
|
|
|
|
from pungi.wrappers import iso
|
|
|
|
CORRECT_OUTPUT = '''dummy.iso: 31ff3e405e26ad01c63b62f6b11d30f6
|
|
Fragment sums: 6eb92e7bda221d7fe5f19b4d21468c9bf261d84c96d145d96c76444b9cbc
|
|
Fragment count: 20
|
|
Supported ISO: no
|
|
'''
|
|
|
|
INCORRECT_OUTPUT = '''This should never happen: File not found'''
|
|
|
|
|
|
class TestIsoUtils(unittest.TestCase):
|
|
@mock.patch('pungi.wrappers.iso.run')
|
|
def test_get_implanted_md5_correct(self, mock_run):
|
|
mock_run.return_value = (0, CORRECT_OUTPUT)
|
|
logger = mock.Mock()
|
|
self.assertEqual(iso.get_implanted_md5('dummy.iso', logger=logger),
|
|
'31ff3e405e26ad01c63b62f6b11d30f6')
|
|
self.assertEqual(mock_run.call_args_list,
|
|
[mock.call(['/usr/bin/checkisomd5', '--md5sumonly', 'dummy.iso'])])
|
|
self.assertEqual(logger.mock_calls, [])
|
|
|
|
@mock.patch('pungi.wrappers.iso.run')
|
|
def test_get_implanted_md5_incorrect(self, mock_run):
|
|
mock_run.return_value = (0, INCORRECT_OUTPUT)
|
|
logger = mock.Mock()
|
|
self.assertIsNone(iso.get_implanted_md5('dummy.iso', logger=logger))
|
|
self.assertEqual(mock_run.call_args_list,
|
|
[mock.call(['/usr/bin/checkisomd5', '--md5sumonly', 'dummy.iso'])])
|
|
self.assertGreater(len(logger.mock_calls), 0)
|
|
|
|
@mock.patch('pungi.util.run_unmount_cmd')
|
|
@mock.patch('pungi.wrappers.iso.run')
|
|
def test_mount_iso(self, mock_run, mock_unmount):
|
|
mock_run.return_value = (0, '')
|
|
with iso.mount('dummy') as temp_dir:
|
|
self.assertTrue(os.path.isdir(temp_dir))
|
|
self.assertEqual(len(mock_run.call_args_list), 1)
|
|
self.assertEqual(len(mock_unmount.call_args_list), 1)
|
|
self.assertFalse(os.path.isdir(temp_dir))
|
|
|
|
@mock.patch('pungi.util.run_unmount_cmd')
|
|
@mock.patch('pungi.wrappers.iso.run')
|
|
def test_mount_iso_always_unmounts(self, mock_run, mock_unmount):
|
|
mock_run.return_value = (0, '')
|
|
try:
|
|
with iso.mount('dummy') as temp_dir:
|
|
self.assertTrue(os.path.isdir(temp_dir))
|
|
raise RuntimeError()
|
|
except RuntimeError:
|
|
pass
|
|
self.assertEqual(len(mock_run.call_args_list), 1)
|
|
self.assertEqual(len(mock_unmount.call_args_list), 1)
|
|
self.assertFalse(os.path.isdir(temp_dir))
|
|
|
|
@mock.patch('pungi.util.run_unmount_cmd')
|
|
@mock.patch('pungi.wrappers.iso.run')
|
|
def test_mount_iso_raises_on_error(self, mock_run, mock_unmount):
|
|
log = mock.Mock()
|
|
mock_run.return_value = (1, 'Boom')
|
|
with self.assertRaises(RuntimeError):
|
|
with iso.mount('dummy', logger=log) as temp_dir:
|
|
self.assertTrue(os.path.isdir(temp_dir))
|
|
self.assertEqual(len(mock_run.call_args_list), 1)
|
|
self.assertEqual(len(mock_unmount.call_args_list), 0)
|
|
self.assertEqual(len(log.mock_calls), 1)
|