media/webrtc/trunk/tools/gyp/test/defines-escaping/gyptest-defines-escaping.py

Wed, 31 Dec 2014 13:27:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 13:27:57 +0100
branch
TOR_BUG_3246
changeset 6
8bccb770b82d
permissions
-rwxr-xr-x

Ignore runtime configuration files generated during quality assurance.

     1 #!/usr/bin/env python
     3 # Copyright (c) 2010 Google Inc. All rights reserved.
     4 # Use of this source code is governed by a BSD-style license that can be
     5 # found in the LICENSE file.
     7 """
     8 Verifies build of an executable with C++ define specified by a gyp define using
     9 various special characters such as quotes, commas, etc.
    10 """
    12 import os
    13 import TestGyp
    15 test = TestGyp.TestGyp()
    17 # Tests string literals, percents, and backslash escapes.
    18 try:
    19   os.environ['GYP_DEFINES'] = (
    20       r"""test_format='\n%s\n' """
    21       r"""test_args='"Simple test of %s with a literal"'""")
    22   test.run_gyp('defines-escaping.gyp')
    23 finally:
    24   del os.environ['GYP_DEFINES']
    26 test.build('defines-escaping.gyp')
    28 expect = """
    29 Simple test of %s with a literal
    30 """
    31 test.run_built_executable('defines_escaping', stdout=expect)
    34 # Test multiple comma-and-space-separated string literals.
    35 try:
    36   os.environ['GYP_DEFINES'] = \
    37       r"""test_format='\n%s and %s\n' test_args='"foo", "bar"'"""
    38   test.run_gyp('defines-escaping.gyp')
    39 finally:
    40   del os.environ['GYP_DEFINES']
    42 test.sleep()
    43 test.touch('defines-escaping.c')
    44 test.build('defines-escaping.gyp')
    46 expect = """
    47 foo and bar
    48 """
    49 test.run_built_executable('defines_escaping', stdout=expect)
    52 # Test string literals containing quotes.
    53 try:
    54   os.environ['GYP_DEFINES'] = (
    55       r"""test_format='\n%s %s %s %s %s\n' """
    56       r"""test_args='"\"These,\"","""
    57                 r""" "\"words,\"","""
    58                 r""" "\"are,\"","""
    59                 r""" "\"in,\"","""
    60                 r""" "\"quotes.\""'""")
    61   test.run_gyp('defines-escaping.gyp')
    62 finally:
    63   del os.environ['GYP_DEFINES']
    65 test.sleep()
    66 test.touch('defines-escaping.c')
    67 test.build('defines-escaping.gyp')
    69 expect = """
    70 "These," "words," "are," "in," "quotes."
    71 """
    72 test.run_built_executable('defines_escaping', stdout=expect)
    75 # Test string literals containing single quotes.
    76 try:
    77   os.environ['GYP_DEFINES'] = (
    78       r"""test_format='\n%s %s %s %s %s\n' """
    79       r"""test_args="\"'These,'\","""
    80                 r""" \"'words,'\","""
    81                 r""" \"'are,'\","""
    82                 r""" \"'in,'\","""
    83                 r""" \"'quotes.'\"" """)
    84   test.run_gyp('defines-escaping.gyp')
    85 finally:
    86   del os.environ['GYP_DEFINES']
    88 test.sleep()
    89 test.touch('defines-escaping.c')
    90 test.build('defines-escaping.gyp')
    92 expect = """
    93 'These,' 'words,' 'are,' 'in,' 'quotes.'
    94 """
    95 test.run_built_executable('defines_escaping', stdout=expect)
    98 # Test string literals containing different numbers of backslashes before quotes
    99 # (to exercise Windows' quoting behaviour).
   100 try:
   101   os.environ['GYP_DEFINES'] = (
   102       r"""test_format='\n%s\n%s\n%s\n' """
   103       r"""test_args='"\\\"1 visible slash\\\"","""
   104                 r""" "\\\\\"2 visible slashes\\\\\"","""
   105                 r""" "\\\\\\\"3 visible slashes\\\\\\\""'""")
   106   test.run_gyp('defines-escaping.gyp')
   107 finally:
   108   del os.environ['GYP_DEFINES']
   110 test.sleep()
   111 test.touch('defines-escaping.c')
   112 test.build('defines-escaping.gyp')
   114 expect = r"""
   115 \"1 visible slash\"
   116 \\"2 visible slashes\\"
   117 \\\"3 visible slashes\\\"
   118 """
   119 test.run_built_executable('defines_escaping', stdout=expect)
   122 # Test that various scary sequences are passed unfettered.
   123 try:
   124   os.environ['GYP_DEFINES'] = (
   125       r"""test_format='\n%s\n' """
   126       r"""test_args='"$foo, &quot; `foo`;"'""")
   127   test.run_gyp('defines-escaping.gyp')
   128 finally:
   129   del os.environ['GYP_DEFINES']
   131 test.sleep()
   132 test.touch('defines-escaping.c')
   133 test.build('defines-escaping.gyp')
   135 expect = """
   136 $foo, &quot; `foo`;
   137 """
   138 test.run_built_executable('defines_escaping', stdout=expect)
   141 # VisualStudio 2010 can't handle passing %PATH%
   142 if not (test.format == 'msvs' and test.uses_msbuild):
   143   try:
   144     os.environ['GYP_DEFINES'] = (
   145         """test_format='%s' """
   146         """test_args='"%PATH%"'""")
   147     test.run_gyp('defines-escaping.gyp')
   148   finally:
   149     del os.environ['GYP_DEFINES']
   151   test.sleep()
   152   test.touch('defines-escaping.c')
   153   test.build('defines-escaping.gyp')
   155   expect = "%PATH%"
   156   test.run_built_executable('defines_escaping', stdout=expect)
   159 # Test commas and semi-colons preceded by backslashes (to exercise Windows'
   160 # quoting behaviour).
   161 try:
   162   os.environ['GYP_DEFINES'] = (
   163       r"""test_format='\n%s\n%s\n' """
   164       r"""test_args='"\\, \\\\;","""
   165                 # Same thing again, but enclosed in visible quotes.
   166                 r""" "\"\\, \\\\;\""'""")
   167   test.run_gyp('defines-escaping.gyp')
   168 finally:
   169   del os.environ['GYP_DEFINES']
   171 test.sleep()
   172 test.touch('defines-escaping.c')
   173 test.build('defines-escaping.gyp')
   175 expect = r"""
   176 \, \\;
   177 "\, \\;"
   178 """
   179 test.run_built_executable('defines_escaping', stdout=expect)
   181 # We deliberately do not test having an odd number of quotes in a string
   182 # literal because that isn't feasible in MSVS.
   184 test.pass_test()

mercurial