55
66import io as stdlib_io
77import os .path
8+ import unittest
9+ import pytest
810import stat
11+ import sys
912
10- import nose .tools as nt
11-
12- from ipython_genutils .testing .decorators import skip_win32
1313from ..fileio import atomic_writing
1414
1515from ipython_genutils .tempdir import TemporaryDirectory
@@ -38,58 +38,60 @@ class CustomExc(Exception): pass
3838 # OSError: The user lacks the privilege (Windows)
3939 have_symlink = False
4040
41- with nt . assert_raises (CustomExc ):
41+ with pytest . raises (CustomExc ):
4242 with atomic_writing (f1 ) as f :
4343 f .write (u'Failing write' )
4444 raise CustomExc
4545
4646 # Because of the exception, the file should not have been modified
4747 with stdlib_io .open (f1 , 'r' ) as f :
48- nt . assert_equal ( f .read (), u'Before' )
48+ assert f .read () == u'Before'
4949
5050 with atomic_writing (f1 ) as f :
5151 f .write (u'Overwritten' )
5252
5353 with stdlib_io .open (f1 , 'r' ) as f :
54- nt . assert_equal ( f .read (), u'Overwritten' )
54+ assert f .read () == u'Overwritten'
5555
5656 if os .name != 'nt' :
5757 mode = stat .S_IMODE (os .stat (f1 ).st_mode )
58- nt . assert_equal ( mode , orig_mode )
58+ assert mode == orig_mode
5959
6060 if have_symlink :
6161 # Check that writing over a file preserves a symlink
6262 with atomic_writing (f2 ) as f :
6363 f .write (u'written from symlink' )
6464
6565 with stdlib_io .open (f1 , 'r' ) as f :
66- nt .assert_equal (f .read (), u'written from symlink' )
67-
68- def _save_umask ():
69- global umask
70- umask = os .umask (0 )
71- os .umask (umask )
72-
73- def _restore_umask ():
74- os .umask (umask )
75-
76- @skip_win32
77- @nt .with_setup (_save_umask , _restore_umask )
78- def test_atomic_writing_umask ():
79- with TemporaryDirectory () as td :
80- os .umask (0o022 )
81- f1 = os .path .join (td , '1' )
82- with atomic_writing (f1 ) as f :
83- f .write (u'1' )
84- mode = stat .S_IMODE (os .stat (f1 ).st_mode )
85- nt .assert_equal (mode , 0o644 , '{:o} != 644' .format (mode ))
86-
87- os .umask (0o057 )
88- f2 = os .path .join (td , '2' )
89- with atomic_writing (f2 ) as f :
90- f .write (u'2' )
91- mode = stat .S_IMODE (os .stat (f2 ).st_mode )
92- nt .assert_equal (mode , 0o620 , '{:o} != 620' .format (mode ))
66+ assert f .read () == u'written from symlink'
67+
68+ class TestWithSetUmask (unittest .TestCase ):
69+ def setUp (self ):
70+ # save umask
71+ global umask
72+ umask = os .umask (0 )
73+ os .umask (umask )
74+
75+ def tearDown (self ):
76+ # restore umask
77+ os .umask (umask )
78+
79+ @pytest .mark .skipif (sys .platform == "win32" , reason = "do not run on windows" )
80+ def test_atomic_writing_umask (self ):
81+ with TemporaryDirectory () as td :
82+ os .umask (0o022 )
83+ f1 = os .path .join (td , '1' )
84+ with atomic_writing (f1 ) as f :
85+ f .write (u'1' )
86+ mode = stat .S_IMODE (os .stat (f1 ).st_mode )
87+ assert mode == 0o644
88+
89+ os .umask (0o057 )
90+ f2 = os .path .join (td , '2' )
91+ with atomic_writing (f2 ) as f :
92+ f .write (u'2' )
93+ mode = stat .S_IMODE (os .stat (f2 ).st_mode )
94+ assert mode == 0o620
9395
9496
9597def test_atomic_writing_newlines ():
@@ -105,26 +107,26 @@ def test_atomic_writing_newlines():
105107 f .write (lf )
106108 with stdlib_io .open (path , 'r' , newline = '' ) as f :
107109 read = f .read ()
108- nt . assert_equal ( read , plat )
110+ assert read == plat
109111
110112 # test newline=LF
111113 with stdlib_io .open (path , 'w' , newline = '\n ' ) as f :
112114 f .write (lf )
113115 with stdlib_io .open (path , 'r' , newline = '' ) as f :
114116 read = f .read ()
115- nt . assert_equal ( read , lf )
117+ assert read == lf
116118
117119 # test newline=CRLF
118120 with atomic_writing (path , newline = '\r \n ' ) as f :
119121 f .write (lf )
120122 with stdlib_io .open (path , 'r' , newline = '' ) as f :
121123 read = f .read ()
122- nt . assert_equal ( read , crlf )
124+ assert read == crlf
123125
124126 # test newline=no convert
125127 text = u'crlf\r \n cr\r lf\n '
126128 with atomic_writing (path , newline = '' ) as f :
127129 f .write (text )
128130 with stdlib_io .open (path , 'r' , newline = '' ) as f :
129131 read = f .read ()
130- nt . assert_equal ( read , text )
132+ assert read == text
0 commit comments