mirror of
https://github.com/valitydev/salt.git
synced 2024-11-08 01:18:58 +00:00
138 lines
4.5 KiB
Python
138 lines
4.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
# Import python libs
|
|
from __future__ import absolute_import
|
|
import logging
|
|
import re
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
# Import Salt Testing libs
|
|
from salttesting.helpers import ensure_in_syspath
|
|
ensure_in_syspath('../../')
|
|
|
|
# Import salt libs
|
|
import integration
|
|
|
|
# Import 3rd-party libs
|
|
import salt.ext.six as six
|
|
|
|
|
|
class SysModuleTest(integration.ModuleCase):
|
|
'''
|
|
Validate the sys module
|
|
'''
|
|
def test_list_functions(self):
|
|
'''
|
|
sys.list_functions
|
|
'''
|
|
# Get all functions
|
|
funcs = self.run_function('sys.list_functions')
|
|
self.assertIn('hosts.list_hosts', funcs)
|
|
self.assertIn('pkg.install', funcs)
|
|
|
|
# Just sysctl
|
|
funcs = self.run_function('sys.list_functions', ('sysctl',))
|
|
self.assertNotIn('sys.doc', funcs)
|
|
self.assertIn('sysctl.get', funcs)
|
|
|
|
# Just sys
|
|
funcs = self.run_function('sys.list_functions', ('sys.',))
|
|
self.assertNotIn('sysctl.get', funcs)
|
|
self.assertIn('sys.doc', funcs)
|
|
|
|
# Staring with sys
|
|
funcs = self.run_function('sys.list_functions', ('sys',))
|
|
self.assertNotIn('sysctl.get', funcs)
|
|
self.assertIn('sys.doc', funcs)
|
|
|
|
def test_list_modules(self):
|
|
'''
|
|
sys.list_moduels
|
|
'''
|
|
mods = self.run_function('sys.list_modules')
|
|
self.assertTrue('hosts' in mods)
|
|
self.assertTrue('pkg' in mods)
|
|
|
|
def test_valid_docs(self):
|
|
'''
|
|
Make sure no functions are exposed that don't have valid docstrings
|
|
'''
|
|
mods = self.run_function('sys.list_modules')
|
|
nodoc = set()
|
|
noexample = set()
|
|
allow_failure = (
|
|
'cp.recv',
|
|
'lxc.run_cmd',
|
|
'ipset.long_range',
|
|
'pkg.expand_repo_def',
|
|
'runtests_decorators.depends',
|
|
'runtests_decorators.depends_will_fallback',
|
|
'runtests_decorators.missing_depends',
|
|
'runtests_decorators.missing_depends_will_fallback',
|
|
'swift.head',
|
|
'glance.warn_until',
|
|
'yumpkg.expand_repo_def',
|
|
'yumpkg5.expand_repo_def',
|
|
'container_resource.run',
|
|
'nspawn.stop',
|
|
'nspawn.restart',
|
|
'lowpkg.bin_pkg_info',
|
|
'state.apply',
|
|
'pip.iteritems',
|
|
)
|
|
|
|
batches = 2
|
|
mod_count = len(mods)
|
|
batch_size = mod_count / float(batches)
|
|
if batch_size.is_integer():
|
|
batch_size = int(batch_size)
|
|
else:
|
|
# Check if the module count is evenly divisible by the number of
|
|
# batches. If not, increase the batch_size by the number of batches
|
|
# being run. This ensures that we get the correct number of
|
|
# batches, and that we don't end up running sys.doc an extra time
|
|
# to cover the remainder. For example, if we had a batch count of 2
|
|
# and 121 modules, if we just divided by 2 we'd end up running
|
|
# sys.doc 3 times.
|
|
batch_size = int(batch_size) + batches
|
|
|
|
log.debug('test_valid_docs batch size = %s', batch_size)
|
|
start = 0
|
|
end = batch_size
|
|
while start <= mod_count:
|
|
log.debug('running sys.doc on mods[%s:%s]', start, end)
|
|
docs = self.run_function('sys.doc', mods[start:end])
|
|
if docs == 'VALUE TRIMMED':
|
|
self.fail(
|
|
'sys.doc output trimmed. It may be necessary to increase '
|
|
'the number of batches'
|
|
)
|
|
for fun in docs:
|
|
if fun.startswith('runtests_helpers'):
|
|
continue
|
|
if fun in allow_failure:
|
|
continue
|
|
if not isinstance(docs[fun], six.string_types):
|
|
nodoc.add(fun)
|
|
elif not re.search(r'([E|e]xample(?:s)?)+(?:.*)::?', docs[fun]):
|
|
noexample.add(fun)
|
|
start += batch_size
|
|
end += batch_size
|
|
|
|
if not nodoc and not noexample:
|
|
return
|
|
|
|
raise AssertionError(
|
|
'There are some functions which do not have a docstring or do not '
|
|
'have an example:\nNo docstring:\n{0}\nNo example:\n{1}\n'.format(
|
|
'\n'.join([' - {0}'.format(f) for f in sorted(nodoc)]),
|
|
'\n'.join([' - {0}'.format(f) for f in sorted(noexample)]),
|
|
)
|
|
)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
from integration import run_tests
|
|
run_tests(SysModuleTest)
|