Updated/fixed unit tests and travis configuration
This commit is contained in:
parent
dec9f47aa6
commit
e702736455
7 changed files with 79 additions and 15 deletions
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
language: python
|
||||
python:
|
||||
- "2.7"
|
||||
- "2.7"
|
||||
install:
|
||||
- pip install -r requirements.txt
|
||||
- python setup.py install
|
||||
script:
|
||||
- nosetests
|
||||
- nosetests tests/
|
||||
11
tests/filemanager/__init__.py
Normal file
11
tests/filemanager/__init__.py
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# coding=utf-8
|
||||
"""
|
||||
Unit tests for ``octoprint.filemanager.``.
|
||||
"""
|
||||
|
||||
from __future__ import absolute_import
|
||||
|
||||
__author__ = "Gina Häußge <osd@foosel.net>"
|
||||
__license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html'
|
||||
__copyright__ = "Copyright (C) 2014 The OctoPrint Project - Released under terms of the AGPLv3 License"
|
||||
|
||||
|
|
@ -26,6 +26,10 @@ class FileManagerTest(unittest.TestCase):
|
|||
event_manager.return_value.fire = mock.MagicMock()
|
||||
self.fire_event = event_manager.return_value.fire
|
||||
|
||||
# mock plugin manager
|
||||
self.plugin_manager_patcher = mock.patch("octoprint.plugin.plugin_manager")
|
||||
self.plugin_manager = self.plugin_manager_patcher.start()
|
||||
|
||||
self.analysis_queue = mock.MagicMock(spec=octoprint.filemanager.AnalysisQueue)
|
||||
|
||||
self.slicing_manager = mock.MagicMock(spec=octoprint.slicing.SlicingManager)
|
||||
|
|
@ -42,12 +46,13 @@ class FileManagerTest(unittest.TestCase):
|
|||
|
||||
def cleanUp(self):
|
||||
self.event_manager_patcher.stop()
|
||||
self.plugin_manager_patcher.stop()
|
||||
|
||||
def test_add_file(self):
|
||||
wrapper = object()
|
||||
|
||||
self.local_storage.add_file.return_value = ("", "test.file")
|
||||
self.local_storage.get_absolute_path.return_value = "prefix/test.file"
|
||||
self.local_storage.path_on_disk.return_value = "prefix/test.file"
|
||||
|
||||
test_profile = dict(id="_default", name="My Default Profile")
|
||||
self.printer_profile_manager.get_current_or_default.return_value = test_profile
|
||||
|
|
@ -126,7 +131,7 @@ class FileManagerTest(unittest.TestCase):
|
|||
self.printer_profile_manager.get.return_value = None
|
||||
|
||||
# mock get_absolute_path method on local storage
|
||||
def get_absolute_path(path):
|
||||
def path_on_disk(path):
|
||||
if isinstance(path, tuple):
|
||||
import os
|
||||
joined_path = ""
|
||||
|
|
@ -134,7 +139,7 @@ class FileManagerTest(unittest.TestCase):
|
|||
joined_path = os.path.join(joined_path, part)
|
||||
path = joined_path
|
||||
return "prefix/" + path
|
||||
self.local_storage.get_absolute_path.side_effect = get_absolute_path
|
||||
self.local_storage.path_on_disk.side_effect = path_on_disk
|
||||
|
||||
# mock split_path method on local storage
|
||||
def split_path(path):
|
||||
|
|
@ -148,12 +153,14 @@ class FileManagerTest(unittest.TestCase):
|
|||
self.local_storage.add_file.side_effect = add_file
|
||||
|
||||
# mock slice method on slicing manager
|
||||
def slice(slicer_name, source_path, dest_path, profile, done_cb, printer_profile_id=None, callback_args=None, overrides=None, on_progress=None, on_progress_args=None, on_progress_kwargs=None):
|
||||
def slice(slicer_name, source_path, dest_path, profile, done_cb, printer_profile_id=None, position=None, callback_args=None, overrides=None, on_progress=None, on_progress_args=None, on_progress_kwargs=None):
|
||||
self.assertEquals("some_slicer", slicer_name)
|
||||
self.assertEquals("prefix/source.file", source_path)
|
||||
self.assertEquals("tmp.file", dest_path)
|
||||
self.assertIsNone(profile)
|
||||
self.assertIsNone(overrides)
|
||||
self.assertIsNone(printer_profile_id)
|
||||
self.assertIsNone(position)
|
||||
self.assertIsNotNone(on_progress)
|
||||
self.assertIsNotNone(on_progress_args)
|
||||
self.assertTupleEqual(("some_slicer", octoprint.filemanager.FileDestinations.LOCAL, "source.file", octoprint.filemanager.FileDestinations.LOCAL, "dest.file"), on_progress_args)
|
||||
|
|
@ -202,8 +209,8 @@ class FileManagerTest(unittest.TestCase):
|
|||
temp_file.name = "tmp.file"
|
||||
mocked_tempfile.return_value = temp_file
|
||||
|
||||
# mock get_absolute_path method on local storage
|
||||
def get_absolute_path(path):
|
||||
# mock path_on_disk method on local storage
|
||||
def path_on_disk(path):
|
||||
if isinstance(path, tuple):
|
||||
import os
|
||||
joined_path = ""
|
||||
|
|
@ -211,15 +218,17 @@ class FileManagerTest(unittest.TestCase):
|
|||
joined_path = os.path.join(joined_path, part)
|
||||
path = joined_path
|
||||
return "prefix/" + path
|
||||
self.local_storage.get_absolute_path.side_effect = get_absolute_path
|
||||
self.local_storage.path_on_disk.side_effect = path_on_disk
|
||||
|
||||
# mock slice method on slicing manager
|
||||
def slice(slicer_name, source_path, dest_path, profile, done_cb, printer_profile_id=None, callback_args=None, overrides=None, on_progress=None, on_progress_args=None, on_progress_kwargs=None):
|
||||
def slice(slicer_name, source_path, dest_path, profile, done_cb, printer_profile_id=None, position=None, callback_args=None, overrides=None, on_progress=None, on_progress_args=None, on_progress_kwargs=None):
|
||||
self.assertEquals("some_slicer", slicer_name)
|
||||
self.assertEquals("prefix/source.file", source_path)
|
||||
self.assertEquals("tmp.file", dest_path)
|
||||
self.assertIsNone(profile)
|
||||
self.assertIsNone(overrides)
|
||||
self.assertIsNone(printer_profile_id)
|
||||
self.assertIsNone(position)
|
||||
self.assertIsNotNone(on_progress)
|
||||
self.assertIsNotNone(on_progress_args)
|
||||
self.assertTupleEqual(("some_slicer", octoprint.filemanager.FileDestinations.LOCAL, "source.file", octoprint.filemanager.FileDestinations.LOCAL, "dest.file"), on_progress_args)
|
||||
|
|
|
|||
10
tests/plugin/__init__.py
Normal file
10
tests/plugin/__init__.py
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# coding=utf-8
|
||||
"""
|
||||
Unit tests for ``octoprint.plugin``.
|
||||
"""
|
||||
|
||||
from __future__ import absolute_import
|
||||
|
||||
__author__ = "Gina Häußge <osd@foosel.net>"
|
||||
__license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html'
|
||||
__copyright__ = "Copyright (C) 2014 The OctoPrint Project - Released under terms of the AGPLv3 License"
|
||||
10
tests/printer/__init__.py
Normal file
10
tests/printer/__init__.py
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# coding=utf-8
|
||||
"""
|
||||
Unit tests for ``octoprint.printer``.
|
||||
"""
|
||||
|
||||
from __future__ import absolute_import
|
||||
|
||||
__author__ = "Gina Häußge <osd@foosel.net>"
|
||||
__license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html'
|
||||
__copyright__ = "Copyright (C) 2014 The OctoPrint Project - Released under terms of the AGPLv3 License"
|
||||
10
tests/slicing/__init__.py
Normal file
10
tests/slicing/__init__.py
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# coding=utf-8
|
||||
"""
|
||||
Unit tests for ``octoprint.slicing``.
|
||||
"""
|
||||
|
||||
from __future__ import absolute_import
|
||||
|
||||
__author__ = "Gina Häußge <osd@foosel.net>"
|
||||
__license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html'
|
||||
__copyright__ = "Copyright (C) 2014 The OctoPrint Project - Released under terms of the AGPLv3 License"
|
||||
|
|
@ -20,18 +20,23 @@ class TestSlicingManager(unittest.TestCase):
|
|||
|
||||
self.slicer_plugin = mock.MagicMock()
|
||||
self.slicer_plugin.get_slicer_properties.return_value = dict(type="mock", name="Mock", same_device=True)
|
||||
self.slicer_plugin.is_slicer_configured.return_value = True
|
||||
|
||||
# mock plugin manager
|
||||
self.plugin_manager_patcher = mock.patch("octoprint.plugin.plugin_manager")
|
||||
self.plugin_manager = self.plugin_manager_patcher.start()
|
||||
self._mock_slicer_plugins(self.slicer_plugin)
|
||||
|
||||
# mock profile manager
|
||||
self.printer_profile_manager = mock.MagicMock(spec=octoprint.printer.profile.PrinterProfileManager)
|
||||
|
||||
# mock settings
|
||||
self.settings_patcher = mock.patch("octoprint.slicing.settings")
|
||||
settings = self.settings_patcher.start()
|
||||
self.settings = settings.return_value
|
||||
|
||||
self.slicing_manager = octoprint.slicing.SlicingManager(self.profile_path)
|
||||
self.slicing_manager = octoprint.slicing.SlicingManager(self.profile_path, self.printer_profile_manager)
|
||||
self.slicing_manager.initialize()
|
||||
|
||||
def tearDown(self):
|
||||
import shutil
|
||||
|
|
@ -114,28 +119,37 @@ class TestSlicingManager(unittest.TestCase):
|
|||
# mock slicing
|
||||
self.slicer_plugin.do_slice.return_value = True, None
|
||||
|
||||
# mock printer profile manager
|
||||
printer_profile = dict(_id="mock_printer", _name="Mock Printer Profile")
|
||||
def get_printer_profile(printer_profile_id):
|
||||
self.assertEquals("mock_printer", printer_profile_id)
|
||||
return printer_profile
|
||||
self.printer_profile_manager.get.side_effect = get_printer_profile
|
||||
|
||||
##~~ call tested method
|
||||
slicer_name = "mock"
|
||||
source_path = "prefix/source.file"
|
||||
dest_path = "prefix/dest.file"
|
||||
profile_name = "dummy_profile"
|
||||
printer_profile_id = "mock_printer"
|
||||
position = dict(x=10, y=20)
|
||||
callback = mock.MagicMock()
|
||||
callback_args = ("one", "two", "three")
|
||||
callback_kwargs = dict(foo="bar")
|
||||
overrides = dict(layer_height=0.5)
|
||||
|
||||
self.slicing_manager.slice(slicer_name, source_path, dest_path, profile_name, callback, callback_args=callback_args, callback_kwargs=callback_kwargs, overrides=overrides)
|
||||
self.slicing_manager.slice(slicer_name, source_path, dest_path, profile_name, callback, printer_profile_id=printer_profile_id, position=position, callback_args=callback_args, callback_kwargs=callback_kwargs, overrides=overrides)
|
||||
|
||||
# assert that temporary profile was created properly
|
||||
self.slicer_plugin.save_slicer_profile.assert_called_once_with("tmp.file", default_profile, overrides=overrides)
|
||||
|
||||
# assert that slicing thread was created properly
|
||||
mocked_thread.assert_called_once_with(target=mock.ANY, args=(self.slicer_plugin, source_path, dest_path, profile_name, overrides, callback, callback_args, callback_kwargs))
|
||||
mocked_thread.assert_called_once_with(target=mock.ANY, args=(self.slicer_plugin, source_path, dest_path, profile_name, overrides, printer_profile, position, callback, callback_args, callback_kwargs))
|
||||
self.assertTrue(mock_thread.mock.daemon)
|
||||
mock_thread.mock.start.assert_called_once()
|
||||
|
||||
# assert that slicer was called correctly
|
||||
self.slicer_plugin.do_slice.assert_called_once_with("prefix/source.file", machinecode_path="prefix/dest.file", profile_path="tmp.file", on_progress=None, on_progress_args=None, on_progress_kwargs=None)
|
||||
self.slicer_plugin.do_slice.assert_called_once_with(source_path, printer_profile, machinecode_path=dest_path, profile_path="tmp.file", position=position, on_progress=None, on_progress_args=None, on_progress_kwargs=None)
|
||||
|
||||
# assert that temporary profile was deleted again
|
||||
mocked_os_remove.assert_called_once_with("tmp.file")
|
||||
|
|
|
|||
Loading…
Reference in a new issue