Example #1
0
 def testNumberedRedirect(self):
     run(
         'python -c "import sys;'
         'print >> sys.stderr, \'error\';print \'out\'"'
         '> stdout.txt 2> stderr.txt', globals(), locals())
     self.assertEquals('error\n', file('stderr.txt').read())
     self.assertEquals('out\n', file('stdout.txt').read())
Example #2
0
 def testErrorInBackQuoteNoDeadLock(self):
     error = False
     try:
         run('echo `echo $invalid`', globals(), locals())
     except:
         error = True
     self.assertTrue(error)
Example #3
0
 def testPipeWithErrorInLeftDoesNotCauseDeadLock(self):
     error = False
     try:
         run('/bin/ls $invalid | /bin/cat', globals(), locals())
     except Exception, e:
         self.assertTrue('invalid' in e.message)
         error = True
Example #4
0
    def testPyCmdAndNativeBackquote(self):
        def tmp(args, input, options):
            return args

        tmp = PyCmd(tmp, '', inType=IOType.No)
        run('$tmp `echo foo bar` > out.txt', globals(), locals())
        self.assertTrue(file('out.txt').read().endswith('\nfoo\nbar\n'))
Example #5
0
    def testPyCmdNoInput_inputNone(self):
        def tmp(args, input, options):
            return [str(input)]

        tmp = PyCmd(tmp, '', inType=IOType.No)
        run('$tmp > out.txt', globals(), locals())
        self.assertEquals('None\n', file('out.txt').read())
Example #6
0
    def testPyCmdNoInputWithNative(self):
        def tmp(args, input, options):
            return ['bar']

        tmp = PyCmd(tmp, '', inType=IOType.No)
        run('(echo foo && $tmp) | cat > out.txt', globals(), locals())
        self.assertEquals('foo\nbar\n', file('out.txt').read())
Example #7
0
    def testOrNotPyCmd(self):
        def tmp(args, input, options):
            yield 'a'
            raise Exception('Error!')

        run('$tmp > out.txt || $tmp >> out.txt', globals(), locals())
        self.assertEquals('a\na\n', file('out.txt').read())
Example #8
0
    def testListComprehension(self):
        def tmp(args, input, options):
            return [x * x for x in xrange(3)]

        run('$tmp ${[x * x for x in xrange(3)]} > out.txt', globals(),
            locals())
        self.assertEquals('0\n1\n4\n', file('out.txt').read())
Example #9
0
    def testPyCmdFileInput(self):
        def tmp(args, input, options):
            return [1, 2, 3]

        def represent(args, input, options):
            return (repr(e.rstrip('\r\n')) for e in input)

        represent = PyCmd(represent, '', inType=IOType.File)
        run('$tmp | $represent > out.txt', globals(), locals())
        self.assertEquals('\'1\'\n\'2\'\n\'3\'\n', file('out.txt').read())
Example #10
0
    def testPyCmdWithErrorDoesNotCauseDeadLock(self):
        def tmp(args, input, options):
            return ['tmp', 19]

        error = False
        try:
            run('$tmp $invalid', globals(), locals())
        except:
            error = True
        self.assertTrue(error)
Example #11
0
    def testPyCmdFileOutput(self):
        def tmp(args, input, options):
            return [1, 2, 3]

        def represent(args, input, options):
            return (repr(e.rstrip('\r\n')) for e in input)

        tmp = PyCmd(tmp, '', outType=IOType.File)
        run('$tmp | $represent > out.txt', globals(), locals())
        # Outputs of pycmd with IOType.File is converted to file stream.
        self.assertEquals('\'1\'\n\'2\'\n\'3\'\n', file('out.txt').read())
Example #12
0
    def testNoDeadLock_pipeAndBackquote(self):
        def tmp(args, input, options):
            return []

        tmp = PyCmd(tmp, '', inType=IOType.No)
        error = False
        try:
            run(
                '$tmp `echo foo` > /invalid/path/1831 | '
                '$tmp `echo piyo` > /invalid/path/1928', globals(), locals())
        except IOError:
            error = True
        self.assertTrue(error)
