12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- # Copyright (C) 2010 CZ NIC
- #
- # Permission to use, copy, modify, and distribute this software for any
- # purpose with or without fee is hereby granted, provided that the above
- # copyright notice and this permission notice appear in all copies.
- #
- # THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SYSTEMS CONSORTIUM
- # DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
- # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- # INTERNET SYSTEMS CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
- # INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
- # FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- """Tests to see if every python process renames itself."""
- import unittest
- import os
- import os.path
- import isc.util.process
- import re
- class TestRename(unittest.TestCase):
- """Test scanning all python scripts if they rename themself."""
- def __scan(self, directory, script, fun):
- # Scan one script if it contains call to the renaming function
- filename = os.path.join(directory, script)
- data = ''.join(open(filename).readlines())
- prettyname = 'src' + filename[filename.rfind('../') + 2:]
- self.assertTrue(fun.search(data),
- "Didn't find a call to isc.util.process.rename in " + prettyname)
- def test_calls(self):
- """
- Test if every script renames itself.
- Scan all Makefile and look for scripts.
- Then scan them by looking at the source text
- (without actually running them)
- """
- # Regexp to find all the *_SCRIPTS = something lines,
- # including line continuations (backslash and newline)
- lines = re.compile(r'^\w+_SCRIPTS\s*=\s*((.|\\\n)*)$',
- re.MULTILINE)
- # Script name regular expression
- scripts = re.compile(r'((\w|[-.0-9])+)')
- # Line with the call
- fun = re.compile(r'^\s*isc\.util\.process\.rename\s*\(.*\)\s*(|#.*)$',
- re.MULTILINE)
- # Find all Makefile and extract names of scripts
- for (d, _, fs) in os.walk('@top_builddir@'):
- if 'Makefile' in fs:
- makefile = ''.join(open(os.path.join(d,
- "Makefile")).readlines())
- for (var, _) in lines.findall(makefile):
- for (script, _) in scripts.findall(var):
- self.__scan(d, script, fun)
- if __name__ == "__main__":
- unittest.main()
|