def test_dir_missing(self): path = os.path.join(self.temp, 'adir/afile') self.assertRaises(errors.BadArgumentFormat, self.run_conv, converters.file(mode='w'), path) @modifiers.annotate(afile=converters.file(mode='w')) def func(afile): raise NotImplementedError stdout, stderr = self.crun(func, ['test', path]) self.assertFalse(stdout.getvalue()) self.assertTrue(stderr.getvalue().startswith( 'test: Bad value for afile: Directory does not exist: '))
def test_noperm_dir(self): dpath = os.path.join(self.temp, 'adir') path = os.path.join(self.temp, 'adir/afile') os.mkdir(dpath) os.chmod(dpath, stat.S_IRUSR) self.assertRaises(errors.BadArgumentFormat, self.run_conv, converters.file(mode='w'), path)
def test_stdout(self): @modifiers.annotate(afile=converters.file(mode='w')) def func(afile): with afile as f: self.assertIs(f, sys.stdout) stdout, stderr = self.crun(func, ['test', '-']) self.assertTrue(stdout.closed) self.assertFalse(stderr.getvalue())
class ConverterRepTests(Fixtures): def _test(self, conv, rep): sig = support.s('*, par: c', locals={'c': conv}) csig = parser.CliSignature.from_signature(sig) self.assertEqual(str(csig), rep) datetime = converters.datetime, '--par=TIME' file = converters.file(), '--par=FILE'
def test_current_dir(self): @modifiers.annotate(afile=converters.file(mode='w')) def func(afile): pass with self.cd(self.temp): stdout, stderr = self.crun(func, ['test', 'afile']) self.assertFalse(stdout.getvalue()) self.assertFalse(stderr.getvalue())
def test_default_none_value(self): @modifiers.annotate(afile=converters.file()) def func(afile=None): self.assertIs(afile, None) self.completed = True stdout, stderr = self.crun(func, ['test']) self.assertFalse(stdout.getvalue()) self.assertFalse(stderr.getvalue()) self.assertTrue(self.completed)
def test_no_sym(self): @modifiers.annotate(afile=converters.file(stdio=None)) def func(afile): raise NotImplementedError self.assertFalse(os.path.exists('-')) stdout, stderr = self.crun(func, ['test', '-']) self.assertFalse(stdout.getvalue()) self.assertTrue(stderr.getvalue().startswith( 'test: Bad value for afile: File does not exist: '))
def test_stdin_no_close(self): stdin = cStringIO() @modifiers.annotate(afile=converters.file(keep_stdio_open=True)) def func(afile): with afile as f: self.assertIs(f, stdin) stdout, stderr = self.crun(func, ['test', '-'], stdin=stdin) self.assertFalse(stdin.closed) self.assertFalse(stdout.getvalue()) self.assertFalse(stderr.getvalue())
def test_race(self): path = os.path.join(self.temp, 'afile') open(path, mode='w').close() @modifiers.annotate(afile=converters.file(mode='w')) def func(afile): os.chmod(path, stat.S_IRUSR) with afile: raise NotImplementedError stdout, stderr = self.crun(func, ['test', path]) self.assertFalse(stdout.getvalue()) self.assertTrue(stderr.getvalue().startswith( 'test: Permission denied: '))
def test_file_read(self): path = os.path.join(self.temp, 'afile') open(path, 'w').close() @modifiers.annotate(afile=converters.file()) def func(afile): with afile as f: self.assertEqual(f.name, path) self.assertEqual(f.mode, 'r') self.assertTrue(f.closed) o, e = self.crun(func, ['test', path]) self.assertFalse(o.getvalue()) self.assertFalse(e.getvalue())
def test_file_write(self): path = os.path.join(self.temp, 'afile') @modifiers.annotate(afile=converters.file(mode='w')) def func(afile): self.assertFalse(os.path.exists(path)) with afile as f: self.assertEqual(f.name, path) self.assertEqual(f.mode, 'w') self.assertTrue(f.closed) self.assertTrue(os.path.exists(path)) o, e = self.crun(func, ['test', path]) self.assertFalse(o.getvalue()) self.assertFalse(e.getvalue())
def test_default_value(self): path = os.path.join(self.temp, 'default') open(path, 'w').close() @modifiers.annotate(afile=converters.file()) def func(afile=path): with afile as f: self.assertEqual(f.name, path) self.assertEqual(f.mode, 'r') self.assertTrue(f.closed) self.completed = True stdout, stderr = self.crun(func, ['test']) self.assertFalse(stdout.getvalue()) self.assertFalse(stderr.getvalue()) self.assertTrue(self.completed)
def test_race(self): path = os.path.join(self.temp, 'afile') open(path, mode='w').close() @modifiers.annotate(afile=converters.file(mode='w')) def func(afile): os.chmod(path, stat.S_IRUSR) with afile: raise NotImplementedError stdout, stderr = self.crun(func, ['test', path]) self.assertFalse(stdout.getvalue()) self.assertTrue( stderr.getvalue().startswith('test: Permission denied: '))
def test_file_read(self): path = os.path.join(self.temp, 'afile') open(path, 'w').close() @modifiers.annotate(afile=converters.file()) def func(afile): with afile as f: self.assertEqual(f.name, path) self.assertEqual(f.mode, 'r') self.assertTrue(f.closed) o, e = util.run(func, ['test', path]) self.assertFalse(o.getvalue()) self.assertFalse(e.getvalue())
def test_change_sym(self): @modifiers.annotate(afile=converters.file(stdio='gimmestdio')) def func(afile): with afile as f: self.assertIs(f, sys.stdin) stdout, stderr = self.crun(func, ['test', 'gimmestdio']) self.assertFalse(stdout.getvalue()) self.assertFalse(stderr.getvalue()) with self.cd(self.temp): self.assertFalse(os.path.exists('-')) stdout, stderr = self.crun(func, ['test', '-']) self.assertFalse(stdout.getvalue()) self.assertTrue(stderr.getvalue().startswith( 'test: Bad value for afile: File does not exist: '))
def test_file_write(self): path = os.path.join(self.temp, 'afile') @modifiers.annotate(afile=converters.file(mode='w')) def func(afile): self.assertFalse(os.path.exists(path)) with afile as f: self.assertEqual(f.name, path) self.assertEqual(f.mode, 'w') self.assertTrue(f.closed) self.assertTrue(os.path.exists(path)) o, e = util.run(func, ['test', path]) self.assertFalse(o.getvalue()) self.assertFalse(e.getvalue())
def test_current_dir(self): path = 'afile' @modifiers.annotate(afile=converters.file(mode='w')) def func(afile): with afile as f: self.assertEqual(f.name, path) self.assertEqual(f.mode, 'w') self.assertTrue(f.closed) self.assertTrue(os.path.exists(path)) self.completed = True with self.cd(self.temp): stdout, stderr = self.crun(func, ['test', path]) self.assertFalse(stdout.getvalue()) self.assertFalse(stderr.getvalue()) self.assertTrue(self.completed)
def test_ret_type(self): path = os.path.join(self.temp, 'afile') arg = self.run_conv(converters.file(mode='w'), path) self.assertTrue(isinstance(arg, converters._FileOpener)) type(arg).__enter__
# -*- coding: utf-8 -*- from __future__ import print_function, unicode_literals import logging from os.path import expanduser from clize import converters from configobj import ConfigObj from sigtools import modifiers from uptime_report.backends import backend_config, get_backend, list_backends log = logging.getLogger(__name__) @modifiers.autokwoargs @modifiers.annotate(output=converters.file(keep_stdio_open=True, mode='wb')) def write_config(output='-'): """Write out a sample config file. Use '-' for stdout. :param output: the path to the file to write. """ cfg = ConfigObj() for name in list_backends(): cfg[name] = {} for setting, value in backend_config(get_backend(name)): cfg[name][setting] = value with output as fp: cfg.write(getattr(fp, 'buffer', fp)) def read_config(config='~/.config/uptime_report.cfg'):
def test_noperm_file_write(self): path = os.path.join(self.temp, 'afile') open(path, mode='w').close() os.chmod(path, stat.S_IRUSR) self.assertRaises(errors.BadArgumentFormat, self.run_conv, converters.file(mode='w'), path)