# file : tests/function/builtin/testscript # copyright : Copyright (c) 2014-2018 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file .include ../../common.testscript : type : { $* <'print $type([string])' >'string' : empty-typed $* <'print $type("")' >'' : empty-untyped $* <'print $type([string null])' >'string' : null-typed $* <'print $type([null])' >'' : null-untyped $* <'print $type([string] abc)' >'string' : value-typed $* <'print $type(abc)' >'' : value-untyped } : null : { $* <'print $null("")' >'false' : empty $* <'print $null(abc)' >'false' : value $* <'print $null([null])' >'true' : null } : empty : { $* <'true' : empty-untyped x = print $empty($x) EOI $* <'print $empty([string])' >'true' : empty-typed $* <'print $empty(abc)' >'false' : name $* <'print $empty(abc cxx{foo})' >'false' : names $* <'print $empty([bool] false)' >'false' : bool } : identity : { $* <'print $identity([string])' >''; $* <'print $type($identity([string]))' >'string' : empty-typed $* <'print $identity("")' >'{}'; $* <'print $type($identity(""))' >'' : empty-untyped $* <'print $identity([string null])' >'[null]'; $* <'print $type($identity([string null]))' >'string' : null-typed $* <'print $identity([null])' >'[null]'; $* <'print $type($identity([null]))' >'' : null-untyped $* <'print $identity([string] abc)' >'abc'; $* <'print $type($identity([string] abc))' >'string' : typed $* <'print $identity(abc)' >'abc'; $* <'print $type($identity(abc))' >'' : untyped } : getenv : { : set : : Here we rely on the facts that on POSIX PATH environment variable most : likely is set at the time of login, and on Windows it is set by build2 on : startup. : : @@ Use a custom variable, when an ability to set environment variables in : testscript is implemented. : { : string : $* <'print $getenv([string] "PATH")' | set v; ($v != '[null]') || exit "PATH environment variable is not set" : untyped : $* <'print $getenv("PATH")' | set v; ($v != '[null]') || exit "PATH environment variable is not set" : path : $* <'print $getenv([path] a)' >'[null]' : none : $* <'print $getenv()' 2>>~/EOE/ != 0 :1:8: error: unmatched call to getenv() /(( info: candidate: getenv(), qualified name builtin.getenv info: candidate: getenv(string), qualified name builtin.getenv /)|( info: candidate: getenv(string), qualified name builtin.getenv info: candidate: getenv(), qualified name builtin.getenv /)) EOE : names : $* <'print $getenv(a b)' 2>>EOE != 0 error: invalid argument: invalid string value: multiple names EOE } : unset : $* <'print $getenv("non-existent-var-name")' >'[null]' }