1 # -*- coding: utf-8 -*- 2 # The LLVM Compiler Infrastructure 3 # 4 # This file is distributed under the University of Illinois Open Source 5 # License. See LICENSE.TXT for details. 6 7 import libscanbuild.shell as sut 8 import unittest 9 10 11 class ShellTest(unittest.TestCase): 12 13 def test_encode_decode_are_same(self): 14 def test(value): 15 self.assertEqual(sut.encode(sut.decode(value)), value) 16 17 test("") 18 test("clang") 19 test("clang this and that") 20 21 def test_decode_encode_are_same(self): 22 def test(value): 23 self.assertEqual(sut.decode(sut.encode(value)), value) 24 25 test([]) 26 test(['clang']) 27 test(['clang', 'this', 'and', 'that']) 28 test(['clang', 'this and', 'that']) 29 test(['clang', "it's me", 'again']) 30 test(['clang', 'some "words" are', 'quoted']) 31 32 def test_encode(self): 33 self.assertEqual(sut.encode(['clang', "it's me", 'again']), 34 'clang "it\'s me" again') 35 self.assertEqual(sut.encode(['clang', "it(s me", 'again)']), 36 'clang "it(s me" "again)"') 37 self.assertEqual(sut.encode(['clang', 'redirect > it']), 38 'clang "redirect > it"') 39 self.assertEqual(sut.encode(['clang', '-DKEY="VALUE"']), 40 'clang -DKEY=\\"VALUE\\"') 41 self.assertEqual(sut.encode(['clang', '-DKEY="value with spaces"']), 42 'clang -DKEY=\\"value with spaces\\"') 43