Example #13
0
    def testPyCmdPipeBothOutput(self):
        def tmp0(args, input, options):
            return [1, 2, 3]

        def tmp1(args, input, options):
            return [4, 5, 6]

        def represent(args, input, options):
            return (repr(e.rstrip('\r\n')) for e in input)

        tmp0 = PyCmd(tmp0, '', outType=IOType.File)
        run('($tmp0 && $tmp1) | cat > out.txt', globals(), locals())
        self.assertEquals('1\n2\n3\n4\n5\n6\n', file('out.txt').read())
Example #14
0
    def testPyCmdWithErrorInPipeDoesNotCauseDeadLock(self):
        def tmp(args, input, options):
            return ['tmp', 19]

        def reader(args, input, options):
            list(input)
            return []

        error = False
        try:
            run('$tmp $invalid | $reader', globals(), locals())
        except:
            error = True
        self.assertTrue(error)
Example #15
0
 def testReturnCodeMulti(self):
     rc = run(
         '(echo foo >> /dev/null -> rc0) && '
         '(echo bar >> /dev/null -> rc1)', globals(), locals())
     self.assertEquals(2, len(rc))
     self.assertEquals(0, rc['rc0'])
     self.assertEquals(0, rc['rc1'])
Example #16
0
    def testPyCmdNoInput_outputIgnored(self):
        def tmp(args, input, options):
            return ['foo']

        tmp = PyCmd(tmp, '', inType=IOType.No, outType=IOType.No)
        response = run('$tmp > out.txt -> rc', globals(), locals())
        self.assertEquals('', file('out.txt').read())
        self.assertTrue(response['rc'] != 0)
Example #17
0
 def testBackQuoteWIthGlob(self):
     run('echo foo > foo.txt', globals(), locals())
     run('echo bar > bar.txt', globals(), locals())
     run(
         'python -c "import sys;print \':\'.join(sys.argv)" '
         '*`echo .txt` > out.txt', globals(), locals())
     self.assertEquals('-c:bar.txt:foo.txt\n', file('out.txt').read())
Example #18
0
 def testStoreOutput(self):
     file('tmp.txt', 'w').write('hello\nworld\n\npiyo')
     rc = run('cat tmp.txt => out', globals(), locals())
     self.assertEquals(['hello', 'world', '', 'piyo'], rc['out'])
Example #19
0
 def testStoreOutputWithPyCmd(self):
     rc = run('echo foo | pycmd a b => out', globals(), locals())
     self.assertEquals(['pycmd', 'a', 'b', 'foo'], rc['out'])
Example #20
0
 def testSemiColon(self):
     rc = run('echo foo >> out.txt; echo bar >> out.txt', globals(),
              locals())
     self.assertEquals('foo\nbar\n', file('out.txt').read())
Example #21
0
 def testBackQuoteEmptyOutput(self):
     run('echo `echo`', globals(), locals())
Example #22
0
 def testEchoMix(self):
   data = ['foo', 'bar']
   run('echo a $data b > out.txt', globals(), locals())
   self.assertEquals('a\nfoo\nbar\nb\n', file('out.txt').read())
Example #23
0
 def testEchoTuple(self):
   data = ('foo', 'bar', 'baz')
   run('echo $data > out.txt', globals(), locals())
   self.assertEquals('foo\nbar\nbaz\n', file('out.txt').read())
Example #24
0
 def testNoDeadLock_pipeRightCommandEarlyReturn(self):
     # Usually, echo bar exits earlier than echo `echo foo`
     run('echo `echo foo` | echo bar > /dev/null', globals(), locals())
Example #25
0
 def testBackQuoteWIthPrefixSuffix(self):
     run(
         'python -c "import sys;print \':\'.join(sys.argv)" '
         'hoge`echo foo bar`piyo > out.txt', globals(), locals())
     self.assertEquals('-c:hogefoo:barpiyo\n', file('out.txt').read())
Example #26
0
 def testReturnCode(self):
     rc = run('python -c "import sys;sys.exit(7)" -> rc', globals(),
              locals())
     self.assertEquals(1, len(rc))
     self.assertEquals(True, os.WIFEXITED(rc['rc']))
     self.assertEquals(7, os.WEXITSTATUS(rc['rc']))
