def testNumberedRedirect(self): pysh.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())
def testOrNotPyCmd(self): class Tmp(object): def process(self, args, input): raise Exception('Error!') tmp = Tmp() pysh.run('$tmp > out.txt || echo foo >> out.txt', globals(), locals()) self.assertEquals('foo\n', file('out.txt').read())
def testOrPyCmd(self): class Tmp(object): def process(self, args, input): return ['tmp'] tmp = Tmp() pysh.run('$tmp > out.txt || echo foo >> out.txt', globals(), locals()) self.assertEquals('tmp\n', file('out.txt').read())
def testNumberedRedirect(self): pysh.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())
def testPyCmdInVar(self): class Tmp(object): def process(self, args, input): return ['tmp', 19] tmp = Tmp() pysh.run('$tmp > out.txt', globals(), locals()) self.assertEquals('tmp\n19\n', file('out.txt').read())
def testReturnCodeMulti(self): rc = pysh.run( '(rc0 <- echo foo >> /dev/null) && ' '(rc1 <- echo bar >> /dev/null)', globals(), locals()) self.assertEquals(2, len(rc)) self.assertEquals(0, rc['rc0']) self.assertEquals(0, rc['rc1'])
def testReadCvsCmd(self): pysh.run('echo \'a,b,"c,"\' > in.txt', globals(), locals()) pysh.run('echo \'e,"f","""g"""\' >> in.txt', globals(), locals()) pysh.run('cat in.txt | readcsv |' 'map ${lambda row: row[2]} > out.txt', globals(), locals()) self.assertEquals('c,\n"g"\n', file('out.txt').read())
def testReadCvsCmd(self): pysh.run('echo \'a,b,"c,"\' > in.txt', globals(), locals()) pysh.run('echo \'e,"f","""g"""\' >> in.txt', globals(), locals()) pysh.run( 'cat in.txt | readcsv |' 'map ${lambda row: row[2]} > out.txt', globals(), locals()) self.assertEquals('c,\n"g"\n', file('out.txt').read())
def testPyCmdSequence(self): pysh.run('echo "foo" | pycmd bar | pycmd baz | cat > out.txt', globals(), locals()) self.assertEquals('pycmd\nbaz\npycmd\nbar\nfoo\n', file('out.txt').read())
def testReceiveData(self): out = [] pysh.run('echo "foo\\nbar" | recv $out', globals(), locals()) self.assertEquals(['foo', 'bar'], out)
def testListArgs(self): args = ['a', 'b', 10, {1: 3}] pysh.run('python -c "import sys;print sys.argv" ' '$args > out.txt', globals(), locals()) argv = eval(file('out.txt').read()) self.assertEquals(['-c', 'a', 'b', '10', '{1: 3}'], argv)
def testPyCmd(self): pysh.run('echo "foo\\nbar" | pycmd a b c | cat > out.txt', globals(), locals()) self.assertEquals('pycmd\na\nb\nc\nfoo\nbar\n', file('out.txt').read())
def testExpression(self): map_str = str(map) pysh.run('echo ${{len("abc") :[3 * 4 + 10]}} > out.txt', globals(), locals()) self.assertEquals('{3: [22]}\n', file('out.txt').read())
def testEnvVar(self): os.environ['YUNABE_PYSH_TEST_VAR'] = 'foobarbaz' pysh.run('echo $YUNABE_PYSH_TEST_VAR > out.txt', globals(), locals()) self.assertEquals('foobarbaz\n', file('out.txt').read())
def testOr(self): pysh.run('echo hoge >> out.txt || echo piyo >> out.txt', globals(), locals()) self.assertEquals('hoge\n', file('out.txt').read())
def testReduceCmd(self): pysh.run('echo "foo\\nbar" | reduce ${lambda x, y: x + y} |' 'cat > out.txt', globals(), locals()) self.assertEquals('foobar\n', file('out.txt').read())
def testMapCmd(self): pysh.run( '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())
def testFilterCmd(self): pysh.run('echo "cupcake\\ndonut\\nfroyo\\nginger" |' 'filter ${lambda l: "e" in l} > out.txt', globals(), locals()) self.assertEquals('cupcake\nginger\n', file('out.txt').read())
def testMapCmd(self): pysh.run('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())
def testSendData(self): data = ['foo', 'bar', 'baz'] pysh.run('send $data | sort > out.txt', globals(), locals()) self.assertEquals('bar\nbaz\nfoo\n', file('out.txt').read())
def testReduceCmd(self): pysh.run( 'echo "foo\\nbar" | reduce ${lambda x, y: x + y} |' 'cat > out.txt', globals(), locals()) self.assertEquals('foobar\n', file('out.txt').read())
def testAndOr(self): pysh.run( '(python -c "import sys;sys.exit(1)" >> out.txt && echo bar) || ' 'echo baz >> out.txt)', globals(), locals()) self.assertEquals('baz\n', file('out.txt').read())
def testOrAnd(self): pysh.run('(echo foo >> out.txt || echo bar >> out.txt) && ' 'echo baz >> out.txt', globals(), locals()) self.assertEquals('foo\nbaz\n', file('out.txt').read())
def testAndOr(self): pysh.run('(python -c "import sys;sys.exit(1)" >> out.txt && echo bar) || ' 'echo baz >> out.txt)', globals(), locals()) self.assertEquals('baz\n', file('out.txt').read())
def testListComprehension(self): pysh.run('send ${[x * x for x in xrange(3)]} > out.txt', globals(), locals()) self.assertEquals('0\n1\n4\n', file('out.txt').read())
def testOrNot(self): pysh.run('python -c "import sys;sys.exit(1)" > out.txt || ' 'echo foo >> out.txt', globals(), locals()) self.assertEquals('foo\n', file('out.txt').read())
def testStringArgs(self): pysh.run( 'python -c "import sys;print sys.argv" ' '"a b" \'c d\' e f > out.txt', globals(), locals()) argv = eval(file('out.txt').read()) self.assertEquals(['-c', 'a b', 'c d', 'e', 'f'], argv)
def testStringArgs(self): pysh.run('python -c "import sys;print sys.argv" ' '"a b" \'c d\' e f > out.txt', globals(), locals()) argv = eval(file('out.txt').read()) self.assertEquals(['-c', 'a b', 'c d', 'e', 'f'], argv)
def testPyCmdRedirect(self): pysh.run('echo "foo" | pycmd a b c > out.txt', globals(), locals()) self.assertEquals('pycmd\na\nb\nc\nfoo\n', file('out.txt').read())
def testReturnCode(self): rc = pysh.run('rc <- echo foo >> /dev/null', globals(), locals()) self.assertEquals(1, len(rc)) self.assertEquals(0, rc['rc'])
def testReturnCodeMulti(self): rc = pysh.run('(rc0 <- echo foo >> /dev/null) && ' '(rc1 <- echo bar >> /dev/null)', globals(), locals()) self.assertEquals(2, len(rc)) self.assertEquals(0, rc['rc0']) self.assertEquals(0, rc['rc1'])
def testSemiColon(self): rc = pysh.run('echo foo >> out.txt; echo bar >> out.txt', globals(), locals()) self.assertEquals('foo\nbar\n', file('out.txt').read())
def testFilterCmd(self): pysh.run( 'echo "cupcake\\ndonut\\nfroyo\\nginger" |' 'filter ${lambda l: "e" in l} > out.txt', globals(), locals()) self.assertEquals('cupcake\nginger\n', file('out.txt').read())
def testChangeDir(self): rc = pysh.run('cd /dev', globals(), locals()) self.assertEquals('/dev', os.getcwd())
def testOrAnd(self): pysh.run( '(echo foo >> out.txt || echo bar >> out.txt) && ' 'echo baz >> out.txt', globals(), locals()) self.assertEquals('foo\nbaz\n', file('out.txt').read())
def testBuiltinVar(self): map_str = str(map) pysh.run('echo $map > out.txt', globals(), locals()) self.assertEquals(map_str + '\n', file('out.txt').read())
def testOrNot(self): pysh.run( 'python -c "import sys;sys.exit(1)" > out.txt || ' 'echo foo >> out.txt', globals(), locals()) self.assertEquals('foo\n', file('out.txt').read())
def testExpandUser(self): rc = pysh.run('echo ~/test.txt > out.txt', globals(), locals()) path = os.path.expanduser('~/test.txt') self.assertEquals(path + '\n', file('out.txt').read())
def testGlob(self): pysh.run('echo foo > foo.txt', globals(), locals()) pysh.run('echo bar > bar.txt', globals(), locals()) pysh.run('echo baz > baz.doc', globals(), locals()) pysh.run('echo test > "a*b.doc"', globals(), locals()) pysh.run('echo *.txt > out1.txt', globals(), locals()) pysh.run('echo "*.txt" > out2.txt', globals(), locals()) pysh.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())
def testGlobalVar(self): pysh.run('echo $__name__ > out.txt', globals(), locals()) self.assertEquals('__main__\n', file('out.txt').read())