# -*- coding: iso-8859-1 -*-
from test
import test_support
from cStringIO
import StringIO
from StringIO
import StringIO
# The original test data set was from shellwords, by Hartmut Goebel.
foo bar bla fasel|foo|bar|bla|fasel|
foo "bar" bla|foo|"bar"|bla|
"foo" "bar" "bla"|"foo"|"bar"|"bla"|
"foo" bar "bla"|"foo"|bar|"bla"|
"foo" bar bla|"foo"|bar|bla|
foo 'bar' bla|foo|'bar'|bla|
'foo' 'bar' 'bla'|'foo'|'bar'|'bla'|
'foo' bar 'bla'|'foo'|bar|'bla'|
'foo' bar bla|'foo'|bar|bla|
blurb foo"bar"bar"fasel" baz|blurb|foo"bar"bar"fasel"|baz|
blurb foo'bar'bar'fasel' baz|blurb|foo'bar'bar'fasel'|baz|
foo "" "" "" bar|foo|""|""|""|bar|
foo '' '' '' bar|foo|''|''|''|bar|
"foo
\\ bar
\"|
"foo\\ bar\"|
"foo
\\" bar\""|
"foo\\"|bar|\|
""|
"foo\\ bar\" dfadf"|
"foo\\ bar\"|dfadf"|
"foo\\\ bar\" dfadf"|
"foo\\\ bar\"|dfadf"|
"foo\\\x bar\" dfadf"|
"foo\\\x bar\"|dfadf"|
"foo\x bar\" dfadf"|
"foo\x bar\"|dfadf"|
"foo\\\x bar\" df'a\
'df'|
"foo\\\x bar\"|df'a|\|'df'|
foo\ x\x\""|foo|\|x|\|x|\|
""|
"foo\ x\x\\"|
"foo\ x\x\\"|
"foo\ x\x\\""foobar"|
"foo\ x\x\\"|
"foobar"|
"foo\ x\x\\"\''"foobar"|"foo\ x\x\\"|\|''|"foobar"|
"foo\ x\x\\"\'"fo'obar
"|"foo\ x\x
\\"|\|'"fo
'|obar"|
"foo\ x\x\\"\'"fo'obar
" 'don'\''t'|"foo\ x\x
\\"|\|'"fo
'|obar"|'don
'|\|''|t'|
foo bar bla fasel|foo|bar|bla|fasel|
foo
"bar" bla|foo|bar|bla|
"foo" "bar" "bla"|foo|bar|bla|
"foo" bar
"bla"|foo|bar|bla|
"foo" bar bla|foo|bar|bla|
foo
'bar' bla|foo|bar|bla|
'foo' 'bar' 'bla'|foo|bar|bla|
'foo' bar
'bla'|foo|bar|bla|
'foo' bar bla|foo|bar|bla|
blurb foo
"bar"bar
"fasel" baz|blurb|foobarbarfasel|baz|
blurb foo
'bar'bar
'fasel' baz|blurb|foobarbarfasel|baz|
foo
"" "" "" bar|foo||||bar|
foo
'' '' '' bar|foo||||bar|
"foo\\ bar\" dfadf"|foo\ bar
" dfadf|
"foo
\\\ bar
\" dfadf
"|foo\\ bar" dfadf|
"foo\\\x bar\" dfadf"|foo
\\x bar
" dfadf|
"foo\x bar
\" dfadf
"|foo\x bar" dfadf|
"foo\\\x bar\" df'a\
'df"|foo\\x bar" df'a\
'df|
"foo\ x\x\\""foobar"|foo\ x\x\foobar|
"foo\ x\x\\"\'"foobar"|foo\ x\x\'foobar|
"foo\ x\x\\"\'"fo'obar
"|foo\ x\x\'fo'obar|
"foo\ x\x
\\"\'"fo
'obar" 'don
'\''t
'|foo\ x\x\'fo'obar|don
't|
"foo\ x\x\\"\'"fo'obar
" 'don'\''t' \\|foo\ x\x\'fo'obar|don't|\|
class ShlexTest(unittest.TestCase):
self.data = [x.split("|
")[:-1]
for x in data.splitlines()]
self.posix_data = [x.split("|
")[:-1]
for x in posix_data.splitlines()]
item[0] = item[0].replace(r"\n", "\n")
for item in self.posix_data:
item[0] = item[0].replace(r"\n", "\n")
def splitTest(self, data, comments):
for i in range(len(data)):
l = shlex.split(data[i][0], comments=comments)
self.assertEqual(l, data[i][1:],
(data[i][0], l, data[i][1:]))
lex = shlex.shlex(StringIO(s))
def testSplitPosix(self):
"""Test data splitting with posix parser"""
self.splitTest(self.posix_data, comments=True)
"""Test compatibility interface"""
for i in range(len(self.data)):
l = self.oldSplit(self.data[i][0])
self.assertEqual(l, self.data[i][1:],
(self.data[i][0], l, self.data[i][1:]))
# Allow this test to be used with old shlex.py
if not getattr(shlex, "split
", None):
for methname in dir(ShlexTest):
if methname.startswith("test
") and methname != "testCompat
":
delattr(ShlexTest, methname)
test_support.run_unittest(ShlexTest)
if __name__ == "__main__
":