diff --git a/fs_uae_wrapper/base.py b/fs_uae_wrapper/base.py index 6c3b939..401f9cd 100644 --- a/fs_uae_wrapper/base.py +++ b/fs_uae_wrapper/base.py @@ -297,6 +297,8 @@ class ArchiveBase(Base): logging.debug("_validate_options") validation_result = super(ArchiveBase, self)._validate_options() + if not validation_result: + return False if 'wrapper_archive' not in self.all_options: logging.warning("Configuration lacks of optional `wrapper_archive'" @@ -325,4 +327,3 @@ class ArchiveBase(Base): basename == os.path.splitext(fname)[0]): return fname return None - diff --git a/fs_uae_wrapper/message.py b/fs_uae_wrapper/message.py index a5c0bb0..562bd25 100644 --- a/fs_uae_wrapper/message.py +++ b/fs_uae_wrapper/message.py @@ -3,19 +3,15 @@ Display message in separate process """ import multiprocessing as mp import sys -try: - import tkinter as tk - from tkinter import ttk -except ImportError: - import Tkinter as tk - import ttk +import tkinter +import tkinter.ttk -class MessageGui(tk.Tk): +class MessageGui(tkinter.Tk): """Simple gui for displaying a message""" def __init__(self, parent=None, msg=""): - tk.Tk.__init__(self, parent) + tkinter.Tk.__init__(self, parent) self.grid() self.resizable(False, False) @@ -26,10 +22,11 @@ class MessageGui(tk.Tk): self.frame = ttk.Frame(self, padding=5, borderwidth=0) self.frame.grid() - ttk.Label(self.frame, text=msg, relief="ridge", padding=10).grid() + tkinter.ttk.Label(self.frame, text=msg, relief="ridge", + padding=10).grid() if 'linux' in sys.platform: - style = ttk.Style() + style = tkinter.ttk.Style() style.theme_use('clam') def __call__(self): diff --git a/tests/test_archive.py b/tests/test_archive.py index 018ac44..40f9d46 100644 --- a/tests/test_archive.py +++ b/tests/test_archive.py @@ -2,11 +2,7 @@ import os import shutil from tempfile import mkdtemp from unittest import TestCase - -try: - from unittest import mock -except ImportError: - import mock +from unittest import mock from fs_uae_wrapper import archive from fs_uae_wrapper import utils @@ -26,23 +22,26 @@ class TestArchive(TestCase): except OSError: pass + @mock.patch('fs_uae_wrapper.base.ArchiveBase._get_wrapper_archive_name') @mock.patch('fs_uae_wrapper.path.which') - def test_validate_options(self, which): + def test_validate_options(self, which, get_wrapper_arch_name): which.return_value = 'unrar' arch = archive.Wrapper('Config.fs-uae', utils.CmdOption(), {}) self.assertFalse(arch._validate_options()) - arch.all_options = {'wrapper': 'archive'} - arch.all_options['wrapper'] = 'archive' + get_wrapper_arch_name.return_value = None + arch.all_options = {'wrapper': 'archive'} self.assertFalse(arch._validate_options()) + get_wrapper_arch_name.return_value = 'fake_arch_filename' arch.all_options['wrapper_archive'] = 'rar' self.assertTrue(arch._validate_options()) @mock.patch('tempfile.mkdtemp') @mock.patch('fs_uae_wrapper.path.which') @mock.patch('fs_uae_wrapper.archive.Wrapper._make_archive') + @mock.patch('fs_uae_wrapper.base.ArchiveBase._get_wrapper_archive_name') @mock.patch('fs_uae_wrapper.base.ArchiveBase._save_save') @mock.patch('fs_uae_wrapper.base.ArchiveBase._get_saves_dir') @mock.patch('fs_uae_wrapper.base.ArchiveBase._run_emulator') @@ -50,7 +49,8 @@ class TestArchive(TestCase): @mock.patch('fs_uae_wrapper.base.ArchiveBase._load_save') @mock.patch('fs_uae_wrapper.base.ArchiveBase._extract') def test_run(self, extract, load_save, copy_conf, run_emulator, - get_save_dir, save_state, make_arch, which, mkdtemp): + get_save_dir, save_state, get_wrapper_arch_name, make_arch, + which, mkdtemp): extract.return_value = False load_save.return_value = False @@ -58,6 +58,7 @@ class TestArchive(TestCase): run_emulator.return_value = False get_save_dir.return_value = False save_state.return_value = False + get_wrapper_arch_name.return_value = "fake_arch_filename" make_arch.return_value = False which.return_value = 'rar' diff --git a/tests/test_base.py b/tests/test_base.py index 133b96b..a12220a 100644 --- a/tests/test_base.py +++ b/tests/test_base.py @@ -3,11 +3,7 @@ import sys import shutil from tempfile import mkstemp, mkdtemp from unittest import TestCase - -try: - from unittest import mock -except ImportError: - import mock +from unittest import mock from fs_uae_wrapper import base from fs_uae_wrapper import utils @@ -94,6 +90,11 @@ class TestBase(TestCase): bobj._normalize_options() self.assertDictEqual(bobj.fsuae_options, {}) + get_config.return_value = {'random_item': 10} + bobj.fsuae_options = utils.CmdOption() + bobj._normalize_options() + self.assertDictEqual(bobj.fsuae_options, {}) + @mock.patch('os.path.exists') @mock.patch('fs_uae_wrapper.utils.get_config') def test_normalize_options_path_not_exists(self, get_config, os_exists): @@ -390,16 +391,42 @@ class TestArchiveBase(TestCase): self.assertFalse(bobj._extract()) utils_extract.assert_called_once_with(self.fname, '') - def test_validate_options(self): + @mock.patch('fs_uae_wrapper.base.ArchiveBase._get_wrapper_archive_name') + def test_validate_options(self, get_wrapper_arch_name): bobj = base.ArchiveBase('Config.fs-uae', utils.CmdOption(), {}) bobj.all_options = {} self.assertFalse(bobj._validate_options()) + get_wrapper_arch_name.return_value = None bobj.all_options = {'wrapper': 'dummy'} self.assertFalse(bobj._validate_options()) bobj.all_options = {'wrapper': 'dummy', 'wrapper_archive': 'myarchive.7z'} self.assertTrue(bobj._validate_options()) + + @mock.patch('os.listdir') + def test_get_wrapper_archive_name(self, os_listdir): + os_listdir.return_value = 'no archive among other files'.split() + bobj = base.ArchiveBase('Config.fs-uae', utils.CmdOption(), {}) + bobj.all_options = {'wrapper': 'dummy'} + self.assertIsNone(bobj._get_wrapper_archive_name()) + + os_listdir.return_value = 'no config.rar among other files'.split() + bobj = base.ArchiveBase('Config.fs-uae', utils.CmdOption(), {}) + bobj.all_options = {'wrapper': 'dummy'} + self.assertIsNone(bobj._get_wrapper_archive_name()) + + os_listdir.return_value = 'file Config.TAR among other files'.split() + bobj = base.ArchiveBase('Config.fs-uae', utils.CmdOption(), {}) + bobj.all_options = {'wrapper': 'dummy'} + self.assertEqual(bobj._get_wrapper_archive_name(), 'Config.TAR') + + os_listdir.return_value = 'Config.lha FooBar_1.24b_20202.7z'.split() + bobj = base.ArchiveBase('FooBar_1.24b_20202.fs-uae', + utils.CmdOption(), {}) + bobj.all_options = {'wrapper': 'dummy'} + self.assertEqual(bobj._get_wrapper_archive_name(), + 'FooBar_1.24b_20202.7z') diff --git a/tests/test_cd32.py b/tests/test_cd32.py index 885fc71..87dc3c4 100644 --- a/tests/test_cd32.py +++ b/tests/test_cd32.py @@ -1,9 +1,5 @@ from unittest import TestCase - -try: - from unittest import mock -except ImportError: - import mock +from unittest import mock from fs_uae_wrapper import cd32 from fs_uae_wrapper import utils @@ -13,6 +9,7 @@ class TestCD32(TestCase): @mock.patch('tempfile.mkdtemp') @mock.patch('fs_uae_wrapper.path.which') + @mock.patch('fs_uae_wrapper.base.ArchiveBase._get_wrapper_archive_name') @mock.patch('fs_uae_wrapper.base.ArchiveBase._save_save') @mock.patch('fs_uae_wrapper.base.ArchiveBase._get_saves_dir') @mock.patch('fs_uae_wrapper.base.ArchiveBase._run_emulator') @@ -20,7 +17,8 @@ class TestCD32(TestCase): @mock.patch('fs_uae_wrapper.base.ArchiveBase._load_save') @mock.patch('fs_uae_wrapper.base.ArchiveBase._extract') def test_run(self, extract, load_save, copy_conf, run_emulator, - get_save_dir, save_state, which, mkdtemp): + get_save_dir, save_state, get_wrapper_arch_name, which, + mkdtemp): extract.return_value = False copy_conf.return_value = False @@ -28,6 +26,7 @@ class TestCD32(TestCase): run_emulator.return_value = False get_save_dir.return_value = False save_state.return_value = False + get_wrapper_arch_name.return_value = "fake_arch_filename" which.return_value = 'unrar' acd32 = cd32.Wrapper('Config.fs-uae', utils.CmdOption(), {}) diff --git a/tests/test_file_archive.py b/tests/test_file_archive.py index 6154ec7..29c131f 100644 --- a/tests/test_file_archive.py +++ b/tests/test_file_archive.py @@ -2,11 +2,7 @@ import os import shutil from tempfile import mkdtemp from unittest import TestCase - -try: - from unittest import mock -except ImportError: - import mock +from unittest import mock from fs_uae_wrapper import file_archive diff --git a/tests/test_message.py b/tests/test_message.py index 3a7bf7f..816ce4d 100644 --- a/tests/test_message.py +++ b/tests/test_message.py @@ -1,20 +1,12 @@ from unittest import TestCase import os - -try: - from unittest import mock -except ImportError: - import mock +from unittest import mock from fs_uae_wrapper import message if os.environ.get('DISPLAY'): - try: - import tkinter as tk - from tkinter import ttk - except ImportError: - import Tkinter as tk - import ttk + import tkinter as tk + from tkinter import ttk class TestMessage(TestCase): diff --git a/tests/test_plain.py b/tests/test_plain.py index c582557..fb1223e 100644 --- a/tests/test_plain.py +++ b/tests/test_plain.py @@ -1,9 +1,5 @@ from unittest import TestCase - -try: - from unittest import mock -except ImportError: - import mock +from unittest import mock from fs_uae_wrapper import plain from fs_uae_wrapper import utils diff --git a/tests/test_savestate.py b/tests/test_savestate.py index 8843a60..2b456e4 100644 --- a/tests/test_savestate.py +++ b/tests/test_savestate.py @@ -2,11 +2,7 @@ import os import shutil from tempfile import mkdtemp from unittest import TestCase - -try: - from unittest import mock -except ImportError: - import mock +from unittest import mock from fs_uae_wrapper import savestate from fs_uae_wrapper import utils diff --git a/tests/test_utils.py b/tests/test_utils.py index fb74b34..ae1f3d4 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -3,11 +3,7 @@ import sys from tempfile import mkstemp, mkdtemp from unittest import TestCase import shutil - -try: - from unittest import mock -except ImportError: - import mock +from unittest import mock from fs_uae_wrapper import utils diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 4ec2795..429eb5e 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -3,11 +3,7 @@ import sys from tempfile import mkstemp, mkdtemp from unittest import TestCase import shutil - -try: - from unittest import mock -except ImportError: - import mock +from unittest import mock from fs_uae_wrapper import wrapper