mirror of
https://github.com/imarkoff/Marble-shell-theme.git
synced 2025-11-24 06:26:03 -08:00
TESTS TESTS ADDED MORE TEST TESTED GRESOURCES TESTS TESTS I LOVE TESTS SO MUCH
- Fully covered gresource orchestrator and it helpers with tests - Use abstract command runner INSTEAD OF SUBPROCESS in gresources - Replaced some subprocesses by builtin functions
This commit is contained in:
130
tests/utils/gresource/test_gresource.py
Normal file
130
tests/utils/gresource/test_gresource.py
Normal file
@@ -0,0 +1,130 @@
|
||||
import os.path
|
||||
import shutil
|
||||
import unittest
|
||||
from unittest.mock import patch
|
||||
|
||||
from scripts import config
|
||||
from scripts.utils.gresource.gresource import Gresource
|
||||
from ..._helpers import create_dummy_file, try_remove_file
|
||||
from ..._helpers.dummy_logger_factory import DummyLoggerFactory
|
||||
from ..._helpers.dummy_runner import DummyRunner
|
||||
|
||||
|
||||
class GresourceTestCase(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.gresource_file = "test.gresource"
|
||||
self.temp_folder = os.path.join(config.temp_tests_folder, "gresource_temp")
|
||||
self.destination = os.path.join(config.temp_tests_folder, "gresource_dest")
|
||||
|
||||
self.temp_file = os.path.join(self.temp_folder, self.gresource_file)
|
||||
self.destination_file = os.path.join(self.destination, self.gresource_file)
|
||||
|
||||
self.logger = DummyLoggerFactory()
|
||||
self.runner = DummyRunner()
|
||||
|
||||
self.gresource = Gresource(
|
||||
self.gresource_file, self.temp_folder, self.destination,
|
||||
logger_factory=self.logger, runner=self.runner
|
||||
)
|
||||
|
||||
def tearDown(self):
|
||||
shutil.rmtree(self.temp_folder, ignore_errors=True)
|
||||
shutil.rmtree(self.destination, ignore_errors=True)
|
||||
|
||||
def test_use_backup_gresource(self):
|
||||
destination_file = os.path.join(self.destination, self.gresource_file)
|
||||
create_dummy_file(destination_file)
|
||||
self.gresource.backup()
|
||||
|
||||
self.gresource.use_backup_gresource()
|
||||
|
||||
assert self.gresource._active_source_gresource != self.gresource._destination_gresource
|
||||
assert os.path.exists(self.gresource._active_source_gresource)
|
||||
|
||||
try_remove_file(self.gresource._active_source_gresource)
|
||||
try_remove_file(destination_file)
|
||||
|
||||
def test_use_backup_gresource_not_found(self):
|
||||
destination_file = os.path.join(self.destination, self.gresource_file)
|
||||
try_remove_file(destination_file)
|
||||
|
||||
with self.assertRaises(FileNotFoundError):
|
||||
self.gresource.use_backup_gresource()
|
||||
|
||||
def test_extract(self):
|
||||
"""Test that extract creates and calls GresourceExtractor correctly."""
|
||||
with patch('scripts.utils.gresource.gresource.GresourceExtractor') as mock_extractor_class:
|
||||
mock_extractor_instance = mock_extractor_class.return_value
|
||||
|
||||
self.gresource.extract()
|
||||
|
||||
mock_extractor_class.assert_called_once_with(
|
||||
self.gresource._active_source_gresource,
|
||||
self.temp_folder,
|
||||
logger_factory=self.logger,
|
||||
runner=self.runner
|
||||
)
|
||||
mock_extractor_instance.extract.assert_called_once()
|
||||
|
||||
def test_compile(self):
|
||||
"""Test that compile creates and calls GresourceCompiler correctly."""
|
||||
with (patch('scripts.utils.gresource.gresource.GresourceCompiler') as mock_compiler_class):
|
||||
mock_compiler_instance = mock_compiler_class.return_value
|
||||
|
||||
self.gresource.compile()
|
||||
|
||||
mock_compiler_class.assert_called_once_with(
|
||||
self.temp_folder,
|
||||
self.gresource._temp_gresource,
|
||||
logger_factory=self.logger,
|
||||
runner=self.runner
|
||||
)
|
||||
mock_compiler_instance.compile.assert_called_once()
|
||||
|
||||
def test_backup(self):
|
||||
create_dummy_file(self.destination_file)
|
||||
|
||||
self.gresource.backup()
|
||||
backup = self.gresource.use_backup_gresource()
|
||||
|
||||
assert os.path.exists(backup)
|
||||
self.gresource.restore()
|
||||
|
||||
def test_backup_not_found(self):
|
||||
try_remove_file(self.destination_file)
|
||||
|
||||
with self.assertRaises(FileNotFoundError):
|
||||
self.gresource.backup()
|
||||
|
||||
def test_restore(self):
|
||||
destination_file = os.path.join(self.destination, self.gresource_file)
|
||||
create_dummy_file(destination_file, content="dummy content")
|
||||
self.gresource.backup()
|
||||
create_dummy_file(destination_file, content="new content")
|
||||
|
||||
self.gresource.restore()
|
||||
|
||||
assert os.path.exists(destination_file)
|
||||
with open(destination_file) as f:
|
||||
content = f.read()
|
||||
assert content == "dummy content"
|
||||
|
||||
def test_restore_not_found(self):
|
||||
destination_file = os.path.join(self.destination, self.gresource_file)
|
||||
try_remove_file(destination_file)
|
||||
|
||||
with self.assertRaises(FileNotFoundError):
|
||||
self.gresource.restore()
|
||||
|
||||
def test_move(self):
|
||||
create_dummy_file(self.temp_file)
|
||||
|
||||
self.gresource.move()
|
||||
|
||||
assert os.path.exists(self.destination_file)
|
||||
|
||||
def test_move_not_found(self):
|
||||
try_remove_file(self.temp_file)
|
||||
|
||||
with self.assertRaises(FileNotFoundError):
|
||||
self.gresource.move()
|
||||
Reference in New Issue
Block a user