Skip to content
  • Stefan Floeren's avatar
    GoogleTestAddTests: Fix output processing · 839a1010
    Stefan Floeren authored
    The function gtest_discover_tests calls the passed test executable with
    the parameter --gtest_list_tests and parses the output to find all
    tests.
    
    In case of value-parameterized tests ([1]), the test values are included
    in the output. While test names are alphanumeric, the values can contain
    arbitrary content.
    
    First, the output is separated into lines with `foreach`. Included
    semi-colons breaks this and need to get escaped.
    
    Afterwards, the testname is passed on to the `add_command` helper. This
    helper was converted into a macro in commit dac20144 (GoogleTest:
    Optimize gtest_discover_tests, 2020-02-18). As a macro, its arguments
    are re-evaluated. Therefore we need to escape `\`, `;` and to prevent
    unwanted variable expansion `$`.
    
    Fixes: #20661
    
    [1] <https://github.com/google/googletest/blob/0eea2e9/googletest/docs/advanced.md#value-parameterized-tests>
    839a1010