diff --git a/speedwagon/config/tabs.py b/speedwagon/config/tabs.py index 808bacd23..dfc24a525 100644 --- a/speedwagon/config/tabs.py +++ b/speedwagon/config/tabs.py @@ -20,7 +20,7 @@ def data(self) -> List[CustomTabData]: """Get the data for custom tabs.""" @abc.abstractmethod - def save(self, tabs: List[CustomTabData]): + def save(self, tabs: List[CustomTabData]) -> None: """Get the data for custom tabs.""" @@ -55,6 +55,8 @@ def read_file(yaml_file: str) -> str: def decode_tab_settings_yml_data(self, data: str) -> Dict[str, List[str]]: """Decode tab settings yml data.""" + if len(data) == 0: + return {} tabs_config_data = yaml.load(data, Loader=yaml.SafeLoader) if not isinstance(tabs_config_data, dict): raise speedwagon.exceptions.FileFormatError("Failed to parse file") @@ -105,7 +107,7 @@ def data(self) -> List[CustomTabData]: for tab_name, workflow_names in yml_data.items() ] - def save(self, tabs: List[CustomTabData]): + def save(self, tabs: List[CustomTabData]) -> None: """Write tabs to a yaml file.""" self.file_writer_strategy.save(self.yaml_file, tabs) diff --git a/tests/test_config.py b/tests/test_config.py index 6d8c1c9fb..596f8c4ae 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -28,7 +28,7 @@ def data_reader(): def test_yaml_errors_throws_tab_load_failure(self, monkeypatch): def data_reader(): - return "" + return "garblygoock" config_loader = \ speedwagon.config.tabs.CustomTabsYamlConfig(yaml_file="myfaketabs.yml") @@ -39,7 +39,7 @@ def data_reader(): def test_file_format_error_throws_tab_load_failure(self, monkeypatch): def data_reader(): - return "" + return "garblygoock" config_loader = \ speedwagon.config.tabs.CustomTabsYamlConfig(yaml_file="myfaketabs.yml") @@ -95,6 +95,11 @@ def test_save(self): config_loader.save([]) assert config_loader.file_writer_strategy.save.called is True + def test_load_empty_file(self): + config_loader = \ + speedwagon.config.tabs.CustomTabsYamlConfig(yaml_file="tabs.yml") + config_loader.file_reader_strategy.read_file = Mock(return_value="") + assert config_loader.data() == [] class TestTabsWriteStrategy: def test_write_data_is_called(self, monkeypatch): diff --git a/tests/test_startup.py b/tests/test_startup.py index 4bcbb940c..0c7bf8983 100644 --- a/tests/test_startup.py +++ b/tests/test_startup.py @@ -85,7 +85,10 @@ def test_missing_workflow(monkeypatch, capsys): load.__class__ = dict monkeypatch.setattr(yaml, "load", load) def read_file(*args, **kwargs): - return "" + return """ +current: +- Medusa Preingest Curation +""" monkeypatch.setattr( speedwagon.config.tabs.TabsYamlFileReader, "read_file", @@ -116,10 +119,12 @@ def test_get_custom_tabs_loads_workflows_from_file(monkeypatch): ] } load = Mock(name="load", return_value=tabs_config_data) - load.__class__ = dict monkeypatch.setattr(yaml, "load", load) def read_file(*args, **kwargs): - return "" + return """ +my workflow: +- spam +""" monkeypatch.setattr( speedwagon.config.tabs.TabsYamlFileReader, "read_file",