Added unit and integration tests for the file.replace functions

This commit is contained in:
Seth House 2013-09-20 17:01:57 -06:00
parent 8c0ea6e2fe
commit ea657eed48
2 changed files with 98 additions and 0 deletions

View File

@ -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

View File

@ -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: