def testParseLikeEcho(self): s = args.BuiltinFlags() s.ShortFlag('-e') # no backslash escapes s.ShortFlag('-n') arg, i = s.ParseLikeEcho(['-e', '-n', 'foo']) self.assertEqual(True, arg.e) self.assertEqual(True, arg.n) self.assertEqual(2, i) arg, i = s.ParseLikeEcho(['-en', 'foo']) self.assertEqual(True, arg.e) self.assertEqual(True, arg.n) self.assertEqual(1, i) arg, i = s.ParseLikeEcho(['-ez', 'foo']) self.assertEqual(None, arg.e) self.assertEqual(None, arg.n) self.assertEqual(0, i)
def testBuiltinFlags(self): s = args.BuiltinFlags() s.ShortFlag('-f') s.ShortFlag('-n') s.ShortFlag('-d', args.Str) # delimiter arg, i = s.Parse(['-f', 'foo', 'bar']) self.assertEqual(1, i) self.assertEqual(True, arg.f) self.assertEqual(None, arg.n) self.assertRaises(args.UsageError, s.Parse, ['-f', '-d']) arg, i = s.Parse(['-d', ' ', 'foo']) self.assertEqual(2, i) self.assertEqual(' ', arg.d) arg, i = s.Parse(['-d,', 'foo']) self.assertEqual(1, i) self.assertEqual(',', arg.d)
def testReadBuiltinFlags(self): s = args.BuiltinFlags() s.ShortFlag('-r') # no backslash escapes s.ShortFlag('-t', args.Float) # timeout s.ShortFlag('-p', args.Str) # prompt string arg, i = s.Parse(['-r', 'foo']) self.assertEqual(True, arg.r) self.assertEqual(1, i) arg, i = s.Parse(['-p', '>']) self.assertEqual(None, arg.r) self.assertEqual('>', arg.p) self.assertEqual(2, i) arg, i = s.Parse(['-rp', '>']) self.assertEqual(True, arg.r) self.assertEqual('>', arg.p) self.assertEqual(2, i) # REALLY ANNOYING: The first r is a flag, the second R is the prompt! Only # works in that order # Does that mean anything with an arity consumes the rest? # read -p line # arg, i = s.Parse(['-rpr']) self.assertEqual(True, arg.r) self.assertEqual('r', arg.p) self.assertEqual(1, i) argv = ['-t1.5', '>'] arg, i = s.Parse(argv) self.assertEqual(1.5, arg.t) self.assertEqual(1, i) # Invalid flag 'z' self.assertRaises(args.UsageError, s.Parse, ['-rz'])
def Register(self, name, help_topic=None): help_topic = help_topic or name arg_spec = args.BuiltinFlags() self.arg_specs[name] = arg_spec return arg_spec
#!/usr/bin/python from __future__ import print_function """ readlink.py - Minimal implementation of readlink -f, e.g. for OS X. """ import libc from core import args, util SPEC = args.BuiltinFlags() SPEC.ShortFlag('-f') def main(argv): arg, i = SPEC.Parse(argv) if not arg.f: util.error("-f must be passed") return 1 for path in argv[i:]: res = libc.realpath(path) if res is None: return 1 print(res) return 0