Skip to content

Commit

Permalink
Skip tests.test_isofs if pycdlib is not available
Browse files Browse the repository at this point in the history
  • Loading branch information
althonos committed Dec 14, 2021
1 parent cc018c4 commit 1ba8530
Showing 1 changed file with 27 additions and 13 deletions.
40 changes: 27 additions & 13 deletions tests/test_isofs.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

import os
import io
import pycdlib
import tempfile
import unittest

Expand All @@ -15,11 +14,21 @@
import fs.wrap
import fs.errors
import fs.memoryfs
import fs.archive.isofs

from fs.path import relpath, join, forcedir, abspath, recursepath
from fs.archive.test import ArchiveReadTestCases, ArchiveIOTestCases
from fs.archive.isofs import _utils

try:
import pycdlib
except ImportError:
pycdlib = None

try:
from fs.archive.isofs import ISOReadFS, ISOFS, ISOSaver
from fs.archive.isofs import _utils as isofs_utils
except ImportError:
SevenZipReadFS = SevenZipFS = SevenZipSaver = None
isofs_utils = None


def compress(rr, joliet, il):
Expand Down Expand Up @@ -55,11 +64,12 @@ def iso_path(iso_entry, joliet=False, rock_ridge=False):

### rw FS ###

@unittest.skipUnless(pycdlib, 'pycdlib not available')
class TestISOFS(fs.test.FSTestCases, unittest.TestCase):

def make_fs(self):
self.tempfile = tempfile.mktemp()
return fs.archive.isofs.ISOFS(self.tempfile)
return ISOFS(self.tempfile)

def destroy_fs(self, fs):
fs.close()
Expand All @@ -70,12 +80,13 @@ def destroy_fs(self, fs):

### ro FS ###

@unittest.skipUnless(pycdlib, 'pycdlib not available')
class _TestISOReadFS(ArchiveReadTestCases):

long_names = False
unicode_names = False
make_source_fs = staticmethod(fs.memoryfs.MemoryFS)
_archive_read_fs = fs.archive.isofs.ISOReadFS
_archive_read_fs = ISOReadFS

@staticmethod
def remove_archive(handle):
Expand All @@ -86,7 +97,7 @@ def setUp(self):
super(_TestISOReadFS, self).setUp(handle)

def test_create_failed(self):
self.assertRaises(fs.errors.CreateFailed, fs.archive.isofs.ISOFS, 1)
self.assertRaises(fs.errors.CreateFailed, ISOFS, 1)


class TestISOv1ReadFS(_TestISOReadFS, unittest.TestCase):
Expand Down Expand Up @@ -131,15 +142,16 @@ class TestISOJolietReadFS(_TestISOReadFS, unittest.TestCase):

### FS IO ###

@unittest.skipUnless(pycdlib, 'pycdlib not available')
class TestISOFSio(ArchiveIOTestCases, unittest.TestCase):

compress = staticmethod(compress('1.12', False, 1))
make_source_fs = staticmethod(fs.memoryfs.MemoryFS)
_archive_fs = fs.archive.isofs.ISOFS
_archive_fs = ISOFS

@staticmethod
def load_archive(handle):
return fs.archive.isofs.ISOFS(handle)
return ISOFS(handle)

@staticmethod
def iter_entries(handle):
Expand Down Expand Up @@ -182,6 +194,7 @@ def iter_dirs(self, handle):

### FS Saver ###

@unittest.skipUnless(pycdlib, 'pycdlib not available')
class TestISOSaver(unittest.TestCase):

make_source_fs = staticmethod(fs.memoryfs.MemoryFS)
Expand All @@ -197,11 +210,11 @@ def test_unicode_duplicates(self):
source.settext('/☭☭.txt', 'some communism')

stream = io.BytesIO()
saver = fs.archive.isofs.ISOSaver(stream)
saver = ISOSaver(stream)
saver.save(source)

stream.seek(0)
iso = fs.archive.isofs.ISOReadFS(stream)
iso = ISOReadFS(stream)
self.assertEqual(
sorted(iso.listdir('/')),
['éé.txt', 'üü.txt' ,'☭☭.txt', '😋'],
Expand All @@ -215,14 +228,15 @@ def test_unicode_duplicates(self):

### utils ###

@unittest.skipUnless(isofs_utils, 'fs.archive.isofs not available')
class TestISOUtils(unittest.TestCase):

def test_name_slugify(self):
slugify = _utils.iso_name_slugify
slugify = isofs_utils.iso_name_slugify
self.assertEqual(slugify("épatant"), "_patant")

def test_name_increment(self):
increment = _utils.iso_name_increment
increment = isofs_utils.iso_name_increment
self.assertEqual(increment('foo.txt'), 'foo1.txt')
self.assertEqual(increment('foo1.txt'), 'foo2.txt')
self.assertEqual(increment('foo9.txt'), 'foo10.txt')
Expand All @@ -233,7 +247,7 @@ def test_name_increment(self):
self.assertEqual(increment('bar9', max_length=4), 'ba10')

def test_path_slugify(self):
slugify = _utils.iso_path_slugify
slugify = isofs_utils.iso_path_slugify
pt = {'/': '/'}
self.assertEqual(slugify('/abc.txt', pt), '/ABC.TXT')
self.assertEqual(slugify('/àbc.txt', pt), '/_BC.TXT')
Expand Down

0 comments on commit 1ba8530

Please sign in to comment.