42 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
# -*- coding: utf-8 -*-
 | 
						|
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 | 
						|
# See https://llvm.org/LICENSE.txt for license information.
 | 
						|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 | 
						|
 | 
						|
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\\"')
 |