aboutsummaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)AuthorFilesLines
2023-05-30Add $path.posix_string() and $path.posix_representation() functionsKaren Arutyunov1-0/+72
2023-01-09Fix simple and script tests to correctly terminate processes which don't ↵Karen Arutyunov1-1/+4
close stderr on exit
2022-12-15Add $regex.filter[_out]_{match,search}() functionsKaren Arutyunov1-0/+116
2022-12-15Improve escape sequence supportBoris Kolpackov1-0/+17
Specifically: 1. In the double-quoted strings we now only do effective escaping of the special `$("\` characters plus `)` for symmetry. 2. There is now support for "escape sequence expansion" in the form $\X where \X can be any of the C/C++ simple escape sequences (\n, \t, etc) plus \0 (which in C/C++ is an octal escape sequence). For example: info "foo$\n$\tbar$\n$\tbaz" Will print: buildfile:1:1: info: foo bar baz
2022-12-14Improve empty simple value to empty list of names reduction heuristicsBoris Kolpackov1-0/+55
Specifically, do not reduce typed RHS empty simple values for prepend/append and additionally for assignment provided LHS is typed and is a container.
2022-12-14Handle NULL values in $string() and $concat() functionsBoris Kolpackov1-0/+42
This is relied upon by the parser to provide conversion/concatenation semantics consistent with untyped values. Note that we handle NULL values only for types that have empty representation.
2022-12-02Fail if scope or target qualification in variable expansion is unknownBoris Kolpackov2-0/+21
There are three options here: we can "fall through" to an outer scope (there is always the global scope backstop; this is the old semantics, sort of), we can return NULL straight away, or we can fail. It feels like in most cases unknown scope or target is a mistake and doing anything other than failing is just making things harder to debug.
2022-11-25Use operation name as a buildscript name if unable to deduceKaren Arutyunov1-12/+36
2022-11-18Fix test failure on WindowsBoris Kolpackov1-1/+1
2022-11-18Complete low verbosity diagnostics reworkBoris Kolpackov2-51/+51
2022-11-16Initial low verbosity diagnostics reworkBoris Kolpackov2-2/+2
2022-11-14Add buffering for simple test diagnosticsdiag-bufferKaren Arutyunov2-13/+144
Also fix simple test redirecting diff's stdout to stderr.
2022-11-09Use diag_buffer in scriptKaren Arutyunov7-31/+53
2022-11-08Make process exit diagnostics consistentBoris Kolpackov1-1/+2
In particular, we now always print error message on non-0 exit except in cases where such exit is ignored.
2022-10-25Allow concatenation of path/dir_path type to be a path patternKaren Arutyunov2-1/+30
2022-10-21Add support for pairs in script 'for x:...' loopKaren Arutyunov1-0/+34
2022-10-21Change attribute syntax in script to come after variable in set and for (set ↵Karen Arutyunov3-41/+99
x [...], for x [...])
2022-10-20Add support for for-loop element typeKaren Arutyunov1-0/+14
2022-10-18Fix unexpected 'unterminated double-quoted sequence' script errorKaren Arutyunov2-0/+65
2022-10-18Invent diag preamble for buildscriptKaren Arutyunov2-1/+23
2022-10-14Make -w|--whitespace to be default for for-loopKaren Arutyunov1-6/+17
2022-10-14Fix printing test id multiple times on test failureKaren Arutyunov1-0/+26
2022-10-13Fix script 'for' loop testsKaren Arutyunov2-3/+3
2022-10-13Add support for 'for' loop second (... | for x) and third (for x <...) forms ↵Karen Arutyunov3-14/+1249
in script
2022-10-13Add test for public/private variable modelBoris Kolpackov2-0/+50
2022-10-13Switch to public/private variables modelBoris Kolpackov2-40/+40
Now unqualified variables are project-private and can be typified.
2022-09-30Move integer and bool function to separate source/testscript filesBoris Kolpackov3-39/+47
2022-09-29Add $find(<sequence>, <value>), $find_index(<sequence>, <value>) functionsBoris Kolpackov4-2/+60
The $find() function returns true if the sequence contains the specified value. The $find_index() function returns the index of the first element in the sequence that is equal to the specified value or $size(<sequence>) if none is found. For string sequences, it's possible to request case- insensitive comparison with a flag.
2022-09-28Add support for 'for' loop first form (for x:...) in scriptKaren Arutyunov2-0/+164
2022-09-28Add support for 'while' loop in scriptKaren Arutyunov4-20/+62
2022-09-27Fix test for handling of name patterns with trailing dotKaren Arutyunov1-1/+1
2022-09-23Add $is_a(<name>, <target-type>), $filter[_out](<names>, <target-types>) ↵Boris Kolpackov1-0/+36
functions $is_a() returns true if the <name>'s target type is-a <target-type>. Note that this is a dynamic type check that takes into account target type inheritance. $filter[_out]() return names with target types which are-a (filter) or not are-a (filter_out) one of <target-types>. In particular, these functions are useful for filtering prerequisite targets ($<) in ad hoc recipes and rules.
2022-09-22Add $integer_sequence(<begin>, <end>[, <step>]) functionBoris Kolpackov1-0/+8
It returns the list of uint64 integers starting from <begin> (including) to <end> (excluding) with the specified <step> or 1 if unspecified. For example: hdr = foo.hxx bar.hxx baz.hxx src = foo.cxx bar.cxx baz.cxx assert ($size($hdr) == $size($src)) "hdr and src expected to be parallel" for i: $integer_sequence(0, $size($hdr)) { h = ($hdr[$i]) s = ($src[$i]) ... }
2022-09-22Add support for hex notation for uint64 typeBoris Kolpackov1-0/+8
Specifically, now we can do: x = [uint64] 0x0000ffff cxx.poptions += "-DOFFSET=$x" # -DOFFSET=65535 cxx.poptions += "-DOFFSET=$string($x, 16)" # -DOFFSET=0xffff cxx.poptions += "-DOFFSET=$string($x, 16, 8)" # -DOFFSET=0x0000ffff Note that there is no hex notation support for the int64 (signed) type.
2022-09-19Allow computed variables in depdb preamble similar to impure functionsBoris Kolpackov1-5/+27
2022-09-02Add ability to specify `in` rule substitution as key-value pairsBoris Kolpackov1-2/+27
2022-09-02Rename in.substitution variable to in.modeBoris Kolpackov1-1/+1
The original name is still recognized for backwards compatibility.
2022-07-08Fix some tests to match canned command line semanticsKaren Arutyunov4-4/+4
2022-07-07Use new cmdline type for canned command lines in {Build,Test}scriptBoris Kolpackov5-6/+30
2022-06-28Add support for querying out-qualified target-specific variablesBoris Kolpackov2-8/+11
2022-04-19Use target recipe for auxiliary data storage during match-applyBoris Kolpackov1-2/+2
In particular, we now have separate auxiliary data storage for inner and outer operations.
2022-03-23Make project configuration variables non-nullable by defaultBoris Kolpackov1-3/+33
A project configuration variable with the NULL default value is naturally assumed nullable, for example: config [string] config.libhello.fallback_name ?= [null] Otherwise, to make a project configuration nullable we use the `null` variable attribute, for example: config [string, null] config.libhello.fallback_name ?= "World"
2022-02-21Factor process-wide initialization to init_process() functionBoris Kolpackov1-1/+1
2022-02-14Fix module loading in libbuild2 testBoris Kolpackov1-8/+17
2022-02-10Make few global types separately constructible/initializableBoris Kolpackov1-1/+1
2022-01-26Make bash module install into bin/<project>.bash/ to avoid clashesBoris Kolpackov1-2/+2
Also, expect the first component in the import path to be full project name even in case it has the .bash extension.
2022-01-18Add dynamic prerequisites to $< unless --adhoc is specifiedBoris Kolpackov1-57/+152
Also add a few tests for depdb-dyndep.
2021-12-02Fix path function test failure on WindowsBoris Kolpackov1-1/+1
2021-12-02Add $root_directory(<path>) functionBoris Kolpackov1-0/+22
2021-12-02Add $relative(<path>,<dir-path>) functionBoris Kolpackov1-0/+6