Updated/fixed unit tests and travis configuration

This commit is contained in:
Gina Häußge 2015-03-02 12:58:24 +01:00
parent dec9f47aa6
commit e702736455
7 changed files with 79 additions and 15 deletions

View file

@ -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/

View 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"

View file

@ -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
View 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
View 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
View 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"

View file

@ -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")