aboutsummaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)AuthorFilesLines
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
2021-11-26Add $size(string), $size(path), and $size(dir_path) functionsBoris Kolpackov2-0/+18
2021-11-16Disable C++20 modules tests for MinGW GCCBoris Kolpackov1-0/+7
Things appear to be completely broken in GCC 11.x.
2021-11-04Fix testBoris Kolpackov1-1/+1
2021-11-04Add $size() function to get size of sequence (names, strings, etc)Boris Kolpackov3-5/+24
2021-11-02Add $sort() functionBoris Kolpackov3-1/+34
Available overloads: $sort(<names> [, <flags>]) $sort(<ints> [, <flags>]) $sort(<strings> [, <flags>]) $sort(<paths> [, <flags>]) $sort(<dir_paths> [, <flags>]) The following flag is supported by the all overloads: dedup - in addition to sorting also remove duplicates Additionally, the strings overload also support the following flag: icase - sort ignoring case Note that on case-insensitive filesystem the paths and dir_paths overload's order is case-insensitive.
2021-10-13Add --cwd|-t option to env pseudo-builtinKaren Arutyunov2-60/+106
2021-09-28Adapt to libbutl headers extension change from .mxx to .hxxKaren Arutyunov1-4/+4
2021-09-24Fortify tests against NDEBUGKaren Arutyunov4-1/+12
2021-09-14Consistently install prerequisites from any scope by defaultBoris Kolpackov1-0/+1
It is also now possible to adjust this behavior with global config.install.scope override. Valid values for this variable are: project -- only from project strong -- from strong amalgamation weak -- from weak amalgamation global -- from all projects (default)
2021-07-08Also disable GCC -Wstringop-overread in testsBoris Kolpackov1-1/+2
2021-06-09Fix cxx pattern rule testBoris Kolpackov1-6/+7
2021-06-08Redo low verbosity diagnostic deduction to use scope instead of targetBoris Kolpackov1-45/+20
2021-06-08Get rid of special *{} wildcard target type notation in target type/patternsBoris Kolpackov1-1/+1
Explicit target{} should be used instead. Also, in this context, absent target type is now treated as file{} rather than target{}, for consistency with all other cases.
2021-06-08Implement ad hoc regex pattern rule supportBoris Kolpackov3-2/+79
An ad hoc pattern rule consists of a pattern that mimics a dependency declaration followed by one or more recipes. For example: exe{~'/(.*)/'}: cxx{~'/\1/'} {{ $cxx.path -o $path($>) $path($<[0]) }} If a pattern matches a dependency declaration of a target, then the recipe is used to perform the corresponding operation on this target. For example, the following dependency declaration matches the above pattern which means the rule's recipe will be used to update this target: exe{hello}: cxx{hello} While the following declarations do not match the above pattern: exe{hello}: c{hello} # Type mismatch. exe{hello}: cxx{howdy} # Name mismatch. On the left hand side of `:` in the pattern we can have a single target or an ad hoc target group. The single target or the first (primary) ad hoc group member must be a regex pattern (~). The rest of the ad hoc group members can be patterns or substitutions (^). For example: <exe{~'/(.*)/'} file{^'/\1.map/'}>: cxx{~'/\1/'} {{ $cxx.path -o $path($>[0]) "-Wl,-Map=$path($>[1])" $path($<[0]) }} On the left hand side of `:` in the pattern we have prerequisites which can be patterns, substitutions, or non-patterns. For example: <exe{~'/(.*)/'} file{^'/\1.map/'}>: cxx{~'/\1/'} hxx{^'/\1/'} hxx{common} {{ $cxx.path -o $path($>[0]) "-Wl,-Map=$path($>[1])" $path($<[0]) }} Substitutions on the left hand side of `:` and substitutions and non-patterns on the right hand side are added to the dependency declaration. For example, given the above rule and dependency declaration, the effective dependency is going to be: <exe{hello} file{hello.map>: cxx{hello} hxx{hello} hxx{common}
2021-06-08Only pass target to recipe_text() if recipe is not sharedBoris Kolpackov1-20/+45
2021-05-28Add support for regex-based target type/pattern specific variablesBoris Kolpackov1-0/+127
This is in addition to the already supported path-based target type/pattern specific variables. For example: hxx{*}: x = y # path-based hxx{~/.*/}: x = y # regex-based
2021-05-28Ban conversion of patterns to valuesBoris Kolpackov3-2/+5
Also improve conversion diagnostic.
2021-04-21Add buildscript depdb builtin 'env' commandKaren Arutyunov1-0/+62
2021-04-20Disable bunch of bogus GCC warningsBoris Kolpackov1-0/+2
2021-03-22Fix tests to work for compressed file cache entriesBoris Kolpackov1-1/+1
2021-03-18Add noop mode to file cache, add --file-cache option to selectBoris Kolpackov1-1/+1
2021-03-16Define intermediate build results file cache interfaceBoris Kolpackov1-1/+3
2021-02-11Improve module name to file name matching logicBoris Kolpackov1-0/+3
2021-02-11Update header unit testsBoris Kolpackov1-4/+4
2021-01-12Diagnose typed and project-qualified empty namesBoris Kolpackov1-1/+0
2020-12-14Make use of export testscript builtinKaren Arutyunov1-5/+7
2020-12-14Make export script builtin tests more robustKaren Arutyunov1-0/+5
2020-12-11Add export script pseudo-builtinKaren Arutyunov3-4/+170
2020-12-11Copy parent scope's test program list in runner's entry() function rather ↵Karen Arutyunov1-3/+29
than in scope's constructor
2020-12-11Fix set pseudo-builtin to reset special variables when requiredKaren Arutyunov1-0/+9
2020-12-11Prefix pseudo-builtin diagnostincs messages with their namesKaren Arutyunov3-12/+12
2020-12-08Redo $normalize(true) as separate $actualize()Karen Arutyunov1-9/+12
2020-12-08Add support for config.test.runnerKaren Arutyunov3-2/+107
2020-12-08Fix buildscript assertion failure on redirecting command stderr to stdoutKaren Arutyunov1-0/+23
2020-12-02Add support for buildscript depdb preambleKaren Arutyunov2-19/+304
2020-11-30Start adapting module mapper to latest GCC protocolBoris Kolpackov2-0/+10
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).