from configparser import ConfigParser from pathlib import Path import pytest from fenrirscreenreader.core.settingsData import settings_data from fenrirscreenreader.speechDriver import genericDriver def test_build_speech_command_replaces_snake_case_placeholders(): speech_driver = genericDriver.driver() speech_driver.speech_command = ( "synth --volume fenrir_volume --module fenrir_module " "--language fenrir_language --voice fenrir_voice " "--pitch fenrir_pitch --rate fenrir_rate fenrir_text" ) utterance = { "volume": "150", "module": "module-name", "language": "en-US", "voice": "voice-name", "pitch": "50", "rate": "240", "text": "hello", } assert speech_driver._build_speech_command(utterance) == [ "synth", "--volume", "150", "--module", "module-name", "--language", "en-US", "--voice", "voice-name", "--pitch", "50", "--rate", "240", "hello", ] def _configured_speech_command(): config = ConfigParser(interpolation=None) config.read(Path(__file__).parents[2] / "config/settings/settings.conf") return config.get("speech", "generic_speech_command") @pytest.mark.parametrize( "speech_command", [ settings_data["speech"]["generic_speech_command"], _configured_speech_command(), ], ) def test_default_speech_commands_use_supported_placeholders(speech_command): speech_driver = genericDriver.driver() speech_driver.speech_command = speech_command utterance = { "volume": "150", "module": "", "language": "en-US", "voice": "voice-name", "pitch": "50", "rate": "240", "text": "hello", } built_command = speech_driver._build_speech_command(utterance) assert not any("fenrir_" in argument for argument in built_command)