Преглед изворни кода

[Test] #137 Update tests for setting loader to manage resource_dir

monf пре 8 година
родитељ
комит
b4a6e860b6
3 измењених фајлова са 58 додато и 2 уклоњено
  1. 9 0
      Tests/settings/settings_test.yml
  2. 48 2
      Tests/test_settings_loader.py
  3. 1 0
      kalliope/core/Models/__init__.py

+ 9 - 0
Tests/settings/settings_test.yml

@@ -78,3 +78,12 @@ rest_api:
 # ---------------------------
 # Specify an optional default synapse response in case your order is not found.
 default_synapse: "Default-synapse"
+
+# ---------------------------
+# resource directory path
+# ---------------------------
+resource_directory:
+  neuron: "/tmp/kalliope/tests/kalliope_resources_dir/neurons"
+  stt: "/tmp/kalliope/tests/kalliope_resources_dir/stt"
+  tts: "/tmp/kalliope/tests/kalliope_resources_dir/tts"
+  trigger: "/tmp/kalliope/tests/kalliope_resources_dir/trigger"

+ 48 - 2
Tests/test_settings_loader.py

@@ -1,9 +1,12 @@
 import os
+import inspect
 import platform
+import shutil
 import unittest
 
 from kalliope.core.ConfigurationManager import SettingLoader
 from kalliope.core.Models import Singleton
+from kalliope.core.Models import Resources
 from kalliope.core.Models.RestAPI import RestAPI
 from kalliope.core.Models.Settings import Settings
 from kalliope.core.Models.Stt import Stt
@@ -14,8 +17,12 @@ from kalliope.core.Models.Tts import Tts
 class TestSettingLoader(unittest.TestCase):
 
     def setUp(self):
+        # get current script directory path. We are in /an/unknown/path/kalliope/core/Tests
+        cur_script_directory = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
+        # get parent dir. Now we are in /an/unknown/path/kalliope
+        root_dir = os.path.normpath(cur_script_directory + os.sep + os.pardir)
 
-        self.settings_file_to_test = os.getcwd() + os.sep + "/Tests/settings/settings_test.yml"
+        self.settings_file_to_test = root_dir + os.sep + "Tests/settings/settings_test.yml"
 
         self.settings_dict = {
             'rest_api':
@@ -36,7 +43,13 @@ class TestSettingLoader(unittest.TestCase):
                 {'pico2wave': {'cache': True, 'language': 'fr-FR'}},
                 {'voxygen': {'voice': 'Agnes', 'cache': True}}
             ],
-            'default_synapse': 'Default-synapse'
+            'default_synapse': 'Default-synapse',
+            'resource_directory':{
+                'neuron': "/tmp/kalliope/tests/kalliope_resources_dir/neurons",
+                'stt': "/tmp/kalliope/tests/kalliope_resources_dir/stt",
+                'tts': "/tmp/kalliope/tests/kalliope_resources_dir/tts",
+                'trigger': "/tmp/kalliope/tests/kalliope_resources_dir/trigger"
+            }
         }
 
     def tearDown(self):
@@ -72,12 +85,27 @@ class TestSettingLoader(unittest.TestCase):
                                            login="admin", password="secret", port=5000)
         settings_object.cache_path = '/tmp/kalliope_tts_cache'
         settings_object.default_synapse = 'Default-synapse'
+        resources = Resources(neuron_folder="/tmp/kalliope/tests/kalliope_resources_dir/neurons",
+                              stt_folder="/tmp/kalliope/tests/kalliope_resources_dir/stt",
+                              tts_folder="/tmp/kalliope/tests/kalliope_resources_dir/tts",
+                              trigger_folder="/tmp/kalliope/tests/kalliope_resources_dir/trigger")
+
+        # Init the folders, otherwise it raises an exceptions
+        os.makedirs("/tmp/kalliope/tests/kalliope_resources_dir/neurons")
+        os.makedirs("/tmp/kalliope/tests/kalliope_resources_dir/stt")
+        os.makedirs("/tmp/kalliope/tests/kalliope_resources_dir/tts")
+        os.makedirs("/tmp/kalliope/tests/kalliope_resources_dir/trigger")
+
+        settings_object.resources=resources
         settings_object.machine = platform.machine()
 
         sl = SettingLoader(file_path=self.settings_file_to_test)
 
         self.assertEqual(settings_object, sl.settings)
 
+        # Cleanup
+        shutil.rmtree('/tmp/kalliope/tests/kalliope_resources_dir')
+
     def test_get_default_speech_to_text(self):
         expected_default_speech_to_text = "google"
         sl = SettingLoader(file_path=self.settings_file_to_test)
@@ -133,5 +161,23 @@ class TestSettingLoader(unittest.TestCase):
         sl = SettingLoader(file_path=self.settings_file_to_test)
         self.assertEqual(expected_default_synapse, sl._get_default_synapse(self.settings_dict))
 
+    def test_get_resources(self):
+        # Init the folders, otherwise it raises an exceptions
+        os.makedirs("/tmp/kalliope/tests/kalliope_resources_dir/neurons")
+        os.makedirs("/tmp/kalliope/tests/kalliope_resources_dir/stt")
+        os.makedirs("/tmp/kalliope/tests/kalliope_resources_dir/tts")
+        os.makedirs("/tmp/kalliope/tests/kalliope_resources_dir/trigger")
+
+        resources = Resources(neuron_folder="/tmp/kalliope/tests/kalliope_resources_dir/neurons",
+                              stt_folder="/tmp/kalliope/tests/kalliope_resources_dir/stt",
+                              tts_folder="/tmp/kalliope/tests/kalliope_resources_dir/tts",
+                              trigger_folder="/tmp/kalliope/tests/kalliope_resources_dir/trigger")
+        expected_resource = resources
+        sl = SettingLoader(file_path=self.settings_file_to_test)
+        self.assertEquals(expected_resource, sl._get_resources(self.settings_dict))
+
+        # Cleanup
+        shutil.rmtree('/tmp/kalliope/tests/kalliope_resources_dir')
+
 if __name__ == '__main__':
     unittest.main()

+ 1 - 0
kalliope/core/Models/__init__.py

@@ -1,5 +1,6 @@
 from Singleton import Singleton
 from Event import Event
+from Resources import Resources
 from Brain import Brain
 from Order import Order
 from Synapse import Synapse