33from unittest .mock import patch , Mock
44import os
55import sys
6- import re
76
87import scipy .sparse as sp
98from AnyQt .QtWidgets import QFileDialog
@@ -410,27 +409,26 @@ def test_get_save_filename_linux(self):
410409
411410 def test_save_file_dialog_enforces_extension_linux (self ):
412411 dialog = OWSave .SaveFileDialog (
413- None , "Save File" , "high.txt " ,
414- "Bar files (*.bar );;Low files (*.low )" )
412+ None , "Save File" , "foo.bar " ,
413+ "Bar files (*.tab );;Low files (*.csv )" )
415414
416- dialog .selectNameFilter ("Low files (*.low )" )
417- self .assertTrue (dialog .selectedFiles ()[0 ].endswith ("/high.low " ))
415+ dialog .selectNameFilter ("Low files (*.csv )" )
416+ self .assertTrue (dialog .selectedFiles ()[0 ].endswith ("/foo.csv " ))
418417
419- dialog .selectFile ("high.txt" )
420- print (dialog .selectedFiles ()[0 ])
421- self .assertTrue (dialog .selectedFiles ()[0 ].endswith ("/high.txt.low" ))
418+ dialog .selectFile ("high.bar" )
419+ self .assertTrue (dialog .selectedFiles ()[0 ].endswith ("/high.bar.csv" ))
422420
423- dialog .selectNameFilter ("Bar files (*.bar )" )
424- self .assertTrue (dialog .selectedFiles ()[0 ].endswith ("/high.bar" ))
421+ dialog .selectNameFilter ("Bar files (*.tab )" )
422+ self .assertTrue (dialog .selectedFiles ()[0 ].endswith ("/high.bar.tab " ))
425423
426424 dialog .selectFile ("middle.pkl" )
427- self .assertTrue (dialog .selectedFiles ()[0 ].endswith ("/middle.bar " ))
425+ self .assertTrue (dialog .selectedFiles ()[0 ].endswith ("/middle.tab " ))
428426
429- dialog .filterSelected .emit ("Low files (*.low )" )
430- self .assertTrue (dialog .selectedFiles ()[0 ].endswith ("/middle.low " ))
427+ dialog .filterSelected .emit ("Low files (*.csv )" )
428+ self .assertTrue (dialog .selectedFiles ()[0 ].endswith ("/middle.csv " ))
431429
432430 dialog .selectFile ("high.tab.gz" )
433- self .assertTrue (dialog .selectedFiles ()[0 ].endswith ("/high.low " ))
431+ self .assertTrue (dialog .selectedFiles ()[0 ].endswith ("/high.csv " ))
434432
435433 def test_save_file_dialog_uses_valid_filters_linux (self ):
436434 widget = self .widget
@@ -444,26 +442,35 @@ def test_save_file_dialog_uses_valid_filters_linux(self):
444442 instance .selectNameFilter .assert_called_with ("a (*.a)" )
445443
446444
447- @unittest .skipUnless (sys .platform == "darwin" , "Test for dialog for macOS" )
445+ @unittest .skipUnless (sys .platform in ("darwin" , "win32" ),
446+ "Test for native dialog on Windows and macOS" )
448447class TestOWSaveDarwinDialog (TestOWSaveBase ): # pragma: no cover
449- @staticmethod
450- def _mac_filter (filt ):
451- return re .sub (r"\(\*\..*\)" , "(*.*)" , filt )
448+ if sys .platform == "darwin" :
449+ @staticmethod
450+ def remove_star (filt ):
451+ return filt .replace (" (*." , " (." )
452+ else :
453+ @staticmethod
454+ def remove_star (filt ):
455+ return filt
452456
453457 @patch ("Orange.widgets.data.owsave.QFileDialog" )
454458 def test_get_save_filename_darwin (self , dlg ):
455459 widget = self .widget
456460 widget ._initial_start_dir = lambda : "baz"
457- widget .filters = dict .fromkeys (("a (*.a)" , "b (*.b)" , "c (*.c)" ))
458- widget .filter = "b (*.b)"
461+ widget .filters = dict .fromkeys (("aa (*.a)" , "bb (*.b)" , "cc (*.c)" ))
462+ widget .filter = "bb (*.b)"
459463 instance = dlg .return_value
460464 instance .exec .return_value = dlg .Accepted = QFileDialog .Accepted
461465 instance .selectedFiles .return_value = ["foo" ]
462- instance .selectedNameFilter .return_value = "a (*.*)"
463- self .assertEqual (widget .get_save_filename (), ("foo.a" , "a (*.a)" ))
466+ instance .selectedNameFilter .return_value = self . remove_star ( "aa (*.a)" )
467+ self .assertEqual (widget .get_save_filename (), ("foo.a" , "aa (*.a)" ))
464468 self .assertEqual (dlg .call_args [0 ][2 ], "baz" )
465- self .assertEqual (dlg .call_args [0 ][3 ], "a (*.*);;b (*.*);;c (*.*)" )
466- instance .selectNameFilter .assert_called_with ("b (*.*)" )
469+ self .assertEqual (
470+ dlg .call_args [0 ][3 ],
471+ self .remove_star ("aa (*.a);;bb (*.b);;cc (*.c)" ))
472+ instance .selectNameFilter .assert_called_with (
473+ self .remove_star ("bb (*.b)" ))
467474
468475 instance .exec .return_value = dlg .Rejected = QFileDialog .Rejected
469476 self .assertEqual (widget .get_save_filename (), ("" , "" ))
@@ -482,7 +489,7 @@ def test_save_file_dialog_enforces_extension_darwin(self, dlg):
482489 instance = dlg .return_value
483490 instance .exec .return_value = QFileDialog .Accepted
484491
485- instance .selectedNameFilter .return_value = self ._mac_filter (filter1 )
492+ instance .selectedNameFilter .return_value = self .remove_star (filter1 )
486493 instance .selectedFiles .return_value = ["foo" ]
487494 self .assertEqual (widget .get_save_filename ()[0 ], "foo.tab" )
488495 instance .selectedFiles .return_value = ["foo.pkl" ]
@@ -494,7 +501,7 @@ def test_save_file_dialog_enforces_extension_darwin(self, dlg):
494501 instance .selectedFiles .return_value = ["foo.bar" ]
495502 self .assertEqual (widget .get_save_filename ()[0 ], "foo.bar.tab" )
496503
497- instance .selectedNameFilter .return_value = self ._mac_filter (filter2 )
504+ instance .selectedNameFilter .return_value = self .remove_star (filter2 )
498505 instance .selectedFiles .return_value = ["foo" ]
499506 self .assertEqual (widget .get_save_filename ()[0 ], "foo.csv.gz" )
500507 instance .selectedFiles .return_value = ["foo.pkl" ]
@@ -525,7 +532,7 @@ def selected_files():
525532 instance = dlg .return_value
526533 instance .exec .return_value = QFileDialog .Accepted
527534 instance .selectedFiles = selected_files
528- instance .selectedNameFilter .return_value = self ._mac_filter (filter1 )
535+ instance .selectedNameFilter .return_value = self .remove_star (filter1 )
529536
530537 attempts = - 1
531538 msgbox .question .return_value = msgbox .Yes = 1
@@ -538,26 +545,15 @@ def selected_files():
538545 @patch ("Orange.widgets.data.owsave.QFileDialog" )
539546 def test_save_file_dialog_uses_valid_filters_darwin (self , dlg ):
540547 widget = self .widget
541- widget ._valid_filters = lambda : ["a (*.a)" , "b (*.b)" ]
542- widget ._default_valid_filter = lambda : "a (*.a)"
548+ widget ._valid_filters = lambda : ["aa (*.a)" , "bb (*.b)" ]
549+ widget ._default_valid_filter = lambda : "aa (*.a)"
543550 instance = dlg .return_value
544551 instance .exec .return_value = dlg .Rejected = QFileDialog .Rejected
545552 widget .get_save_filename ()
546- self .assertEqual (dlg .call_args [0 ][3 ], "a (*.*);;b (*.*)" )
547- instance .selectNameFilter .assert_called_with ("a (*.*)" )
548-
549-
550- @unittest .skipUnless (sys .platform == "win32" , "Test for dialog for Windows" )
551- class TestOWSaveWindowsDialog (TestOWSaveBase ): # pragma: no cover
552- @patch ("Orange.widgets.data.owsave.QFileDialog.getSaveFileName" )
553- def test_save_file_dialog_uses_valid_filters_windows (self , dlg ):
554- widget = self .widget
555- widget ._valid_filters = lambda : ["a (*.a)" , "b (*.b)" ]
556- widget ._default_valid_filter = lambda : "a (*.a)"
557- widget .get_save_filename ()
558- call_args = dlg .call_args
559- self .assertEqual (call_args [0 ][3 ], "a (*.a);;b (*.b)" )
560- self .assertEqual (call_args [0 ][4 ], "a (*.a)" )
553+ self .assertEqual (
554+ dlg .call_args [0 ][3 ], self .remove_star ("aa (*.a);;bb (*.b)" ))
555+ instance .selectNameFilter .assert_called_with (
556+ self .remove_star ("aa (*.a)" ))
561557
562558
563559class TestOWSaveUtils (unittest .TestCase ):
@@ -592,6 +588,5 @@ def test_extension_from_filter(self):
592588 OWSave ._extension_from_filter ("Description (.foo.bar)" ), ".foo.bar" )
593589
594590
595-
596591if __name__ == "__main__" :
597592 unittest .main ()
0 commit comments