11import os
2- import json
3- import shutil
42import sublime
53
64from ..core import DeferrableMethod
@@ -17,38 +15,43 @@ def setUpClass(cls):
1715 new_settings_path = settings_path + ".bak"
1816
1917 s = sublime .load_settings (settings_file_name )
20- on_change_key = settings_file_name + "catch_on_change"
18+ on_change_key = settings_file_name + ". catch_on_change"
2119 caught = [False ]
2220 s .add_on_change (on_change_key , lambda : caught .__setitem__ (0 , True ))
23-
24- if os .path .exists (settings_path ):
25- shutil .move (settings_path , new_settings_path )
21+ try :
22+ try :
23+ os .remove (new_settings_path )
24+ except FileNotFoundError :
25+ pass
26+ try :
27+ os .rename (settings_path , new_settings_path )
28+ except FileNotFoundError :
29+ pass
2630 yield lambda : caught [0 ]
27- yield 500
28-
29- caught = [False ]
30- with open (settings_path , "w" ) as f :
31- f .write (json .dumps (settings ))
32- yield lambda : caught [0 ]
33- yield 500
34- s .clear_on_change (on_change_key )
31+ caught = [False ]
32+ with open (settings_path , "w" , encoding = "utf-8" ) as f :
33+ f .write (sublime .encode_value (settings , True ))
34+ yield lambda : caught [0 ]
35+ finally :
36+ s .clear_on_change (on_change_key )
3537
3638 deferred = super ().setUpClass ()
3739 if isinstance (deferred , DeferrableMethod ):
3840 yield from deferred
3941
4042 @classmethod
4143 def tearDownClass (cls ):
42- for settings_file_name , settings in cls .override_preferences . items () :
44+ for settings_file_name in cls .override_preferences :
4345 settings_path = os .path .join (sublime .packages_path (), "User" , settings_file_name )
4446 new_settings_path = settings_path + ".bak"
45- if os .path .exists (new_settings_path ):
46- shutil .move (new_settings_path , settings_path )
47- else :
48- try :
49- os .unlink (settings_path )
50- except Exception :
51- pass
47+ try :
48+ os .remove (settings_path )
49+ except FileNotFoundError :
50+ pass
51+ try :
52+ os .rename (new_settings_path , settings_path )
53+ except FileNotFoundError :
54+ pass
5255
5356 deferred = super ().tearDownClass ()
5457 if isinstance (deferred , DeferrableMethod ):
0 commit comments