File tree Expand file tree Collapse file tree 2 files changed +39
-4
lines changed
Expand file tree Collapse file tree 2 files changed +39
-4
lines changed Original file line number Diff line number Diff line change 1212from Orange .widgets .utils import stdpaths
1313
1414from Orange .widgets .classify import owsaveclassifier
15+ from Orange .widgets .widget import Msg
1516
1617
1718class OWLoadClassifier (widget .OWWidget ):
@@ -27,6 +28,9 @@ class OWLoadClassifier(widget.OWWidget):
2728 #: Current (last selected) filename or None.
2829 filename = Setting (None )
2930
31+ class Error (widget .OWWidget .Error ):
32+ load_error = Msg ("An error occured while reading '{}'" )
33+
3034 FILTER = owsaveclassifier .OWSaveClassifier .FILTER
3135
3236 want_main_area = False
@@ -96,11 +100,10 @@ def load(self, filename):
96100 """Load the object from filename and send it to output."""
97101 try :
98102 classifier = pickle .load (open (filename , "rb" ))
99- except pickle .UnpicklingError :
100- raise # TODO: error reporting
101- except os .error :
102- raise # TODO: error reporting
103+ except (pickle .UnpicklingError , OSError , EOFError ):
104+ self .Error .load_error (os .path .split (filename )[- 1 ])
103105 else :
106+ self .Error .load_error .clear ()
104107 self ._remember (filename )
105108 self .send ("Classifier" , classifier )
106109
Original file line number Diff line number Diff line change 1+ # Test methods with long descriptive names can omit docstrings
2+ # pylint: disable=missing-docstring
3+ import os
4+ import pickle
5+ from tempfile import mkstemp
6+
7+ from Orange .classification .majority import ConstantModel
8+ from Orange .widgets .classify .owloadclassifier import OWLoadClassifier
9+ from Orange .widgets .tests .base import WidgetTest
10+
11+
12+ class TestOWMajority (WidgetTest ):
13+ def setUp (self ):
14+ self .widget = self .create_widget (OWLoadClassifier )
15+
16+ def test_show_error (self ):
17+ self .widget .load ("no-such-file.pckls" )
18+ self .assertTrue (self .widget .Error .load_error .is_shown ())
19+
20+ clsf = ConstantModel ([1 , 1 , 1 ])
21+ fd , fname = mkstemp (suffix = '.pkcls' )
22+ try :
23+ pickle .dump (clsf , open (fname , "wb" ))
24+ self .widget .load (fname )
25+ self .assertFalse (self .widget .Error .load_error .is_shown ())
26+
27+ open (fname , "w" ).write ("X" )
28+ self .widget .load (fname )
29+ self .assertTrue (self .widget .Error .load_error .is_shown ())
30+ finally :
31+ os .remove (fname )
32+
You can’t perform that action at this time.
0 commit comments