Example #27
0
 def testExpandUser(self):
     rc = run('echo ~/test.txt > out.txt', globals(), locals())
     path = os.path.expanduser('~/test.txt')
     self.assertEquals(path + '\n', file('out.txt').read())
Example #28
0
 def testBackQuoteInRedirect(self):
     run('echo foo > `echo out.txt`', globals(), locals())
     self.assertEquals('foo\n', file('out.txt').read())
Example #29
0
 def testGlob(self):
     run('echo foo > foo.txt', globals(), locals())
     run('echo bar > bar.txt', globals(), locals())
     run('echo baz > baz.doc', globals(), locals())
     run('echo test > "a*b.doc"', globals(), locals())
     run('echo *.txt > out1.txt', globals(), locals())
     run('echo "*.txt" > out2.txt', globals(), locals())
     run('echo *\'*\'*.doc > out3.txt', globals(), locals())
     self.assertEquals('bar.txt foo.txt\n', file('out1.txt').read())
     self.assertEquals('*.txt\n', file('out2.txt').read())
     self.assertEquals('a*b.doc\n', file('out3.txt').read())
Example #30
0
 def testEchoString(self):
   run('echo foo bar "piyo" | sort > out.txt', globals(), locals())
   self.assertEquals('foo bar piyo\n', file('out.txt').read())
Example #31
0
 def testFilterCmd(self):
   run('/bin/echo "cupcake\\ndonut\\nfroyo\\nginger" |'
            'filter ${lambda l: "e" in l} > out.txt',
            globals(), locals())
   self.assertEquals('cupcake\nginger\n', file('out.txt').read())
Example #32
0
 def testEchoXrange(self):
   data = xrange(3)
   run('echo $data > out.txt', globals(), locals())
   self.assertEquals('0\n1\n2\n', file('out.txt').read())
Example #33
0
 def testChangeDir(self):
   rc = run('cd /dev', globals(), locals())
   self.assertEquals('/dev', os.getcwd())
Example #34
0
 def testMapCmd(self):
   run('/bin/echo "1\\n2\\n3\\n4\\n5" | map ${lambda l: int(l)} |'
            'map ${lambda x: x * x} > out.txt', globals(), locals())
   self.assertEquals('1\n4\n9\n16\n25\n', file('out.txt').read())
Example #35
0
 def testWhere(self):
   table = PyshTable(('a', 'b'),
                     ((i, i * i % 10) for i in xrange(10)))
   rc = run('echo $table | where "a == 3" => out', globals(), locals())
   self.assertEquals(1, len(rc['out']))
   self.assertEquals((3, 9), (rc['out'][0].a, rc['out'][0].b))
Example #36
0
 def testReduceCmd(self):
   run('/bin/echo "foo\\nbar" | reduce ${lambda x, y: x + y} |'
            'cat > out.txt', globals(), locals())
   self.assertEquals('foobar\n', file('out.txt').read())
Example #37
0
 def testPipeInBackQuote(self):
     run(
         'python -c "import sys;print \':\'.join(sys.argv)" '
         '`echo foo bar | cat` > out.txt', globals(), locals())
     self.assertEquals('-c:foo:bar\n', file('out.txt').read())
Example #38
0
 def testChangeDirHome(self):
   rc = run('cd', globals(), locals())
   self.assertEquals(os.environ['HOME'], os.getcwd())
Example #39
0
 def testPyCmdInBackQuote(self):
     run(
         'python -c "import sys;print \':\'.join(sys.argv)" '
         '`echo a | pycmd b c` > out.txt', globals(), locals())
     self.assertEquals('-c:pycmd:b:c:a\n', file('out.txt').read())
Example #40
0
 def testOrderby(self):
   table = PyshTable(('a', 'b'),
                     ((i, i * i % 10) for i in xrange(10)))
   rc = run('echo $table | orderby b desc => out', globals(), locals())
   self.assertEquals(10, len(rc['out']))
   self.assertEquals(9, rc['out'][0].b)
Example #41
0
 def testPyCmdReadInBackQuote(self):
     run('echo foo bar | pycmd a `pycmd 1 2` b | cat > out.txt', globals(),
         locals())
     self.assertEquals('pycmd\na\npycmd\n1\n2\nfoo\nbar\nb\n',
                       file('out.txt').read())