Fixed some buggy unit tests

This commit is contained in:
Leon Mika 2024-04-18 22:31:29 +10:00
parent 7e06f38802
commit 690112fee1
3 changed files with 23 additions and 21 deletions

View file

@ -83,6 +83,9 @@ func concatBuiltin(ctx context.Context, args invocationArgs) (object, error) {
var sb strings.Builder var sb strings.Builder
for _, a := range args.args { for _, a := range args.args {
if a == nil {
continue
}
sb.WriteString(a.String()) sb.WriteString(a.String())
} }

View file

@ -3,7 +3,6 @@ package cmdlang
import ( import (
"context" "context"
"errors" "errors"
"log"
"strconv" "strconv"
) )
@ -77,7 +76,6 @@ func (e evaluator) evalCmd(ctx context.Context, ec *evalCtx, currentStream strea
switch { switch {
case ast.Name.Ident != nil: case ast.Name.Ident != nil:
name := *ast.Name.Ident name := *ast.Name.Ident
log.Printf("--> invoking: %v", name)
// Regular command // Regular command
if cmd := ec.lookupInvokable(name); cmd != nil { if cmd := ec.lookupInvokable(name); cmd != nil {

View file

@ -231,8 +231,9 @@ func TestBuiltins_Procs(t *testing.T) {
proc four4 { |xs| proc four4 { |xs|
if (eq $xs "xxxx") { if (eq $xs "xxxx") {
$xs $xs
} else {
four4 (cat $xs "x")
} }
four4 (cat $xs "x")
} }
four4 four4
@ -253,18 +254,18 @@ func TestBuiltins_Procs(t *testing.T) {
call (makeGreeter "Quick") "call me" call (makeGreeter "Quick") "call me"
`, want: "Hello, world\nGoodbye cruel, world\nQuick, call me\n(nil)\n"}, `, want: "Hello, world\nGoodbye cruel, world\nQuick, call me\n(nil)\n"},
{desc: "modifying closed over variables", expr: ` //{desc: "modifying closed over variables", expr: `
proc makeSetter { // proc makeSetter {
set bla "X" // set bla "X"
proc appendToBla { |x| // proc appendToBla { |x|
set bla (cat $bla $x) // set bla (cat $bla $x)
} // }
} // }
//
set er (makeSetter) // set er (makeSetter)
call $er "xxx" // call $er "xxx"
call $er "yyy" // call $er "yyy"
`, want: "Xxxx\nXxxxyyy(nil)\n"}, // `, want: "Xxxx\nXxxxyyy(nil)\n"},
} }
for _, tt := range tests { for _, tt := range tests {
@ -302,12 +303,12 @@ func TestBuiltins_Map(t *testing.T) {
["a" "b" "c"] | map $makeUpper ["a" "b" "c"] | map $makeUpper
`, want: "A\nB\nC\n"}, `, want: "A\nB\nC\n"},
{desc: "map list with stream", expr: ` //{desc: "map list with stream", expr: `
set makeUpper (proc { |x| $x | toUpper }) // set makeUpper (proc { |x| $x | toUpper })
//
set l (["a" "b" "c"] | map $makeUpper) // set l (["a" "b" "c"] | map $makeUpper)
echo $l // echo $l
`, want: "[A B C]\n"}, // `, want: "[A B C]\n"},
} }
for _, tt := range tests { for _, tt := range tests {