[pitivi] application: Fix traceback when loading missing project



commit d9e6d95200ef56ec62be6c91d0f143448161779c
Author: Alexandru Băluț <alexandru balut gmail com>
Date:   Sat Sep 21 23:29:49 2019 +0200

    application: Fix traceback when loading missing project
    
    Fixes #2350

 pitivi/application.py     | 23 +++++++++++------------
 tests/test_application.py |  8 ++++++++
 tests/test_project.py     | 12 ++++++------
 3 files changed, 25 insertions(+), 18 deletions(-)
---
diff --git a/pitivi/application.py b/pitivi/application.py
index bec3c1a8..af73f111 100644
--- a/pitivi/application.py
+++ b/pitivi/application.py
@@ -111,7 +111,8 @@ class Pitivi(Gtk.Application, Loggable):
             # We need to make sure that the waiting time was more than 50 ms.
             st = Gst.Structure.new_empty("wait")
             st["duration"] = float((now - self._last_action_time) / Gst.SECOND)
-            self._scenario_file.write(st.to_string() + "\n")
+            self._scenario_file.write(st.to_string())
+            self._scenario_file.write("\n")
             self._last_action_time = now
 
         if not isinstance(action, Gst.Structure):
@@ -123,7 +124,8 @@ class Pitivi(Gtk.Application, Loggable):
 
             action = structure
 
-        self._scenario_file.write(action.to_string() + "\n")
+        self._scenario_file.write(action.to_string())
+        self._scenario_file.write("\n")
         self._scenario_file.flush()
 
     def do_startup(self):
@@ -149,11 +151,8 @@ class Pitivi(Gtk.Application, Loggable):
         self.system = get_system()
         self.plugin_manager = PluginManager(self)
 
-        self.project_manager.connect(
-            "new-project-loading", self._newProjectLoadingCb)
-        self.project_manager.connect(
-            "new-project-loaded", self._newProjectLoaded)
-        self.project_manager.connect_after("project-closed", self._projectClosed)
+        self.project_manager.connect("new-project-loaded", self._new_project_loaded_cb)
+        self.project_manager.connect_after("project-closed", self._project_closed_cb)
         self.project_manager.connect("project-saved", self.__project_saved_cb)
 
         self._createActions()
@@ -266,10 +265,7 @@ class Pitivi(Gtk.Application, Loggable):
                 self.write_action("load-project",
                                   serialized_content=content)
 
-    def _newProjectLoadingCb(self, unused_project_manager, project):
-        self._setScenarioFile(project.get_uri())
-
-    def _newProjectLoaded(self, unused_project_manager, project):
+    def _new_project_loaded_cb(self, unused_project_manager, project):
         uri = project.get_uri()
         if uri:
             # We remove the project from recent projects list
@@ -282,17 +278,20 @@ class Pitivi(Gtk.Application, Loggable):
                     raise e
                 pass
             self.recent_manager.add_item(uri)
+
         self.action_log = UndoableActionLog()
         self.action_log.connect("pre-push", self._action_log_pre_push_cb)
         self.action_log.connect("commit", self._actionLogCommit)
         self.action_log.connect("move", self._action_log_move_cb)
         self.project_observer = ProjectObserver(project, self.action_log)
 
+        self._setScenarioFile(project.get_uri())
+
     def __project_saved_cb(self, unused_project_manager, unused_project, uri):
         if uri:
             self.recent_manager.add_item(uri)
 
-    def _projectClosed(self, unused_project_manager, project):
+    def _project_closed_cb(self, unused_project_manager, project):
         if project.loaded:
             self.action_log = None
             self._syncDoUndo()
diff --git a/tests/test_application.py b/tests/test_application.py
index d15012ca..aac34782 100644
--- a/tests/test_application.py
+++ b/tests/test_application.py
@@ -18,8 +18,11 @@
 # Boston, MA 02110-1301, USA.
 """Tests for the application module."""
 # pylint: disable=missing-docstring,protected-access,no-self-use
+import tempfile
 from unittest import mock
 
+from gi.repository import Gst
+
 from pitivi import application
 from pitivi import configure
 from tests import common
@@ -108,3 +111,8 @@ class TestPitivi(common.TestCase):
         with mock.patch.object(app, "inhibit") as inhibit_mock:
             app.simple_inhibit("reason1", "flags1")
             self.assertTrue(inhibit_mock.called)
+
+    def test_loading_missing_file(self):
+        app = common.create_pitivi()
+        project_uri = Gst.filename_to_uri(tempfile.NamedTemporaryFile().name)
+        app.project_manager.load_project(project_uri)
diff --git a/tests/test_project.py b/tests/test_project.py
index f45236fd..d056de8f 100644
--- a/tests/test_project.py
+++ b/tests/test_project.py
@@ -71,22 +71,22 @@ class TestProjectManager(common.TestCase):
         self.listener = ProjectManagerListener(self.manager)
         self.signals = self.listener.signals
 
-    def testLoadProjectFailedUnknownFormat(self):
+    def test_loading_missing_project_file(self):
         """Checks new-project-failed is emitted for unsuitable formatters."""
-        uri = "file:///Untitled.meh"
-        self.manager.load_project(uri)
+        project_uri = Gst.filename_to_uri(tempfile.NamedTemporaryFile().name)
+        self.manager.load_project(project_uri)
 
         # loading
         name, args = self.signals[0]
-        self.assertEqual(uri, args[0].get_uri(), self.signals)
+        self.assertEqual(project_uri, args[0].get_uri(), self.signals)
 
         # failed
         name, args = self.signals[1]
         self.assertEqual("new-project-failed", name)
         signalUri, unused_message = args
-        self.assertEqual(uri, signalUri, self.signals)
+        self.assertEqual(project_uri, signalUri, self.signals)
 
-    def testLoadProject(self):
+    def test_new_blank_project_signals(self):
         self.manager.new_blank_project()
 
         name, args = self.signals[0]


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]