summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake/Syntax
Commit message (Collapse)AuthorAgeFilesLines
* EVIS: Add tests for syntax corner cases and CMP0053Ben Boeckel2014-05-08107-1/+692
| | | | | | | | | | Include tests for: - @ expansion during normal execution - various characters in variable names for comparison between the new and the old parser - corner cases in the parsers - correct messages when behavior is different
* tests: Add variable expansion testsBen Boeckel2014-02-2125-0/+130
| | | | | | | | | There are some corner cases in variable expansion which would be nice to capture before going and rewriting the variable expansion code. The majority of these are related to configuring files and strings with '@' in them in conjunction with @ONLY being specified. Another is testing for '(' usage inside of ENV variable references based on whether it is quoted or not.
* Test foreach/function/macro handling of bracket argumentsBrad King2013-10-307-0/+24
| | | | | | | Bracket arguments recorded in command invocations inside foreach, function, and macro blocks should not have any replacements done when the arguments are replayed later. Teach the RunCMake.Syntax test to cover these cases.
* Add to RunCMake.Syntax test \-escape casesBrad King2013-10-293-0/+7
| | | | | | Add an Escape1 test case covering \-escape cases inside bracket, quoted, and unquoted arguments. Also cover comments immediately after quoted and unquoted arguments on lines containing \# escapes.
* Add to RunCMake.Syntax test comments not separated by spacesBrad King2013-10-291-0/+5
| | | | | Extend the BracketComment5 test case to cover both bracket comments and line comments starting immediately after a bracket comment closes.
* Add \-continuation to CMake language quoted argumentsBrad King2013-10-2310-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | Teach the CMake language lexer to treat the \-LF pair terminating a line ending in an odd number of backslashes inside a quoted argument as a continuation. Drop the pair from the returned quoted argument token text. This will allow long lines inside quoted argument strings to be divided across multiple lines in the source file. It will also allow quoted argument text to start on the line after the opening quote. For example, the code: set(x "\ ...") sets variable "x" to the value "..." with no opening newline. Previously an odd number of backslashes at the end of a line inside a quoted argument would put a \-LF pair (or a \-CR pair) literally in the argument. Then the command-argument evaluator would complain that the \-escape sequence is invalid. Therefore this syntax is available to use without changing behavior of valid existing code. Teach the RunCMake.Syntax test to cover cases of quoted arguments with lines ending in \, \\, and \\\. Odd counts are continuations.
* Add Lua-style long brackets and long comments to CMake languageBrad King2013-10-1769-39/+219
| | | | | | | | | | | | | | | | | Teach the CMake language parser to recognize Lua-style "long bracket" arguments. These start with two '[' separated by zero or more '=' characters e.g. "[[" or "[=[" or "[==[". They end with two ']' separated by the same number of '=' as the opening bracket. There is no nesting of brackets of the same level (number of '='). No escapes, variable expansion, or other processing is performed on the content between such brackets so they always represent exactly one argument. Also teach CMake to parse and ignore "long comment" syntax. A long comment starts with "#" immediately followed by an opening long bracket. It ends at the matching close long bracket. Teach the RunCMake.Syntax test to cover long bracket and long comment cases.
* cmListFileLexer: Convert CRLF -> LF newlines explicitlyBrad King2013-10-174-0/+9
| | | | | | | | | | | Read input files in binary mode instead of text mode and convert CRLF newlines to LF newlines explicitly in our own buffer. This is necessary to read CMake source files with CRLF newlines on platforms whose C runtime libraries do not transform newlines in text mode. For example, a Cygwin or Linux binary may not transform CRLF -> LF in files read from a Windows filesystem. Perform the conversion ourselves to ensure that multi-line string literals in CMake source files have LF newlines everywhere.
* cmListFileLexer: Allow a leading UTF-8 Byte-Order-Mark (#11137)Brad King2013-10-1715-0/+35
| | | | | | Teach the lexer to read a UTF-8, UTF-16 BE/LE, or UTF-32 BE/LE Byte-Order-Mark from the start of a file if any is present. Report an error on files using UTF-16 or UTF-32 and accept a UTF-8 or missing BOM.
* cmListFileLexer: Allow command names with one letter (#14181)Brad King2013-10-173-0/+9
| | | | | | | | | Teach the lexer to treat a single letter as an identifier instead of an unquoted argument. Outside of a command invocation, the parser treats an identifier as a command name and an unquoted argument as an error. Inside of a command invocation, the parser treats an identifier as an unquoted argument. Therefore this change to the lexer will make what was previously an error case work with no other behavioral change.
* Do not warn about left paren not separated by a spaceBrad King2013-08-154-0/+6
| | | | | | | | | | Since commit 58e52416 (Warn about arguments not separated by whitespace, 2013-02-16) we warn about arguments not separated by spaces. Loosen the warning to not complain about left parens not separated by spaces from the preceding token. This is common in code like "if(NOT(X))". Teach the RunCMake.Syntax test to cover cases of left parens not separated by spaces and check that no warning appears.
* Warn about unquoted arguments that look like long bracketsBrad King2013-08-084-0/+38
| | | | | | | | | In the future CMake will introduce Lua-style long bracket syntax. Warn about unquoted arguments that in the future will be treated as opening long brackets. Teach the RunCMake.Syntax test to cover such cases and ensure that the warning appears.
* Warn about arguments not separated by whitespaceBrad King2013-08-081-1/+17
| | | | | | | | | | | Teach the lexer to return tokens for whitespace. Teach the parser to tolerate the space tokens where whitespace is allowed. Also teach the parser to diagnose and warn about cases of quoted arguments followed immediately by another argument. This was accidentally allowed previously, so we only warn. Update the RunCMake.Syntax test case StringNoSpace expected stderr to include the warnings.
* Add RunCMake.Syntax test cases for command invocation stylesBrad King2013-08-0816-0/+74
| | | | | Cover commands with whitespace present in allowed combinations. Also cover command error cases such as two on one line.
* cmListFileLexer: Fix line number after backslash in stringBrad King2013-08-084-0/+12
| | | | | | If a line inside a string ends in a backslash count the following newline character as a line increment. Add a test covering this case to verify that subsequent line numbers are correct.
* Add RunCMake.Syntax test to cover argument parsingBrad King2013-08-0818-0/+52
Test basic unquoted and quoted argument parsing cases including failure on an unterminated string and an unterminated command invocation. Also cover arguments not separated by any spaces, which is accidentally allowed by the current parser.