Files
galaxy/test/unit/test_compression_util.py
T
Nicola Soranzo d545e88703 Add test case and use assertRaises()
Also remove temporary directory.
2019-04-12 12:41:48 +01:00

29 lines
1.0 KiB
Python

import shutil
import tempfile
import unittest
from galaxy.util.compression_utils import CompressedFile
class CompressionUtilTestCase(unittest.TestCase):
def test_compression_safety(self):
self.assert_safety("test-data/unsafe.tar", False)
self.assert_safety("test-data/unsafe_relative_symlink.tar", False)
self.assert_safety("test-data/unsafe.zip", False)
self.assert_safety("test-data/4.bed.zip", True)
self.assert_safety("test-data/testdir.tar", True)
self.assert_safety("test-data/safetar_with_symlink.tar", True)
self.assert_safety("test-data/safe_relative_symlink.tar", True)
def assert_safety(self, path, expected_to_be_safe):
temp_dir = tempfile.mkdtemp()
try:
if expected_to_be_safe:
CompressedFile(path).extract(temp_dir)
else:
with self.assertRaises(Exception):
CompressedFile(path).extract(temp_dir)
finally:
shutil.rmtree(temp_dir, ignore_errors=True)