mirror of
https://github.com/imarkoff/Marble-shell-theme.git
synced 2025-09-18 09:17:54 -07:00
- Fully covered gresource orchestrator and it helpers with tests - Use abstract command runner INSTEAD OF SUBPROCESS in gresources - Replaced some subprocesses by builtin functions
130 lines
4.6 KiB
Python
130 lines
4.6 KiB
Python
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() |