def test_from_string(c): '''Functional test Config from string''' host = 'leon' cmd = '{} -E="{}" {}'.format(c.loadconfig_cmd, c.conf, host) ret = run(cmd) assert 'export SYSTEM_PATH="/data/salt/system"' in ret.stdout assert 'export HOST="{}"'.format(host) in ret.stdout
def test_run_inexistent_cmd(): ret = run('not_script.sh') assert isinstance(ret, text_type) assert '' == ret assert ret.stderr.startswith('/bin/sh: not_script.sh:') assert 127 == ret.code assert 127 == ret._r['code']
def test_extra_config_have_precedenced(c): host = 'leon' with tempdir() as tmpdir: with open('{}/config.conf'.format(tmpdir), 'w') as fh: fh.write(c.conf) cmd = '{} -C="{}" -E="system_path: /tmp/systest" {}'.format( c.loadconfig_cmd, tmpdir, host) ret = run(cmd) assert 'export SYSTEM_PATH="/tmp/systest"' in ret.stdout
def test_extra_config_have_precedenced(c): host = 'leon' with tempdir() as tmpdir: with open('{}/config.conf'.format(tmpdir), 'w') as fh: fh.write(c.conf) cmd = '{} -C="{}" -E="system_path: /tmp/systest" {}'.format( c.loadconfig_cmd, tmpdir, host) ret = run(cmd) assert'export SYSTEM_PATH="/tmp/systest"' in ret.stdout
def test_functional_verprog(f): '''Test version and program show properly.''' # argparse python 2.7 still send version option to stderr prog = 'demoscript.py' version = '0.1.5' cmd = 'PYTHONPATH={0} {0}/tests/fixtures/{1} -v'.format( f.project_path, prog) ret = run(cmd) regex = '{} {}+[ \n]*$'.format(prog, version) assert re.search(regex, ret.stderr)
def test_from_directory(c): '''Functional test Config from directory (default on config.conf)''' host = 'leon' # Place conf in a temporary directory and run test with tempfile() as fh: fh.write(c.conf) fh.flush() cmd = '{} -C="{}" {}'.format(c.loadconfig_cmd, fh.name, host) ret = run(cmd) assert 'export SYSTEM_PATH="/data/salt/system"' in ret.stdout assert 'export HOST="{}"'.format(host) in ret.stdout
def test_multiple_options_are_cleaned(c): '''test_multiple_options_are_cleaned. shell equivalent: $ load_config.py -E="greet: hi" -E="name: Jenny" export GREET=hi export NAME=cmd ''' cmd = '{} -E="greet: hi" -E="name: Jenny"'.format(c.loadconfig_cmd) ret = run(cmd) assert 'export GREET="hi"' in ret.stdout assert 'export NAME="Jenny"' in ret.stdout assert 'export STR="name: Jenny"' not in ret.stdout assert 'export ARGS=""' not in ret.stdout
def build(self): '''Render reStructuredText files with sphinx''' started = time.time() logger.info('Building...') result = run( 'sphinx-build {rst_path} {output_path}'.format( rst_path=shlex_quote(self.c.sphinx_path), output_path=shlex_quote( os.path.join(self.c.sphinx_path, self.c.output) ) ) ) if result.stderr.strip(): logger.warning(result.stderr.strip()) total_seconds = time.time() - started logger.info('Build completed in %fs', total_seconds) return result
def test_extra_positional_arguments(c): '''Test extra positional arguments are properly handled.''' host = 'leon' cmd = '{} -E="{}" {} test'.format(c.loadconfig_cmd, c.conf, host) ret = run(cmd) assert 'export ARGS="test"' in ret.stdout
def test_empty_extra_argument(c): cmd = '{} -E=""'.format(c.loadconfig_cmd) ret = run(cmd) assert 0 == ret.code assert '' == ret.stderr
def test_verprog(c): '''Test version and program show properly.''' # argparse python 2.7 still send version option to stderr cmd = '{} -E="{}" -v'.format(c.loadconfig_cmd, c.conf) ret = run(cmd) assert '{} {}\n'.format(c.prog, c.test_version) == ret.stderr
def test_options_are_cleaned(c): cmd = '{} -E="greet: hi"'.format(c.loadconfig_cmd) ret = run(cmd) assert 'export GREET="hi"' in ret.stdout assert 'export CONF=""' not in ret.stdout