mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 08:58:59 +00:00
Added unit and integration tests for the file.replace functions
This commit is contained in:
parent
8c0ea6e2fe
commit
ea657eed48
@ -5,6 +5,7 @@ Tests for the file state
|
||||
# Import python libs
|
||||
import os
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
# Import Salt Testing libs
|
||||
from salttesting.helpers import ensure_in_syspath
|
||||
@ -319,6 +320,25 @@ class FileTest(integration.ModuleCase, integration.SaltReturnAssertsMixIn):
|
||||
finally:
|
||||
shutil.rmtree(name, ignore_errors=True)
|
||||
|
||||
def test_replace(self):
|
||||
'''
|
||||
file.replace
|
||||
'''
|
||||
name = os.path.join(integration.TMP, 'replace_test')
|
||||
with salt.utils.fopen(name, 'w+') as fp_:
|
||||
fp_.write('change_me')
|
||||
|
||||
ret = self.run_state('file.replace',
|
||||
name=name, pattern='change', repl='salt', backup=False)
|
||||
|
||||
try:
|
||||
with salt.utils.fopen(name, 'r') as fp_:
|
||||
self.assertIn('salt', fp_.read())
|
||||
|
||||
self.assertSaltTrueReturn(ret)
|
||||
finally:
|
||||
os.remove(name)
|
||||
|
||||
def test_sed(self):
|
||||
'''
|
||||
file.sed
|
||||
|
@ -1,5 +1,7 @@
|
||||
# Import python libs
|
||||
import os
|
||||
import tempfile
|
||||
import textwrap
|
||||
|
||||
# Import Salt Testing libs
|
||||
from salttesting import TestCase
|
||||
@ -24,6 +26,82 @@ here
|
||||
"""
|
||||
|
||||
|
||||
class FileReplaceTestCase(TestCase):
|
||||
MULTILINE_STRING = textwrap.dedent('''\
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus
|
||||
enim ac bibendum vulputate. Etiam nibh velit, placerat ac auctor in,
|
||||
lacinia a turpis. Nulla elit elit, ornare in sodales eu, aliquam sit
|
||||
amet nisl.
|
||||
|
||||
Fusce ac vehicula lectus. Vivamus justo nunc, pulvinar in ornare nec,
|
||||
sollicitudin id sem. Pellentesque sed ipsum dapibus, dapibus elit id,
|
||||
malesuada nisi.
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec
|
||||
venenatis tellus eget massa facilisis, in auctor ante aliquet. Sed nec
|
||||
cursus metus. Curabitur massa urna, vehicula id porttitor sed, lobortis
|
||||
quis leo.
|
||||
''')
|
||||
|
||||
def setUp(self):
|
||||
self.tfile = tempfile.NamedTemporaryFile(delete=False)
|
||||
self.tfile.write(self.MULTILINE_STRING)
|
||||
self.tfile.close()
|
||||
|
||||
def tearDown(self):
|
||||
os.remove(self.tfile.name)
|
||||
|
||||
def test_replace(self):
|
||||
filemod.replace(self.tfile.name, r'Etiam', 'Salticus', backup=False)
|
||||
|
||||
with open(self.tfile.name, 'rb') as fp:
|
||||
self.assertIn('Salticus', fp.read())
|
||||
|
||||
def test_backup(self):
|
||||
fext = '.bak'
|
||||
bak_file = '{0}{1}'.format(self.tfile.name, fext)
|
||||
|
||||
filemod.replace(self.tfile.name, r'Etiam', 'Salticus', backup=fext)
|
||||
|
||||
self.assertTrue(os.path.exists(bak_file))
|
||||
os.unlink(bak_file)
|
||||
|
||||
def test_nobackup(self):
|
||||
fext = '.bak'
|
||||
bak_file = '{0}{1}'.format(self.tfile.name, fext)
|
||||
|
||||
filemod.replace(self.tfile.name, r'Etiam', 'Salticus', backup=False)
|
||||
|
||||
self.assertFalse(os.path.exists(bak_file))
|
||||
|
||||
def test_dry_run(self):
|
||||
before_ctime = os.stat(self.tfile.name).st_mtime
|
||||
filemod.replace(self.tfile.name, r'Etiam', 'Salticus', dry_run=True)
|
||||
after_ctime = os.stat(self.tfile.name).st_mtime
|
||||
|
||||
self.assertEqual(before_ctime, after_ctime)
|
||||
|
||||
def test_show_changes(self):
|
||||
ret = filemod.replace(self.tfile.name, r'Etiam', 'Salticus',
|
||||
show_changes=True)
|
||||
|
||||
self.assertTrue(ret.startswith('---')) # looks like a diff
|
||||
|
||||
def test_noshow_changes(self):
|
||||
ret = filemod.replace(self.tfile.name, r'Etiam', 'Salticus',
|
||||
show_changes=False)
|
||||
|
||||
self.assertIsInstance(ret, bool)
|
||||
|
||||
def test_re_str_flags(self):
|
||||
# upper- & lower-case
|
||||
filemod.replace(self.tfile.name, r'Etiam', 'Salticus',
|
||||
flags=['MULTILINE', 'ignorecase'])
|
||||
|
||||
def test_re_int_flags(self):
|
||||
filemod.replace(self.tfile.name, r'Etiam', 'Salticus', flags=10)
|
||||
|
||||
|
||||
class FileModuleTestCase(TestCase):
|
||||
def test_sed_limit_escaped(self):
|
||||
with tempfile.NamedTemporaryFile() as tfile:
|
||||
|
Loading…
Reference in New Issue
Block a user