import libscanbuild.shell as sut
import unittest
class ShellTest(unittest.TestCase):
def test_encode_decode_are_same(self):
def test(value):
self.assertEqual(sut.encode(sut.decode(value)), value)
test("")
test("clang")
test("clang this and that")
def test_decode_encode_are_same(self):
def test(value):
self.assertEqual(sut.decode(sut.encode(value)), value)
test([])
test(['clang'])
test(['clang', 'this', 'and', 'that'])
test(['clang', 'this and', 'that'])
test(['clang', "it's me", 'again'])
test(['clang', 'some "words" are', 'quoted'])
def test_encode(self):
self.assertEqual(sut.encode(['clang', "it's me", 'again']),
'clang "it\'s me" again')
self.assertEqual(sut.encode(['clang', "it(s me", 'again)']),
'clang "it(s me" "again)"')
self.assertEqual(sut.encode(['clang', 'redirect > it']),
'clang "redirect > it"')
self.assertEqual(sut.encode(['clang', '-DKEY="VALUE"']),
'clang -DKEY=\\"VALUE\\"')
self.assertEqual(sut.encode(['clang', '-DKEY="value with spaces"']),
'clang -DKEY=\\"value with spaces\\"')