From 737dfa7ced6e4f94dbb3d6f2c2837085e783ac09 Mon Sep 17 00:00:00 2001 From: Mihail Stoykov Date: Thu, 17 Feb 2022 14:00:52 +0200 Subject: [PATCH] Prevent panic on not providing second argument to check (#2387) --- js/modules/k6/k6.go | 3 +++ js/modules/k6/k6_test.go | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/js/modules/k6/k6.go b/js/modules/k6/k6.go index 3e94cdb54f9..b5e25d9c891 100644 --- a/js/modules/k6/k6.go +++ b/js/modules/k6/k6.go @@ -158,6 +158,9 @@ func (mi *K6) Check(arg0, checks goja.Value, extras ...goja.Value) (bool, error) if state == nil { return false, ErrCheckInInitContext } + if checks == nil { + return false, errors.New("no checks provided to `check`") + } ctx := mi.vu.Context() rt := mi.vu.Runtime() t := time.Now() diff --git a/js/modules/k6/k6_test.go b/js/modules/k6/k6_test.go index 88b700ecb66..4cc853c8668 100644 --- a/js/modules/k6/k6_test.go +++ b/js/modules/k6/k6_test.go @@ -331,6 +331,16 @@ func TestCheckLiteral(t *testing.T) { assert.Len(t, stats.GetBufferedSamples(samples), 0) } +func TestCheckNull(t *testing.T) { + t.Parallel() + rt, samples, _ := checkTestRuntime(t) + + _, err := rt.RunString(`k6.check(5)`) + require.Error(t, err) + assert.Contains(t, err.Error(), "no checks provided") + assert.Len(t, stats.GetBufferedSamples(samples), 0) +} + func TestCheckThrows(t *testing.T) { t.Parallel() rt, samples, builtinMetrics := checkTestRuntime(t)