From 552396cc7a01422cdeb798e3f41416e7e5746271 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Tue, 19 Aug 2025 14:01:11 +0200 Subject: [PATCH] Add test suite for MemoryFilesSource --- test/unit/files/test_memory.py | 64 ++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 test/unit/files/test_memory.py diff --git a/test/unit/files/test_memory.py b/test/unit/files/test_memory.py new file mode 100644 index 00000000000..44e17f1c496 --- /dev/null +++ b/test/unit/files/test_memory.py @@ -0,0 +1,64 @@ +""" +Improved test for MemoryFilesSource using the decorator-based generic test suite. + +This demonstrates the new approach that eliminates code duplication while +maintaining individual test execution and proper pytest reporting. +""" + +from typing import Any + +from galaxy.files.plugins import FileSourcePluginsConfig +from galaxy.files.sources import BaseFilesSource +from galaxy.files.sources.memory import MemoryFilesSource +from galaxy.files.unittest_utils import TestConfiguredFileSources +from ._base import ( + BaseFileSourceTestSuite, + generate_file_source_tests, +) + +ROOT_URI = "memory://test1" +MEMORY_PLUGIN = { + "type": "memory", + "id": "test1", + "doc": "Test memory file source", + "writable": True, +} + + +@generate_file_source_tests +class TestMemoryFilesSource(BaseFileSourceTestSuite): + """ + Test suite for MemoryFilesSource using the decorator-based generic test framework. + + The @generate_file_source_tests decorator automatically creates individual + test functions for each test method in BaseFileSourceTestSuite. + """ + + @property + def root_uri(self) -> str: + return ROOT_URI + + @property + def plugin_config(self) -> dict[str, Any]: + return MEMORY_PLUGIN + + def get_configured_file_sources(self) -> TestConfiguredFileSources: + """Create and return configured file sources with test data.""" + file_sources_config = FileSourcePluginsConfig() + plugin = self.plugin_config.copy() + file_sources = TestConfiguredFileSources( + file_sources_config, conf_dict={self.plugin_config["id"]: plugin}, test_root=None + ) + + # Populate with test data + file_source = self.get_file_source_instance(file_sources) + self.populate_test_scenario(file_source) + + return file_sources + + def get_file_source_instance(self, file_sources: TestConfiguredFileSources) -> BaseFilesSource: + """Return the MemoryFilesSource instance.""" + file_source_pair = file_sources.get_file_source_path(self.root_uri) + file_source = file_source_pair.file_source + assert isinstance(file_source, MemoryFilesSource) + return file_source