43 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
# -*- 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\\"')
 |