From f89f4151b0f7a037786bdb5d63092dc74dbffac3 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Mon, 1 Apr 2013 11:02:02 +0200 Subject: [PATCH] ext: Add Extension base class --- mopidy/ext.py | 27 +++++++++++++++++++++++++++ tests/ext_test.py | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 mopidy/ext.py create mode 100644 tests/ext_test.py diff --git a/mopidy/ext.py b/mopidy/ext.py new file mode 100644 index 00000000..dc756a3a --- /dev/null +++ b/mopidy/ext.py @@ -0,0 +1,27 @@ +from __future__ import unicode_literals + + +class Extension(object): + + name = None + version = None + + def get_default_config(self): + raise NotImplementedError( + 'Add at least a config section with "enabled = true"') + + def validate_config(self, config): + raise NotImplementedError( + 'You must explicitly pass config validation if not needed') + + def validate_environment(self): + pass + + def get_frontend_class(self): + pass + + def get_backend_class(self): + pass + + def register_gstreamer_elements(self): + pass diff --git a/tests/ext_test.py b/tests/ext_test.py new file mode 100644 index 00000000..98849e21 --- /dev/null +++ b/tests/ext_test.py @@ -0,0 +1,34 @@ +from __future__ import unicode_literals + +from mopidy.ext import Extension + +from tests import unittest + + +class ExtensionTest(unittest.TestCase): + def setUp(self): + self.ext = Extension() + + def test_name_is_none(self): + self.assertIsNone(self.ext.name) + + def test_version_is_none(self): + self.assertIsNone(self.ext.version) + + def test_get_default_config_raises_not_implemented(self): + self.assertRaises(NotImplementedError, self.ext.get_default_config) + + def test_validate_config_raises_not_implemented(self): + self.assertRaises(NotImplementedError, self.ext.validate_config, None) + + def test_validate_environment_does_nothing_by_default(self): + self.assertIsNone(self.ext.validate_environment()) + + def test_get_frontend_class_returns_none_by_default(self): + self.assertIsNone(self.ext.get_frontend_class()) + + def test_get_backend_class_returns_none_by_default(self): + self.assertIsNone(self.ext.get_backend_class()) + + def test_register_gstreamer_elements_does_nothing_by_default(self): + self.assertIsNone(self.ext.register_gstreamer_elements())