aboutsummaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)AuthorFilesLines
2020-11-19Remove target files on ad hoc rule update buildscript errorKaren Arutyunov1-13/+60
2020-11-19Fix set buildscript builtin crash on WindowsKaren Arutyunov1-1/+8
2020-11-17Generalize dot escaping in target name rulesBoris Kolpackov1-20/+223
Now triple dot and escape sequence can appear almost anywhere in the target name (see target::split_name() for details).
2020-11-06Fix mistreating test operation timeout as test timeout in some caseKaren Arutyunov1-4/+8
2020-11-06Add support for test timeoutsKaren Arutyunov9-22/+888
2020-09-28Add $string.trim() functionBoris Kolpackov1-0/+7
2020-08-03Fix buildscript diagnostics so diff output is always in unified formatKaren Arutyunov1-0/+22
Also make sure diff refers program stdout as 'stdout' rather than '-' in the test rule diagnostics.
2020-07-18Add $regex.find_match() and $regex.find_search() functionsKaren Arutyunov1-0/+84
2020-07-16Save original compiler path/mode in {c,cxx}.config.path/modeBoris Kolpackov4-4/+4
It turns out that when propagating {c,cxx}.config in tests we don't want to propagate any options (such as *.std) that have been folded into our project's mode.
2020-07-06Adjust variable block applicability in dependency chainsBoris Kolpackov2-0/+95
Before the block used to apply to the set of prerequisites before the last `:`. This turned out to be counterintuitive and not very useful since prerequisite-specific variables are a lot less common than target specific. And it doesn't fit with ad hoc recipes. The new rule is if the chain ends with `:`, then the block applies to the last set of prerequisites. Otherwise, it applies to the last set of targets. For example: ./: exe{test}: cxx{main} { test = true # Applies to the exe{test} target. } ./: exe{test}: libue{test}: { bin.whole = false # Applies to the libue{test} prerequisite. } This is actually consistent with both non-chain and non-block cases. Consider: exe{test}: cxx{main} { test = true } exe{test}: libue{test}: { bin.whole = false } exe{test}: libue{test}: bin.whole = false The only exception we now have in this overall approach of "if the dependency declaration ends with a colon, then what follows is for a prerequisite" is for the first semicolon: exe{test}: { test = true } exe{test}: test = true But that's probably intuitive enough since there cannot be a prerequisite without a target.
2020-06-24Stop forcing modules support in testsBoris Kolpackov1-15/+0
2020-06-19Adapt mv builtin tests to terminology changeKaren Arutyunov1-1/+1
2020-06-18Add env script pseudo-builtinKaren Arutyunov4-143/+159
Also disable C++ recipe tests when cross-testing.
2020-06-16Add metadata for exe{b}, including whether it is statically-linkedBoris Kolpackov3-1/+11
Use this information to omit ad hoc C++ recipe tests is testing statically- linked build system.
2020-06-12Fix invalid regex in C++ recipe testsBoris Kolpackov1-2/+2
2020-06-11Add tests for ad hoc C++ recipesBoris Kolpackov3-9/+168
2020-06-10Add ad hoc recipe if-else, switch tests (and fix bug)Boris Kolpackov1-0/+149
2020-06-08Add buildscript recipe testsKaren Arutyunov2-0/+100
2020-06-08Cleanup script command failure diagnosticsKaren Arutyunov4-3/+12
2020-06-05Add depdb buildscript builtinKaren Arutyunov1-0/+1
2020-06-05Add ability to specify ad hoc recipe actionsBoris Kolpackov1-38/+70
We are reusing the buildspec syntax for that.
2020-06-04Properly handle diag directive in build script parserKaren Arutyunov1-3/+4
2020-06-03Allow process path values and targets as buildscript program namesKaren Arutyunov1-39/+297
Also deduce the recipe name.
2020-06-03Add versioning for ad hoc C++ recipesBoris Kolpackov1-2/+2
This will allow us to deal with backward-incompatible changes to cxx_rule interface and semantics.
2020-05-27Add support for value subscript after expansionsBoris Kolpackov2-1/+98
Value subscript is only recognized in evaluation contexts (due to ambiguity with wildcard patterns; consider: $x[123].txt) and should be unseparated from the previous token. For example: x = ($y[1]) x = (($f ? $y : $z)[1]) x = ($identity($y)[$z])
2020-05-27Initial support for ad hoc recipes (still work in progress)Boris Kolpackov8-39/+538
2020-05-01Fix outstanding issue with directive vs assignment differentiationBoris Kolpackov1-0/+23
Specifically, now the following does the right thing: print +foo
2020-04-03Skip unmatched lines in $regex.replace_lines() if format_no_copy flag is ↵Karen Arutyunov1-0/+20
specified
2020-03-31Handle duplicate config directives for same variableBoris Kolpackov1-1/+9
2020-03-27Implement project configuration reporting, similar to build system modulesBoris Kolpackov1-0/+64
2020-03-20Initial implementation of config directive for project-specific configurationBoris Kolpackov2-0/+166
2020-03-17Adapt testscripts to ln builtin target path completion fixKaren Arutyunov3-5/+5
2020-03-17Add $defined(<variable>) functionBoris Kolpackov1-2/+17
2020-03-11Optimize testscripts not to search for subprojectsKaren Arutyunov4-0/+5
2020-02-25Disable global module fragment tests for MSVC due to issue 845845Boris Kolpackov1-0/+3
2020-02-21Define __cpp_modules=201810 (merged modules) for MSVC 16.4Boris Kolpackov1-1/+1
2020-02-12Add builtins support for $process.run*() functionsKaren Arutyunov1-16/+128
2020-02-07Drop copyright notice from source codeKaren Arutyunov111-111/+0
2019-11-15Test and document wildcard character escapingBoris Kolpackov1-1/+11
Also document the new bracket expression ([...]) wildcard support.
2019-11-15Generalize attributes to be comma-separated with arbitrary valuesBoris Kolpackov1-3/+3
Before: x = [string null] After: x = [string, null]
2019-11-14Require attributes to be separated from words and similar on RHSBoris Kolpackov1-1/+1
2019-11-14Tighten up attribute recognition during parsingBoris Kolpackov1-6/+11
Now it should be possible to use `[]` for wildcard patterns, for example: foo = foo.[hit]xx Note that a leading bracket expression will still be recognized as attributes and escaping or quoting it will inhibit pattern matching. To resolve this case we need to specify an empty attribute list: foo = [] [abc]-foo.cxx
2019-11-08Add $regex.replace_lines() functionKaren Arutyunov1-0/+82
2019-11-05Fix testsBoris Kolpackov5-4/+24
2019-11-05Disable C++ modules tests for Clang 9Boris Kolpackov1-0/+8
See the following post for details: http://lists.llvm.org/pipermail/cfe-dev/2019-October/063637.html
2019-10-22Rename global_mutex_shards to global_mutexesBoris Kolpackov1-2/+2
2019-10-22Move global mutex shards to contextBoris Kolpackov1-2/+5
2019-10-18Use $quote() for quoting config.cxx option value in testscriptsKaren Arutyunov3-3/+3
2019-10-16Quote config.{c,cxx} paths when passing to testsBoris Kolpackov3-3/+3
Without this Windows directory separators are treated as escapes.
2019-10-14Implement MSVC installation discovery for version 15 (2017) and laterKaren Arutyunov1-1/+1
In particular, this removes the requirement to build from the Visual Studio command prompt. Note that since MSVC compiler binaries are target-specific (i.e., there are no -m32/-m64 options nor something like /MACHINE), in this case we default to a 64-bit build (a 32-bit build can still be achieved by running from a suitable command prompt). Finally, this mechanism is also used to find Clang bundled with MSVC.