def test_set_defaults(self): session = Mock() plugin = Mock() parser = Mock() session.plugins = {"mock": plugin} plugin.arguments = Arguments(Argument("test1", default="default1"), Argument("test2", default="default2"), Argument("test3")) setup_plugin_args(session, parser) self.assertEqual(plugin.options.get("test1"), "default1") self.assertEqual(plugin.options.get("test2"), "default2") self.assertEqual(plugin.options.get("test3"), None)
def test_setup_plugin_args(self): session = Mock() plugin = Mock() parser = argparse.ArgumentParser(add_help=False) parser.add_argument("--global-arg1", default=123) parser.add_argument("--global-arg2", default=456) session.plugins = {"mock": plugin} plugin.arguments = Arguments(Argument("global-arg1", is_global=True), Argument("test1", default="default1"), Argument("test2", default="default2"), Argument("test3")) setup_plugin_args(session, parser) group_plugins = next((grp for grp in parser._action_groups if grp.title == "Plugin options"), None) # pragma: no branch self.assertIsNotNone(group_plugins, "Adds the 'Plugin options' arguments group") group_plugin = next( (grp for grp in group_plugins._action_groups if grp.title == "Mock"), None) # pragma: no branch self.assertIsNotNone( group_plugin, "Adds the 'Mock' arguments group to the 'Plugin options' group") self.assertEqual([ item for action in group_plugin._group_actions for item in action.option_strings ], [ "--mock-test1", "--mock-test2", "--mock-test3" ], "Only adds plugin arguments and ignores global argument references") self.assertEqual([ item for action in parser._actions for item in action.option_strings ], [ "--global-arg1", "--global-arg2", "--mock-test1", "--mock-test2", "--mock-test3" ], "Parser has all arguments registered") self.assertEqual(plugin.options.get("global-arg1"), 123) self.assertEqual(plugin.options.get("global-arg2"), None) self.assertEqual(plugin.options.get("test1"), "default1") self.assertEqual(plugin.options.get("test2"), "default2") self.assertEqual(plugin.options.get("test3"), None)
def test_set_defaults(self): session = Mock() plugin = Mock() parser = Mock() session.plugins = {"mock": plugin} plugin.arguments = Arguments( Argument("test1", default="default1"), Argument("test2", default="default2"), Argument("test3") ) setup_plugin_args(session, parser) self.assertEqual(plugin.options.get("test1"), "default1") self.assertEqual(plugin.options.get("test2"), "default2") self.assertEqual(plugin.options.get("test3"), None)
def test_setup_plugin_options(self): session = Mock() plugin = Mock(module="plugin") parser = argparse.ArgumentParser() parser.add_argument("--foo-foo", default=123) session.plugins = {"plugin": plugin} session.set_plugin_option = lambda name, key, value: session.plugins[ name].options.update({key: value}) plugin.arguments = Arguments( Argument("foo-foo", is_global=True), Argument("bar-bar", default=456), Argument("baz-baz", default=789, help=argparse.SUPPRESS)) with patch("streamlink_cli.main.args") as args: args.foo_foo = 321 args.plugin_bar_bar = 654 args.plugin_baz_baz = 987 # this wouldn't be set by the parser if the argument is suppressed setup_plugin_args(session, parser) self.assertEqual(plugin.options.get("foo_foo"), 123, "Sets the global-argument's default value") self.assertEqual(plugin.options.get("bar_bar"), 456, "Sets the plugin-argument's default value") self.assertEqual( plugin.options.get("baz_baz"), 789, "Sets the suppressed plugin-argument's default value") setup_plugin_options(session, plugin) self.assertEqual(plugin.options.get("foo_foo"), 321, "Sets the provided global-argument value") self.assertEqual(plugin.options.get("bar_bar"), 654, "Sets the provided plugin-argument value") self.assertEqual( plugin.options.get("baz_baz"), 789, "Doesn't set values of suppressed plugin-arguments")