# -*- coding: utf-8 -*- # The LLVM Compiler Infrastructure # # This file is distributed under the University of Illinois Open Source # License. See LICENSE.TXT for details. 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\\"')