Merge pull request #49026 from dwoz/issue_48557

Fix file.line line endings
This commit is contained in:
Nicole Thomas 2018-08-13 09:05:41 -04:00 committed by GitHub
commit 338ecb70ef
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 3 deletions

View file

@ -158,7 +158,12 @@ def atomic_open(filename, mode='w'):
'''
if mode in ('r', 'rb', 'r+', 'rb+', 'a', 'ab'):
raise TypeError('Read or append modes don\'t work with atomic_open')
ntf = tempfile.NamedTemporaryFile(mode, prefix='.___atomic_write',
dir=os.path.dirname(filename),
delete=False)
kwargs = {
'prefix': '.___atomic_write',
'dir': os.path.dirname(filename),
'delete': False,
}
if six.PY3 and 'b' not in mode:
kwargs['newline'] = ''
ntf = tempfile.NamedTemporaryFile(mode, **kwargs)
return _AtomicWFile(ntf, ntf.name, filename)

View file

@ -2435,6 +2435,32 @@ class FileTest(ModuleCase, SaltReturnAssertsMixin):
self.assertEqual(pwd.getpwuid(temp_file_stats.st_uid).pw_name, user)
self.assertEqual(grp.getgrgid(temp_file_stats.st_gid).gr_name, group)
@with_tempdir()
def test_issue_48557(self, tempdir):
tempfile = os.path.join(tempdir, 'temp_file_issue_48557')
with salt.utils.files.fopen(tempfile, 'wb') as fp:
fp.write(os.linesep.join([
'test1',
'test2',
'test3',
'',
]).encode('utf-8'))
ret = self.run_state('file.line',
name=tempfile,
after='test2',
mode='insert',
content='test4')
self.assertSaltTrueReturn(ret)
with salt.utils.files.fopen(tempfile, 'rb') as fp:
content = fp.read()
self.assertEqual(content, os.linesep.join([
'test1',
'test2',
'test4',
'test3',
'',
]).encode('utf-8'))
class BlockreplaceTest(ModuleCase, SaltReturnAssertsMixin):
marker_start = '# start'