diff --git a/Lib/pipes.py b/Lib/pipes.py index 295d9c88b66..6dcc997b4c7 100644 --- a/Lib/pipes.py +++ b/Lib/pipes.py @@ -60,7 +60,6 @@ For an example, see the function test() at the end of the file. import re - import os import tempfile import string @@ -281,18 +280,3 @@ def quote(file): c = '\\' + c res = res + c return '"' + res + '"' - - -# Small test program and example - -def test(): - print 'Testing...' - t = Template() - t.append('togif $IN $OUT', 'ff') - t.append('giftoppm', '--') - t.append('ppmtogif >$OUT', '-f') - t.append('fromgif $IN $OUT', 'ff') - t.debug(1) - FILE = '/usr/local/images/rgb/rogues/guido.rgb' - t.copy(FILE, '@temp') - print 'Done.' diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index a20ba15fdf7..99803ff3c22 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -830,6 +830,7 @@ _expectations = { test_mhlib test_openpty test_ossaudiodev + test_pipes test_poll test_posix test_pty diff --git a/Lib/test/test_pipes.py b/Lib/test/test_pipes.py new file mode 100644 index 00000000000..70d1ec2b946 --- /dev/null +++ b/Lib/test/test_pipes.py @@ -0,0 +1,184 @@ +import pipes +import os +import string +import unittest +from test.test_support import TESTFN, run_unittest, unlink + +TESTFN2 = TESTFN + "2" + +class SimplePipeTests(unittest.TestCase): + def tearDown(self): + for f in (TESTFN, TESTFN2): + unlink(f) + + def testSimplePipe1(self): + t = pipes.Template() + t.append('tr a-z A-Z', pipes.STDIN_STDOUT) + f = t.open(TESTFN, 'w') + f.write('hello world #1') + f.close() + self.assertEqual(open(TESTFN).read(), 'HELLO WORLD #1') + + def testSimplePipe2(self): + file(TESTFN, 'w').write('hello world #2') + t = pipes.Template() + t.append('tr a-z A-Z < $IN > $OUT', pipes.FILEIN_FILEOUT) + t.copy(TESTFN, TESTFN2) + self.assertEqual(open(TESTFN2).read(), 'HELLO WORLD #2') + + def testSimplePipe3(self): + file(TESTFN, 'w').write('hello world #2') + t = pipes.Template() + t.append('tr a-z A-Z < $IN', pipes.FILEIN_STDOUT) + self.assertEqual(t.open(TESTFN, 'r').read(), 'HELLO WORLD #2') + + def testEmptyPipeline1(self): + # copy through empty pipe + d = 'empty pipeline test COPY' + file(TESTFN, 'w').write(d) + file(TESTFN2, 'w').write('') + t=pipes.Template() + t.copy(TESTFN, TESTFN2) + self.assertEqual(open(TESTFN2).read(), d) + + def testEmptyPipeline2(self): + # read through empty pipe + d = 'empty pipeline test READ' + file(TESTFN, 'w').write(d) + t=pipes.Template() + self.assertEqual(t.open(TESTFN, 'r').read(), d) + + def testEmptyPipeline3(self): + # write through empty pipe + d = 'empty pipeline test WRITE' + t = pipes.Template() + t.open(TESTFN, 'w').write(d) + self.assertEqual(open(TESTFN).read(), d) + + def testQuoting(self): + safeunquoted = string.ascii_letters + string.digits + '!@%_-+=:,./' + unsafe = '"`$\\' + + self.assertEqual(pipes.quote(safeunquoted), safeunquoted) + self.assertEqual(pipes.quote('test file name'), "'test file name'") + for u in unsafe: + self.assertEqual(pipes.quote('test%sname' % u), + "'test%sname'" % u) + for u in unsafe: + self.assertEqual(pipes.quote("test%s'name'" % u), + '"test\\%s\'name\'"' % u) + + def testRepr(self): + t = pipes.Template() + self.assertEqual(repr(t), "