aboutsummaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)AuthorFilesLines
2016-11-04Support paths cleanup when test scope is leftKaren Arutyunov1-0/+4
2016-11-04Fix printing no-newline here-doc and here-strKaren Arutyunov2-19/+54
2016-11-04Add support for setup/teardown commandsBoris Kolpackov4-1/+39
2016-11-04Rename tests/test/script/ to tests/test/script/runner/Boris Kolpackov4-4/+11
2016-11-04Change <! and >! syntaxt to <- and >-Karen Arutyunov1-2/+2
2016-11-04Add couple of testscript testsBoris Kolpackov1-12/+16
2016-11-04Add support for no-newline redirects in testscriptBoris Kolpackov1-0/+26
The no-newline operators are '<:', '>:', '<<:', and '>>:'.
2016-11-04Implement concurrent_runnerBoris Kolpackov5-1/+133
2016-11-04When assigning always ignore existing value typeBoris Kolpackov2-0/+5
For example: x = [uint64] 1 x = a # Ok.
2016-11-04Cosmetic changeBoris Kolpackov1-1/+1
2016-09-15Add io_error alias for std::ios_base::failureKaren Arutyunov1-1/+1
2016-08-30Add support for using '*' as target type in variable assignmentBoris Kolpackov1-0/+6
So these three are equivalent: *: foo = 1 {*}: foo = 2 *{*}: foo = 3
2016-08-26Add pkg-config support for import installedBoris Kolpackov1-1/+3
Redesign library importing/exporting while at it.
2016-08-23Update install.* variables in buildfilesBoris Kolpackov2-2/+2
2016-08-05Implement out-qualified target syntax for setting target-specific varsBoris Kolpackov5-0/+11
So now we can do: doc{INSTALL}@./: install = false Note that so far that's the only place where we support out-qualification. Grep for @@ OUT to see other places.
2016-07-28Adjust to new path implementation, use to support reversibilityBoris Kolpackov6-1/+80
2016-07-22Change default var override from 'projects and subprojects' to amalgamationBoris Kolpackov2-0/+11
The 'projects and subprojects' semantics resulted in some counter-intuitive behavior. For example, in a project with tests/ as a subproject if one builds one of the tests directly with a non-global override (say C++ compiler), then the main project would be built without the overrides. I this light, overriding in the whole amalgamation seems like the right thing to do. The old behavior can still be obtained with scope qualification, for example: b ./:foo=bar
2016-07-21Add support for single line if-blocksBoris Kolpackov2-2/+27
So now we can do: if true print true else print false Instead having to do: if true { print true } else { print false }
2016-07-20Implement support for <, >, <=, >= in eval contextBoris Kolpackov4-0/+25
Now can write: if ($build.version > 30000)
2016-07-16Add support for prepend/append in target type/pattern-specific varsBoris Kolpackov4-0/+70
Semantically, these are similar to variable overrides and are essentially treated as "templates" that are applied on lookup to the "stem" value that is specific to the target type/name. For example: x = [string] a file{f*}: x =+ b sub/: { file{*}: x += c print $(file{foo}:x) # abc print $(file{bar}:x) # ac }
2016-07-12Use ./ instead of just . to denote current directory in buildfilesBoris Kolpackov9-10/+10
2016-06-18Port to MinGWKaren Arutyunov17-20/+75
2016-04-22Fix testBoris Kolpackov2-2/+2
2016-04-21Fix legacy stuff in testsBoris Kolpackov13-39/+12
2016-04-21Implement short-circuiting to group stateBoris Kolpackov1-3/+3
This is necessary to get rid of bogus restarts in inject_prerequisites() where it think a group member was updated since its state changed from unknown to (group's) changed.
2016-04-18Add support for using value attributes in eval contextBoris Kolpackov4-3/+28
For example: if ($x == [null]) Or: if ([uint64] 01 == [uint64] 1)
2016-04-12Add support for scope-qualification of overrides, scope visibilityBoris Kolpackov1-2/+42
2016-04-06Test and fix override logicBoris Kolpackov7-0/+366
2016-04-05Add support for scope/target-qualified variable expansionBoris Kolpackov3-0/+42
For example: print $(dir/:var) print $(file{target}:var) print $(dir/file{target}:var) Note that if the scope/target does not (yet) exists, it will be created.
2016-04-04Implement value typing, null support via value attributesBoris Kolpackov5-4/+104
For example: v = [null] v = [string] abc v += ABC # abcABC
2016-04-02Implement variable typing (via attributes)Boris Kolpackov3-0/+26
Now we can do: [string] str = foo
2016-04-02Add attribute syntax infrastructureBoris Kolpackov10-10/+31
2016-03-31Set part of variable override implementationBoris Kolpackov2-2/+2
2016-03-28Add support for pair representation reversibilityBoris Kolpackov2-0/+16
2016-03-28Adjust tests/quote now that we support escaping in double-quoted stringsBoris Kolpackov2-0/+5
2016-03-28Change pairs semantics from separated to unseparatedBoris Kolpackov3-0/+70
Before we use to recognize 'x @ y' as a pair. Now it has to be written unseparated, as 'x@y'. See tests/pairs for details on the new semantics.
2016-02-29Implement auxiliary dependency database (.d files), use in cxx.compileBoris Kolpackov2-0/+174
This is part of the "High Fidelity Build" work.
2016-01-24Fix bug in dynamically derived target typesBoris Kolpackov1-1/+1
2016-01-21Add support for ==, != in eval contextBoris Kolpackov4-0/+66
2016-01-09Update copyright yearBoris Kolpackov5-5/+5
2015-12-14Add support for variable prepend operator: =+Boris Kolpackov3-0/+21
2015-12-07Add support for specifying minimum required build2 versionBoris Kolpackov1-0/+31
The syntax is: using build@0.1.0-a1 The idea is that we will later also use it for modules and 'build' is a special, the "build system itself" module. Also fix a problem with peeking and lexer mode switching.
2015-12-03Implement new potential directive keyword testBoris Kolpackov5-9/+25
Now we can use directive names as variables and targets type, for example: print = foo # variable print{foo}: # target
2015-12-03Implement if-else conditionsBoris Kolpackov3-0/+126
if if! elif elif! else The expression should evaluate to true of false. The if! and elif! versions are provided as shortcuts to writing if (!...). See tests/if-else for examples.
2015-12-02Implement optional module loadingBoris Kolpackov1-0/+5
The syntax is: using? cli Now each module use results in two bool variables: <module>.loaded and <module>.configured. Also implement variable visibility (the above two variables are limited to project).
2015-12-01Reimplement define as dynamic derivation rather than aliasBoris Kolpackov2-12/+26
New syntax: define cli: file The rationale is we need to be able to assign the file extension (using type/pattern-specific variables). And if it is an alias, we will assign it to the original target type. Note that we could still support aliases if we need to. Will need to bring back the id member in target_type that would normally point to itself but for an alias would point to the origin.
2015-12-01Implement support for definition target type aliasesBoris Kolpackov1-0/+16
For example: define cli=file Currently, the semantics is that of a real alias with only name differences that are used for display. See tests/define/buildfile for more use cases.
2015-11-30Implement target type/pattern-specific variablesBoris Kolpackov1-0/+33
For example: cxx{*-options}: dist = true 1. Only single '*' wildcard is supported, matches 0 or more characters. 2. If target type is not specified, it defaults to any target. 3. Appending (+=) is not allowed. 4. The value is expanded immediately in the context of the scope. 5. The more specific pattern (i.e., with the shortest "stem") is preferred. If the stem has the same length, then the last defined (but not redefined) pattern is used. This will probably have to change to become an error. See tests/variable/type-pattern for more examples.
2015-11-28Add support for name crosses, for example {hxx ixx cxx}{foo bar}Boris Kolpackov3-0/+94
See tests/names for more examples.
2015-09-11Add support for unnamed projectsBoris Kolpackov6-0/+15
Sometimes (e.g., in bpkg configuration) we don't have a project name. In fact, it is not really a project; it can never be referenced in an import directive. So we now have a notion of an unnamed project. Such a project should still have the 'project' variable set first thing in bootstrap.build but its value should be empty. Note that we can still amalgamate such projects just liked named ones.