diff --git a/CHANGES b/CHANGES index c8933f2aad..7f4c9cc1a4 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,27 @@ +5.1.0-dev.326 | 2022-08-03 09:56:37 -0700 + + * updates for gen-C++ maintenance, including skipping some inappropriate tests (Vern Paxson, Corelight) + + * fix for profiling "when" statements (Vern Paxson, Corelight) + + * gen-C++ support for vector bit-shift operations (Vern Paxson, Corelight) + + * corrected wording in some btest comments (Vern Paxson, Corelight) + + * make gen-C++ maintenance scripts directly executable (Vern Paxson, Corelight) + + * ZAM support for bit-shifting (Vern Paxson, Corelight) + + * don't allow deprecated-style mixing of vectors and scaling for shifting (Vern Paxson, Corelight) + leverage restrictions placed on shifting (RHS is always unsigned) + split deprecated vector operations into separate test, with separate ZAM baseline + + * ZAM fix for vector "in" operator (Vern Paxson, Corelight) + + * ensure that language tests pay attention to .stderr (Vern Paxson, Corelight) + + * fix vector tests, including checking for errors (Vern Paxson, Corelight) + 5.1.0-dev.312 | 2022-08-02 12:37:51 -0700 * Update plugins.hooks baseline with new DHCP options (peter.cullen, Corelight) diff --git a/VERSION b/VERSION index 6f52b713a8..0ca09afcaa 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -5.1.0-dev.312 +5.1.0-dev.326 diff --git a/src/Expr.cc b/src/Expr.cc index 3882b9ca89..ee855dad70 100644 --- a/src/Expr.cc +++ b/src/Expr.cc @@ -963,20 +963,15 @@ ValPtr BinaryExpr::Fold(Val* v1, Val* v2) const { if ( is_integral ) { - if ( i2 < 0 ) - RuntimeError("left shift by negative value"); - else if ( i1 < 1 ) + if ( i1 < 0 ) RuntimeError("left shifting a negative number is undefined"); - i3 = i1 << i2; + i3 = i1 << static_cast(i2); } - else if ( is_unsigned ) - { - if ( u2 < 0 ) - RuntimeError("left shift by negative value"); + else if ( is_unsigned ) u3 = u1 << u2; - } + else RuntimeErrorWithCallStack("bad type in BinaryExpr::Fold"); break; @@ -984,19 +979,11 @@ ValPtr BinaryExpr::Fold(Val* v1, Val* v2) const case EXPR_RSHIFT: { if ( is_integral ) - { - if ( i2 < 0 ) - RuntimeError("right shift by negative value"); + i3 = i1 >> static_cast(i2); - i3 = i1 >> i2; - } else if ( is_unsigned ) - { - if ( u2 < 0 ) - RuntimeError("right shift by negative value"); - u3 = u1 >> u2; - } + else RuntimeErrorWithCallStack("bad type in BinaryExpr::Fold"); break; @@ -2202,6 +2189,9 @@ BitExpr::BitExpr(ExprTag arg_tag, ExprPtr arg_op1, ExprPtr arg_op2) if ( tag == EXPR_LSHIFT || tag == EXPR_RSHIFT ) { + if ( (is_vector(op1) || is_vector(op2)) && ! (is_vector(op1) && is_vector(op2)) ) + ExprError("cannot mix vectors and scalars for shift operations"); + if ( IsIntegral(bt1) && bt2 == TYPE_COUNT ) { if ( is_vector(op1) || is_vector(op2) ) @@ -2209,13 +2199,19 @@ BitExpr::BitExpr(ExprTag arg_tag, ExprPtr arg_op1, ExprPtr arg_op2) else SetType(base_type(bt1)); } + else if ( IsIntegral(bt1) && bt2 == TYPE_INT ) ExprError("requires \"count\" right operand"); + else ExprError("requires integral operands"); + + return; // because following scalar check isn't apt } - else if ( (bt1 == TYPE_COUNT) && (bt2 == TYPE_COUNT) ) + CheckScalarAggOp(); + + if ( (bt1 == TYPE_COUNT) && (bt2 == TYPE_COUNT) ) { if ( is_vector(op1) || is_vector(op2) ) SetType(make_intrusive(base_type(TYPE_COUNT))); diff --git a/src/Stmt.cc b/src/Stmt.cc index 6b3dd99542..9dfd7ea1f4 100644 --- a/src/Stmt.cc +++ b/src/Stmt.cc @@ -2185,6 +2185,12 @@ TraversalCode WhenStmt::Traverse(TraversalCallback* cb) const } } + if ( wi->TimeoutExpr() ) + { + tc = wi->TimeoutExpr()->Traverse(cb); + HANDLE_TC_STMT_PRE(tc); + } + tc = cb->PostStmt(this); HANDLE_TC_STMT_POST(tc); } diff --git a/src/Val.h b/src/Val.h index d66df55797..6e5c28bf39 100644 --- a/src/Val.h +++ b/src/Val.h @@ -1593,10 +1593,8 @@ public: ValPtr ValAt(unsigned int index) const { return At(index); } bool Has(unsigned int index) const - // Version to use once std::optional implementation is merged. - // { return index < vector_val->size() && vector_val[index]; } { - return At(index) != nullptr; + return index < vector_val->size() && (*vector_val)[index]; } /** diff --git a/src/script_opt/CPP/RuntimeVec.cc b/src/script_opt/CPP/RuntimeVec.cc index 2607a2fb87..d58de16800 100644 --- a/src/script_opt/CPP/RuntimeVec.cc +++ b/src/script_opt/CPP/RuntimeVec.cc @@ -170,6 +170,8 @@ VEC_OP2(or, |, ) VEC_OP2(xor, ^, ) VEC_OP2(andand, &&, ) VEC_OP2(oror, ||, ) +VEC_OP2(lshift, <<, ) +VEC_OP2(rshift, >>, ) // A version of VEC_OP2 that instead supports relational operations, so // the result type is always vector-of-bool. diff --git a/src/script_opt/CPP/RuntimeVec.h b/src/script_opt/CPP/RuntimeVec.h index 78c809e535..267974b95d 100644 --- a/src/script_opt/CPP/RuntimeVec.h +++ b/src/script_opt/CPP/RuntimeVec.h @@ -45,6 +45,8 @@ extern VectorValPtr vec_op_or__CPP(const VectorValPtr& v1, const VectorValPtr& v extern VectorValPtr vec_op_xor__CPP(const VectorValPtr& v1, const VectorValPtr& v2); extern VectorValPtr vec_op_andand__CPP(const VectorValPtr& v1, const VectorValPtr& v2); extern VectorValPtr vec_op_oror__CPP(const VectorValPtr& v1, const VectorValPtr& v2); +extern VectorValPtr vec_op_lshift__CPP(const VectorValPtr& v1, const VectorValPtr& v2); +extern VectorValPtr vec_op_rshift__CPP(const VectorValPtr& v1, const VectorValPtr& v2); // Vector relational operations. extern VectorValPtr vec_op_lt__CPP(const VectorValPtr& v1, const VectorValPtr& v2); diff --git a/src/script_opt/CPP/Stmts.cc b/src/script_opt/CPP/Stmts.cc index 8cc5a5f39c..edef5b0b3a 100644 --- a/src/script_opt/CPP/Stmts.cc +++ b/src/script_opt/CPP/Stmts.cc @@ -495,7 +495,7 @@ void CPPCompile::GenForOverTable(const ExprPtr& tbl, const IDPtr& value_var, StartBlock(); Emit("auto k__CPP = lve__CPP.GetHashKey();"); - Emit("auto* current_tev__CPP = lve__CPP.GetValue();"); + Emit("auto* current_tev__CPP = lve__CPP.value;"); Emit("auto ind_lv__CPP = tv__CPP->RecreateIndex(*k__CPP);"); if ( value_var ) diff --git a/src/script_opt/CPP/maint/README b/src/script_opt/CPP/maint/README index f1383be5f0..366dd40261 100644 --- a/src/script_opt/CPP/maint/README +++ b/src/script_opt/CPP/maint/README @@ -15,7 +15,7 @@ The maintenance workflow: to check in updates to the list of how the compiler currently fares on various btests (see end of this doc): - Thu May 12 12:54:10 PDT 2022 + Mon Aug 1 16:39:05 PDT 2022 2. Run "find-test-files.sh" to generate a list (to stdout) of all of the possible Zeek source files found in the test suite. @@ -57,17 +57,27 @@ These BTests won't successfully run due to the indicated issue: command-line-error - a deliberate command-line error complex-to-debug - hard-to-figure-out failure deprecated - uses features deprecated for -O C++ + error-handling - behavior in face of an error differs + needs-plugin - requires knowing how to build an associated plugin no-script - there's no actual script to compile ZAM - meant specifically for -O ZAM +Consider migrating these to have @TEST-REQUIRES clauses so we don't have +to maintain this list. + ../testing/btest/core/negative-time.test no-script ../testing/btest/core/pcap/dumper.zeek no-script ../testing/btest/core/pcap/input-error.zeek command-line-error ../testing/btest/core/proc-status-file.zeek no-script +../testing/btest/core/scalar-vector.zeek deprecated ../testing/btest/language/at-if-event.zeek @if ../testing/btest/language/at-if.zeek @if ../testing/btest/language/at-ifdef.zeek @if ../testing/btest/language/at-ifndef.zeek @if +../testing/btest/language/incr-vec-expr.test deprecated +../testing/btest/language/uninitialized-local2.zeek error-handling +../testing/btest/language/vector-deprecated.zeek deprecated +../testing/btest/language/vector-in-operator.zeek ../testing/btest/language/vector-in-operator.zeek deprecated ../testing/btest/language/when-aggregates.zeek bad-when ../testing/btest/opt/opt-files.zeek ZAM @@ -76,6 +86,7 @@ These BTests won't successfully run due to the indicated issue: ../testing/btest/opt/opt-func.zeek ZAM ../testing/btest/opt/opt-func2.zeek ZAM ../testing/btest/opt/opt-func3.zeek ZAM +../testing/btest/plugins/packet-protocol.zeek needs-plugin ../testing/btest/scripts/base/protocols/dhcp/dhcp-ack-msg-types.zeek no-script ../testing/btest/scripts/base/protocols/dhcp/dhcp-all-msg-types.zeek no-script ../testing/btest/scripts/base/protocols/dhcp/dhcp-discover-msg-types.zeek no-script diff --git a/src/script_opt/CPP/maint/check-CPP-gen.sh b/src/script_opt/CPP/maint/check-CPP-gen.sh old mode 100644 new mode 100755 index e8c56fbf91..efa52d03a5 --- a/src/script_opt/CPP/maint/check-CPP-gen.sh +++ b/src/script_opt/CPP/maint/check-CPP-gen.sh @@ -1,8 +1,19 @@ #! /bin/sh -out=out.$(echo $1 | sed 's,\.\./,,;s,/,#,g') +abbr=$(echo $1 | sed 's,\.\./,,;s,/,#,g') +out=CPP-test/out.$abbr +gen_out=CPP-test/gen.$abbr ( /bin/echo -n $1" " - (src/zeek -O gen-C++ --optimize-files=testing/btest --optimize-func="" $1 >&/dev/null && echo "success") || echo "fail" -) >CPP-test/$out 2>&1 + if ! src/zeek -O gen-C++ --optimize-files=testing/btest $1 >&$gen_out 2>&1; then + echo "fail" + exit 1 + fi + if grep -E -q 'deprecated|skipping|cannot compile|no matching functions' $gen_out; then + echo "fail" + exit 1 + fi + echo "success" + exit 0 +) >$out 2>&1 diff --git a/src/script_opt/CPP/maint/check-zeek.sh b/src/script_opt/CPP/maint/check-zeek.sh old mode 100644 new mode 100755 diff --git a/src/script_opt/CPP/maint/do-CPP-btest.sh b/src/script_opt/CPP/maint/do-CPP-btest.sh old mode 100644 new mode 100755 index 3146db4997..acd5bc6c1b --- a/src/script_opt/CPP/maint/do-CPP-btest.sh +++ b/src/script_opt/CPP/maint/do-CPP-btest.sh @@ -1,11 +1,22 @@ #! /bin/sh rm -f CPP-gen.cc + cp zeek.HOLD src/zeek || ( echo Need to create clean zeek.HOLD exit 1 ) || exit 1 +if [ "$1" == "-U" ]; then + btest_opt=-U + shift +elif [ "$1" == "-d" ]; then + btest_opt=-d + shift +else + btest_opt=-d +fi + base=$(echo $1 | sed 's,\.\./,,;s,/,#,g') rel_test=$(echo $1 | sed 's,.*testing/btest/,,') @@ -26,5 +37,5 @@ ninja ( cd ../testing/btest - ../../auxil/btest/btest -a cpp -d -f ../../build/CPP-test/diag.$base $rel_test + ../../auxil/btest/btest -a cpp $btest_opt -f ../../build/CPP-test/diag.$base $rel_test ) diff --git a/src/script_opt/CPP/maint/find-test-files.sh b/src/script_opt/CPP/maint/find-test-files.sh old mode 100644 new mode 100755 diff --git a/src/script_opt/ZAM/Ops.in b/src/script_opt/ZAM/Ops.in index 9e907362f4..90729195f2 100644 --- a/src/script_opt/ZAM/Ops.in +++ b/src/script_opt/ZAM/Ops.in @@ -543,6 +543,19 @@ op-type U vector eval $1 ^ $2 +binary-expr-op Lshift +op-type I U +vector +eval-type I if ( $1 < 0 ) + ZAM_run_time_error(z.loc, "left shifting a negative number is undefined"); + $$ = $1 << $2; +eval $1 << $2 + +binary-expr-op Rshift +op-type I U +vector +eval $1 >> $2 + ########## Relationals ########## rel-expr-op LT @@ -833,13 +846,13 @@ internal-op Val-Is-In-Vector type VVV eval auto& vec = frame[z.v3].vector_val; auto ind = frame[z.v2].int_val; - frame[z.v1].int_val = ind >= 0 && static_cast(ind) < vec->Size(); + frame[z.v1].int_val = vec->Has(ind); internal-op Const-Is-In-Vector type VCV eval auto& vec = frame[z.v2].vector_val; auto ind = z.c.int_val; - frame[z.v1].int_val = ind >= 0 && static_cast(ind) < vec->Size(); + frame[z.v1].int_val = vec->Has(ind); expr-op Cond type VVVV diff --git a/testing/btest/Baseline.cpp/bifs.backtrace/out b/testing/btest/Baseline.cpp/bifs.backtrace/out index ceb28402d7..dcf4a006ea 100644 --- a/testing/btest/Baseline.cpp/bifs.backtrace/out +++ b/testing/btest/Baseline.cpp/bifs.backtrace/out @@ -1,8 +1,10 @@ ### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. --- Backtrace --- +#0: zeek_init() --- Backtrace --- - +| #0: zeek_init() | --- Backtrace --- +#0: zeek_init() diff --git a/testing/btest/Baseline.cpp/bifs.disable_analyzer/out b/testing/btest/Baseline.cpp/bifs.disable_analyzer/out new file mode 100644 index 0000000000..2a4cdae144 --- /dev/null +++ b/testing/btest/Baseline.cpp/bifs.disable_analyzer/out @@ -0,0 +1,7 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +proto confirm, AllAnalyzers::ANALYZER_ANALYZER_HTTP +http_request, GET, /style/enhanced.css +T +total http messages, { +[[orig_h=192.168.1.104, orig_p=1673/tcp, resp_h=63.245.209.11, resp_p=80/tcp]] = 1 +} diff --git a/testing/btest/Baseline.cpp/bifs.type_aliases/out b/testing/btest/Baseline.cpp/bifs.type_aliases/out index bf28df18e5..dab1c31ead 100644 --- a/testing/btest/Baseline.cpp/bifs.type_aliases/out +++ b/testing/btest/Baseline.cpp/bifs.type_aliases/out @@ -5,16 +5,16 @@ type aliases for 'MyRec val': MyRec MyRecAlias type aliases for 'MyRecAlias val': MyRec MyRecAlias type aliases for 'MyRec type': MyRec MyRecAlias type aliases for 'MyRecalias type': MyRec MyRecAlias -type aliases for 'MyString val': MyString AnotherString +type aliases for 'MyString val': it's just a 'string' type aliases for 'MyString type': MyString AnotherString type aliases for 'MyOtherString type': MyOtherString type aliases for 'AnotherString type': MyString AnotherString -type aliases for 'string literal value': MyString AnotherString +type aliases for 'string literal value': it's just a 'string' type aliases for 'count literal value': it's just a 'count' -type aliases for 'MyTable value': MyTable2 MyTable3 MyTable MyTable4 -type aliases for 'MyTable2 value': MyTable2 MyTable3 MyTable MyTable4 -type aliases for 'MyTable3 value': MyTable2 MyTable3 MyTable MyTable4 -type aliases for 'MyTable4 value': MyTable2 MyTable3 MyTable MyTable4 +type aliases for 'MyTable value': it's just a 'table[count] of string' +type aliases for 'MyTable2 value': it's just a 'table[count] of string' +type aliases for 'MyTable3 value': it's just a 'table[count] of string' +type aliases for 'MyTable4 value': it's just a 'table[count] of string' type aliases for 'MyTable type': MyTable2 MyTable3 MyTable MyTable4 type aliases for 'MyTable2 type': MyTable2 MyTable3 MyTable MyTable4 type aliases for 'MyTable3 type': MyTable2 MyTable3 MyTable MyTable4 diff --git a/testing/btest/Baseline.cpp/broker.store.create-failure/zeek.err b/testing/btest/Baseline.cpp/broker.store.create-failure/zeek.err new file mode 100644 index 0000000000..b539cd1ff9 --- /dev/null +++ b/testing/btest/Baseline.cpp/broker.store.create-failure/zeek.err @@ -0,0 +1,11 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +error in <...>/main.zeek, lines 498-499: Failed to attach master store backend_failure: (Option::set_change_handler(Broker::metrics_export_prefixes, to_any_coerceBroker::update_metrics_export_prefixes, (coerce 0 to int))) +error in <...>/main.zeek, lines 498-499: Could not create Broker master store '../fail' (Option::set_change_handler(Broker::metrics_export_prefixes, to_any_coerceBroker::update_metrics_export_prefixes, (coerce 0 to int))) +error in : invalid Broker store handle (broker::store::{}) +error in : invalid Broker store handle (broker::store::{}) +error in : invalid Broker store handle (broker::store::{}) +error in : invalid Broker store handle (broker::store::{}) +error in : invalid Broker store handle (broker::store::{}) +error in : invalid Broker store handle (broker::store::{}) +error in : invalid Broker store handle (broker::store::{}) +received termination signal diff --git a/testing/btest/Baseline.cpp/broker.store.create-failure/zeek.out b/testing/btest/Baseline.cpp/broker.store.create-failure/zeek.out new file mode 100644 index 0000000000..dcf0911820 --- /dev/null +++ b/testing/btest/Baseline.cpp/broker.store.create-failure/zeek.out @@ -0,0 +1,21 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +T +F +F +F +m1 keys result: [status=Broker::FAILURE, result=[data=]] +m2 keys result: [status=Broker::SUCCESS, result=[data=broker::data{{}}]] +c2 keys result: [status=Broker::SUCCESS, result=[data=broker::data{{}}]] +T +F +F +F +T +T +T +T +m1 keys result: [status=Broker::FAILURE, result=[data=]] +c1 keys result: [status=Broker::FAILURE, result=[data=]] +m2 keys result: [status=Broker::FAILURE, result=[data=]] +c2 keys result: [status=Broker::FAILURE, result=[data=]] +c1 timeout diff --git a/testing/btest/Baseline.cpp/core.parse-only-usage-issues/out b/testing/btest/Baseline.cpp/core.parse-only-usage-issues/out new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline.cpp/core.parse-only-usage-issues/out @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline.cpp/core.reporter/logger-test.log b/testing/btest/Baseline.cpp/core.reporter/logger-test.log index 5af5e97ecc..63a8abaf9d 100644 --- a/testing/btest/Baseline.cpp/core.reporter/logger-test.log +++ b/testing/btest/Baseline.cpp/core.reporter/logger-test.log @@ -1,7 +1,7 @@ ### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. -reporter_info|init test-info||XXXXXXXXXX.XXXXXX -reporter_warning|init test-warning||XXXXXXXXXX.XXXXXX -reporter_error|init test-error||XXXXXXXXXX.XXXXXX +reporter_info|init test-info|<...>/main.zeek, lines 498-499|XXXXXXXXXX.XXXXXX +reporter_warning|init test-warning|<...>/main.zeek, lines 498-499|XXXXXXXXXX.XXXXXX +reporter_error|init test-error|<...>/main.zeek, lines 498-499|XXXXXXXXXX.XXXXXX reporter_info|done test-info||XXXXXXXXXX.XXXXXX reporter_warning|done test-warning||XXXXXXXXXX.XXXXXX reporter_error|done test-error||XXXXXXXXXX.XXXXXX diff --git a/testing/btest/Baseline.cpp/core.reporter/output b/testing/btest/Baseline.cpp/core.reporter/output index 5f77582fab..3e0dc0148f 100644 --- a/testing/btest/Baseline.cpp/core.reporter/output +++ b/testing/btest/Baseline.cpp/core.reporter/output @@ -2,9 +2,9 @@ pre test-info warning: pre test-warning error: pre test-error -init test-info -warning: init test-warning -error: init test-error +<...>/main.zeek, lines 498-499: init test-info +warning in <...>/main.zeek, lines 498-499: init test-warning +error in <...>/main.zeek, lines 498-499: init test-error done test-info warning: done test-warning error: done test-error diff --git a/testing/btest/Baseline.cpp/core.when-interpreter-exceptions/zeek.output b/testing/btest/Baseline.cpp/core.when-interpreter-exceptions/zeek.output new file mode 100644 index 0000000000..224ede9eb8 --- /dev/null +++ b/testing/btest/Baseline.cpp/core.when-interpreter-exceptions/zeek.output @@ -0,0 +1,15 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +### NOTE: This file has been sorted with diff-sort. +[f(F)] +[f(T)] +[zeek_init()] +f() done, no exception, T +g() done, no exception, T +received termination signal +runtime error in compiled code: field value missing +runtime error in compiled code: field value missing +runtime error in compiled code: field value missing +runtime error in compiled code: field value missing +timeout +timeout g(), F +timeout g(), T diff --git a/testing/btest/Baseline.cpp/language.copy-all-types/out b/testing/btest/Baseline.cpp/language.copy-all-types/out index 7f4e48b9bc..64879eb6ba 100644 --- a/testing/btest/Baseline.cpp/language.copy-all-types/out +++ b/testing/btest/Baseline.cpp/language.copy-all-types/out @@ -9,5 +9,5 @@ orig=/^?(.*PATTERN.*)$?/ (pattern) clone=/^?(.*PATTERN.*)$?/ (pattern) same_obje orig=2,5,3,4,1 (set[count]) clone=2,5,3,4,1 (set[count]) equal=T same_object=F (ok) orig=[1, 2, 3, 4, 5] (vector of count) clone=[1, 2, 3, 4, 5] (vector of count) equal=T same_object=F (ok) orig=a=va;b=vb (table[string] of string) clone=a=va;b=vb (table[string] of string) equal=T same_object=F (ok) -orig=ENUMME (enum MyEnum) clone=ENUMME (enum MyEnum) equal=T same_object=F (FAIL1) -orig=[s1=s1, s2=s2, i1=[a=a], i2=[a=a], donotset=, def=5] (record { s1:string; s2:string; i1:record { a:string; }; i2:record { a:string; } &optional; donotset:record { a:string; } &optional; def:count &default=5, &optional; }) clone=[s1=s1, s2=s2, i1=[a=a], i2=[a=a], donotset=, def=5] (record { s1:string; s2:string; i1:record { a:string; }; i2:record { a:string; } &optional; donotset:record { a:string; } &optional; def:count &default=5, &optional; }) equal=T same_object=F (ok) +orig=ENUMME (MyEnum) clone=ENUMME (MyEnum) equal=T same_object=F (FAIL1) +orig=[s1=s1, s2=s2, i1=[a=a], i2=[a=a], donotset=, def=5] (TestRecord) clone=[s1=s1, s2=s2, i1=[a=a], i2=[a=a], donotset=, def=5] (TestRecord) equal=T same_object=F (ok) diff --git a/testing/btest/Baseline.cpp/language.index-assignment-invalid/out b/testing/btest/Baseline.cpp/language.index-assignment-invalid/out index 64b64919f2..60950763c1 100644 --- a/testing/btest/Baseline.cpp/language.index-assignment-invalid/out +++ b/testing/btest/Baseline.cpp/language.index-assignment-invalid/out @@ -1,6 +1,6 @@ ### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. -runtime error in compiled code: vector index assignment failed for invalid type 'myrec', value: [a=T, b=hi, c=] -runtime error in compiled code: vector index assignment failed for invalid type 'myrec', value: [a=T, b=hi, c=] -runtime error in compiled code: vector index assignment failed for invalid type 'myrec', value: [a=T, b=hi, c=] -runtime error in compiled code: vector index assignment failed for invalid type 'myrec', value: [a=T, b=hi, c=] -runtime error in compiled code: vector index assignment failed for invalid type 'myrec', value: [a=T, b=hi, c=] +runtime error in <...>/queue.zeek, line 152: vector index assignment failed for invalid type 'myrec', value: [a=T, b=hi, c=], expression: Queue::ret[Queue::j], call stack: + #0 Queue::get_vector([initialized=T, vals={[2] = test,[3] = [a=T, b=hi, c=],[5] = 3,[0] = hello,[6] = jkl;,[4] = asdf,[1] = goodbye}, settings=[max_len=], top=7, bottom=0, size=0], [hello, goodbye, test]) at <...>/main.zeek:498 + #1 zeek_init() + + diff --git a/testing/btest/Baseline.cpp/plugins.reporter-hook/output b/testing/btest/Baseline.cpp/plugins.reporter-hook/output index 5cd10dea1f..90d7998a3e 100644 --- a/testing/btest/Baseline.cpp/plugins.reporter-hook/output +++ b/testing/btest/Baseline.cpp/plugins.reporter-hook/output @@ -1,11 +1,14 @@ ### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. - | Hook Some Info - | Hook error An Error - | Hook error An Error that does not show up in the log +Reporter::Hook - Exercise Reporter Hook (dynamic, version 1.0.0) + Implements Reporter (priority 0) + + | Hook Some Info <...>/main.zeek, lines 498-499 + | Hook error An Error <...>/main.zeek, lines 498-499 + | Hook error An Error that does not show up in the log <...>/main.zeek, lines 498-499 | Hook runtime error in compiled code field value missing - | Hook warning A warning -Some Info -error: An Error -error: An Error that does not show up in the log + | Hook warning A warning <...>/main.zeek, lines 498-499 +<...>/main.zeek, lines 498-499: Some Info +error in <...>/main.zeek, lines 498-499: An Error +error in <...>/main.zeek, lines 498-499: An Error that does not show up in the log runtime error in compiled code: field value missing -warning: A warning +warning in <...>/main.zeek, lines 498-499: A warning diff --git a/testing/btest/Baseline.cpp/plugins.reporter-hook/reporter.log b/testing/btest/Baseline.cpp/plugins.reporter-hook/reporter.log index fefdfc18d6..d7d3df0419 100644 --- a/testing/btest/Baseline.cpp/plugins.reporter-hook/reporter.log +++ b/testing/btest/Baseline.cpp/plugins.reporter-hook/reporter.log @@ -7,8 +7,8 @@ #open XXXX-XX-XX-XX-XX-XX #fields ts level message location #types time enum string string -XXXXXXXXXX.XXXXXX Reporter::INFO Some Info (empty) -XXXXXXXXXX.XXXXXX Reporter::WARNING A warning (empty) -XXXXXXXXXX.XXXXXX Reporter::ERROR An Error (empty) +XXXXXXXXXX.XXXXXX Reporter::INFO Some Info <...>/main.zeek, lines 498-499 +XXXXXXXXXX.XXXXXX Reporter::WARNING A warning <...>/main.zeek, lines 498-499 +XXXXXXXXXX.XXXXXX Reporter::ERROR An Error <...>/main.zeek, lines 498-499 XXXXXXXXXX.XXXXXX Reporter::ERROR field value missing (empty) #close XXXX-XX-XX-XX-XX-XX diff --git a/testing/btest/Baseline.cpp/scripts.base.frameworks.analyzer.tags/output b/testing/btest/Baseline.cpp/scripts.base.frameworks.analyzer.tags/output new file mode 100644 index 0000000000..2901042f3b --- /dev/null +++ b/testing/btest/Baseline.cpp/scripts.base.frameworks.analyzer.tags/output @@ -0,0 +1,7 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +all, AllAnalyzers::ANALYZER_ANALYZER_DNS +analyzer, Analyzer::ANALYZER_DNS +all, AllAnalyzers::PACKETANALYZER_ANALYZER_UDP +packet analyzer, PacketAnalyzer::ANALYZER_UDP +all, AllAnalyzers::FILES_ANALYZER_X509 +file analyzer, Files::ANALYZER_X509 diff --git a/testing/btest/Baseline.cpp/scripts.base.frameworks.file-analysis.bifs.file_exists_lookup_file/err b/testing/btest/Baseline.cpp/scripts.base.frameworks.file-analysis.bifs.file_exists_lookup_file/err index ee509ce372..f92621dcef 100644 --- a/testing/btest/Baseline.cpp/scripts.base.frameworks.file-analysis.bifs.file_exists_lookup_file/err +++ b/testing/btest/Baseline.cpp/scripts.base.frameworks.file-analysis.bifs.file_exists_lookup_file/err @@ -1,2 +1,3 @@ ### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. error: file ID asdf not a known file +warning: non-void function returning without a value: Files::lookup_file diff --git a/testing/btest/Baseline.zam/language.vector-deprecated/.stderr b/testing/btest/Baseline.zam/language.vector-deprecated/.stderr new file mode 100644 index 0000000000..54a209f546 --- /dev/null +++ b/testing/btest/Baseline.zam/language.vector-deprecated/.stderr @@ -0,0 +1,7 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +warning in /Users/vern/warehouse/zeek/zeek-master.29Jul22/testing/btest/.tmp/language.vector-deprecated/vector-deprecated.zeek, line 18: mixing vector and scalar operands is deprecated (vector) (string) +warning in /Users/vern/warehouse/zeek/zeek-master.29Jul22/testing/btest/.tmp/language.vector-deprecated/vector-deprecated.zeek, line 21: mixing vector and scalar operands is deprecated (string) (vector) +warning in /Users/vern/warehouse/zeek/zeek-master.29Jul22/testing/btest/.tmp/language.vector-deprecated/vector-deprecated.zeek, line 24: mixing vector and scalar operands is deprecated (string) (vector) +error: deprecated mixed vector/scalar operation not supported for ZAM compiling +error: deprecated mixed vector/scalar operation not supported for ZAM compiling +error: deprecated mixed vector/scalar operation not supported for ZAM compiling diff --git a/testing/btest/Baseline.zam/language.vector-deprecated/out b/testing/btest/Baseline.zam/language.vector-deprecated/out new file mode 100644 index 0000000000..c5cb1b1f1a --- /dev/null +++ b/testing/btest/Baseline.zam/language.vector-deprecated/out @@ -0,0 +1,4 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. ++ operator [string] (PASS) +== operator [string] (PASS) +== operator [string] (PASS) diff --git a/testing/btest/Baseline/coverage.coverage-blacklist/output b/testing/btest/Baseline/coverage.coverage-blacklist/output index c0cb3e558c..99f220914d 100644 --- a/testing/btest/Baseline/coverage.coverage-blacklist/output +++ b/testing/btest/Baseline/coverage.coverage-blacklist/output @@ -1,10 +1,10 @@ ### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. -1 <...>/coverage-blacklist.zeek, line 13 print cover me; -1 <...>/coverage-blacklist.zeek, line 15 if (T) { print always executed; } -1 <...>/coverage-blacklist.zeek, line 17 print always executed; -1 <...>/coverage-blacklist.zeek, line 22 if (0 + 0 == 1) print impossible; -1 <...>/coverage-blacklist.zeek, line 24 if (1 == 0) { print also impossible, but included in code coverage analysis; } -0 <...>/coverage-blacklist.zeek, line 26 print also impossible, but included in code coverage analysis; -1 <...>/coverage-blacklist.zeek, line 29 print success; -1 <...>/coverage-blacklist.zeek, line 5 print first; -1 <...>/coverage-blacklist.zeek, line 7 if (F) { print hello; print world; } +1 <...>/coverage-blacklist.zeek, line 10 if (F) { print hello; print world; } +1 <...>/coverage-blacklist.zeek, line 16 print cover me; +1 <...>/coverage-blacklist.zeek, line 18 if (T) { print always executed; } +1 <...>/coverage-blacklist.zeek, line 20 print always executed; +1 <...>/coverage-blacklist.zeek, line 25 if (0 + 0 == 1) print impossible; +1 <...>/coverage-blacklist.zeek, line 27 if (1 == 0) { print also impossible, but included in code coverage analysis; } +0 <...>/coverage-blacklist.zeek, line 29 print also impossible, but included in code coverage analysis; +1 <...>/coverage-blacklist.zeek, line 32 print success; +1 <...>/coverage-blacklist.zeek, line 8 print first; diff --git a/testing/btest/Baseline/language.addr/.stderr b/testing/btest/Baseline/language.addr/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.addr/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.any/.stderr b/testing/btest/Baseline/language.any/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.any/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.at-if-event/.stderr b/testing/btest/Baseline/language.at-if-event/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.at-if-event/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.at-if/.stderr b/testing/btest/Baseline/language.at-if/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.at-if/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.at-ifdef/.stderr b/testing/btest/Baseline/language.at-ifdef/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.at-ifdef/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.at-ifndef/.stderr b/testing/btest/Baseline/language.at-ifndef/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.at-ifndef/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.at-load/.stderr b/testing/btest/Baseline/language.at-load/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.at-load/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.bool/.stderr b/testing/btest/Baseline/language.bool/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.bool/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.common-mistakes2/err b/testing/btest/Baseline/language.common-mistakes2/err index 53363fbd9b..aa104a9b32 100644 --- a/testing/btest/Baseline/language.common-mistakes2/err +++ b/testing/btest/Baseline/language.common-mistakes2/err @@ -1,2 +1,2 @@ ### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. -expression error in <...>/common-mistakes2.zeek, line 16: type-checking failed in vector append (v += ok) +expression error in <...>/common-mistakes2.zeek, line 17: type-checking failed in vector append (v += ok) diff --git a/testing/btest/Baseline/language.conditional-expression/.stderr b/testing/btest/Baseline/language.conditional-expression/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.conditional-expression/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.copy/.stderr b/testing/btest/Baseline/language.copy/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.copy/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.count/.stderr b/testing/btest/Baseline/language.count/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.count/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.double/.stderr b/testing/btest/Baseline/language.double/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.double/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.enum/.stderr b/testing/btest/Baseline/language.enum/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.enum/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.for/.stderr b/testing/btest/Baseline/language.for/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.for/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.function/.stderr b/testing/btest/Baseline/language.function/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.function/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.if/.stderr b/testing/btest/Baseline/language.if/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.if/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.int/.stderr b/testing/btest/Baseline/language.int/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.int/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.interval/.stderr b/testing/btest/Baseline/language.interval/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.interval/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.module/.stderr b/testing/btest/Baseline/language.module/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.module/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.no-module/.stderr b/testing/btest/Baseline/language.no-module/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.no-module/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.pattern/.stderr b/testing/btest/Baseline/language.pattern/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.pattern/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.port/.stderr b/testing/btest/Baseline/language.port/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.port/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.precedence/.stderr b/testing/btest/Baseline/language.precedence/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.precedence/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.set/.stderr b/testing/btest/Baseline/language.set/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.set/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.short-circuit/.stderr b/testing/btest/Baseline/language.short-circuit/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.short-circuit/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.string/.stderr b/testing/btest/Baseline/language.string/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.string/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.subnet/.stderr b/testing/btest/Baseline/language.subnet/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.subnet/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.table/.stderr b/testing/btest/Baseline/language.table/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.table/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.time/.stderr b/testing/btest/Baseline/language.time/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.time/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.unused-assignment/out b/testing/btest/Baseline/language.unused-assignment/out index 8b9959a034..4e7cd14878 100644 --- a/testing/btest/Baseline/language.unused-assignment/out +++ b/testing/btest/Baseline/language.unused-assignment/out @@ -1,2 +1,2 @@ ### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. -warning: please_warn assignment unused: please_warn = test; <...>/unused-assignment.zeek, line 7 +warning: please_warn assignment unused: please_warn = test; <...>/unused-assignment.zeek, line 10 diff --git a/testing/btest/Baseline/language.vector-deprecated/.stderr b/testing/btest/Baseline/language.vector-deprecated/.stderr new file mode 100644 index 0000000000..f5fc4b326c --- /dev/null +++ b/testing/btest/Baseline/language.vector-deprecated/.stderr @@ -0,0 +1,4 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +warning in <...>/vector-deprecated.zeek, line 18: mixing vector and scalar operands is deprecated (vector) (string) +warning in <...>/vector-deprecated.zeek, line 21: mixing vector and scalar operands is deprecated (string) (vector) +warning in <...>/vector-deprecated.zeek, line 24: mixing vector and scalar operands is deprecated (string) (vector) diff --git a/testing/btest/Baseline/language.vector-deprecated/out b/testing/btest/Baseline/language.vector-deprecated/out new file mode 100644 index 0000000000..c5cb1b1f1a --- /dev/null +++ b/testing/btest/Baseline/language.vector-deprecated/out @@ -0,0 +1,4 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. ++ operator [string] (PASS) +== operator [string] (PASS) +== operator [string] (PASS) diff --git a/testing/btest/Baseline/language.vector/.stderr b/testing/btest/Baseline/language.vector/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/language.vector/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/language.vector/out b/testing/btest/Baseline/language.vector/out index 267848fa4e..21f42f873a 100644 --- a/testing/btest/Baseline/language.vector/out +++ b/testing/btest/Baseline/language.vector/out @@ -60,9 +60,6 @@ access element (PASS) / operator (PASS) % operator (PASS) + operator [string] (PASS) -+ operator [string] (PASS) -== operator [string] (PASS) -== operator [string] (PASS) == operator [string] (PASS) && operator (PASS) || operator (PASS) @@ -81,3 +78,5 @@ copy of a vector with holes (PASS) copy of a vector with trailing holes, [0, 2, 3, 77, , ], [0, 2, 3, 77, , ] hole in vector of managed types, 5, [[a=T], [a=T], , , [a=T]] hole in vector of managed types after replacing slice, 3, [[a=T], [a=T], ] +left shift (PASS) +right shift (PASS) diff --git a/testing/btest/bifs/piped_exec.zeek b/testing/btest/bifs/piped_exec.zeek index 0aa0238a3e..d33f902e5e 100644 --- a/testing/btest/bifs/piped_exec.zeek +++ b/testing/btest/bifs/piped_exec.zeek @@ -4,7 +4,11 @@ global cmds = "print \"hello world\";"; cmds = string_cat(cmds, "\nprint \"foobar\";"); -if ( piped_exec("zeek", cmds) != T ) + +# If we're using generated C++, turn that off for the pipe execution, +# as otherwise we'll get a complaint that there's no corresponding +# C++ bodies found for that zeek instance. +if ( piped_exec("unset ZEEK_USE_CPP; zeek", cmds) != T ) exit(1); # Test null output. diff --git a/testing/btest/core/load-duplicates.zeek b/testing/btest/core/load-duplicates.zeek index 212fc577ac..d1e9d2455e 100644 --- a/testing/btest/core/load-duplicates.zeek +++ b/testing/btest/core/load-duplicates.zeek @@ -1,5 +1,8 @@ # This tests Zeek's mechanism to prevent duplicate script loading. # +# Don't run for C++ scripts, since it doesn't actually do anything and that +# leads to complaints that there are no scripts. +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" # @TEST-EXEC: mkdir -p foo/bar # @TEST-EXEC: echo "@load bar/test" >loader.zeek # @TEST-EXEC: cp %INPUT foo/bar/test.zeek diff --git a/testing/btest/core/load-stdin.zeek b/testing/btest/core/load-stdin.zeek index e3aa49dc02..51c3979c8c 100644 --- a/testing/btest/core/load-stdin.zeek +++ b/testing/btest/core/load-stdin.zeek @@ -1,4 +1,9 @@ # This verifies Zeek's ability to load scripts from stdin. +# +# Don't run for C++ scripts because the multiple invocations lead to +# some runs having complaints that there are no scripts. +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" +# # @TEST-EXEC: echo 'print "stdin";' | zeek -b >output.implicit # @TEST-EXEC: echo 'print "stdin";' | zeek -b - >output.explicit # @TEST-EXEC: echo 'print "stdin";' | zeek -b %INPUT >output.nostdin diff --git a/testing/btest/core/pcap/filter-error.zeek b/testing/btest/core/pcap/filter-error.zeek index ae9a40d70f..7e9fba125c 100644 --- a/testing/btest/core/pcap/filter-error.zeek +++ b/testing/btest/core/pcap/filter-error.zeek @@ -3,6 +3,10 @@ # greps to validate that we got a syntax error in the output with the string that we passed # as a filter. +# Don't run for C++ scripts, since first invocation doesn't use the input +# and hence leads to complaints that there are no scripts. +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" +# # @TEST-EXEC-FAIL: zeek -r $TRACES/workshop_2011_browse.trace -f "kaputt" >output 2>&1 # @TEST-EXEC-FAIL: test -e conn.log # @TEST-EXEC: grep "kaputt" output | grep -q "syntax error" diff --git a/testing/btest/core/script-args.zeek b/testing/btest/core/script-args.zeek index 2e38f411cc..b229c87ada 100644 --- a/testing/btest/core/script-args.zeek +++ b/testing/btest/core/script-args.zeek @@ -1,3 +1,7 @@ +# Don't run for C++ scripts, since script invocation of Zeek hashes +# the script differently, leading to complaints that there are no scripts. +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" + # @TEST-EXEC: printf '#!' > test.zeek # @TEST-EXEC: printf "$BUILD/src/zeek -b --\n" >> test.zeek # @TEST-EXEC: cat %INPUT >> test.zeek diff --git a/testing/btest/coverage/coverage-blacklist.zeek b/testing/btest/coverage/coverage-blacklist.zeek index 75ef0feb79..8899159478 100644 --- a/testing/btest/coverage/coverage-blacklist.zeek +++ b/testing/btest/coverage/coverage-blacklist.zeek @@ -1,3 +1,6 @@ +# Don't run for C++ scripts, since they aren't compatible with interpreter-level +# coverage analysis. +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" # @TEST-EXEC: ZEEK_PROFILER_FILE=coverage zeek -b %INPUT # @TEST-EXEC: grep %INPUT coverage | sort -k2 >output # @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff output diff --git a/testing/btest/doc/zeekygen/command_line.zeek b/testing/btest/doc/zeekygen/command_line.zeek index 434122b0cd..6eeb6e8191 100644 --- a/testing/btest/doc/zeekygen/command_line.zeek +++ b/testing/btest/doc/zeekygen/command_line.zeek @@ -1,3 +1,6 @@ +# Don't run for C++ scripts, they're not compatible. +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" + # Shouldn't emit any warnings about not being able to document something # that's supplied via command line script. diff --git a/testing/btest/language/addr.zeek b/testing/btest/language/addr.zeek index dff331c3fd..7fb8e1c529 100644 --- a/testing/btest/language/addr.zeek +++ b/testing/btest/language/addr.zeek @@ -1,20 +1,33 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { print fmt("%s (%s)", msg, expect ? "PASS" : "FAIL"); } +# IPv4 addresses +global a1: addr = 0.0.0.0; +global a2: addr = 10.0.0.11; +global a3: addr = 255.255.255.255; +global a4 = 192.1.2.3; + +# IPv6 addresses +global b1: addr = [::]; +global b2: addr = [::255.255.255.255]; +global b3: addr = [::ffff:ffff]; +global b4: addr = [ffff::ffff]; +global b5: addr = [0000:0000:0000:0000:0000:0000:0000:0000]; +global b6: addr = [aaaa:bbbb:cccc:dddd:eeee:ffff:1111:2222]; +global b7: addr = [AAAA:BBBB:CCCC:DDDD:EEEE:FFFF:1111:2222]; +global b9 = [2001:db8:0:0:0:FFFF:192.168.0.5]; + +# IPv4-mapped-IPv6 (internally treated as IPv4) +global c1: addr = [::ffff:1.2.3.4]; event zeek_init() { - # IPv4 addresses - local a1: addr = 0.0.0.0; - local a2: addr = 10.0.0.11; - local a3: addr = 255.255.255.255; - local a4 = 192.1.2.3; - test_case( "IPv4 address inequality", a1 != a2 ); test_case( "IPv4 address equality", a1 == 0.0.0.0 ); test_case( "IPv4 address comparison", a1 < a2 ); @@ -22,16 +35,7 @@ event zeek_init() test_case( "size of IPv4 address", |a1| == 32 ); test_case( "IPv4 address type inference", type_name(a4) == "addr" ); - # IPv6 addresses - local b1: addr = [::]; - local b2: addr = [::255.255.255.255]; - local b3: addr = [::ffff:ffff]; - local b4: addr = [ffff::ffff]; - local b5: addr = [0000:0000:0000:0000:0000:0000:0000:0000]; - local b6: addr = [aaaa:bbbb:cccc:dddd:eeee:ffff:1111:2222]; - local b7: addr = [AAAA:BBBB:CCCC:DDDD:EEEE:FFFF:1111:2222]; local b8 = [a::b]; - local b9 = [2001:db8:0:0:0:FFFF:192.168.0.5]; test_case( "IPv6 address inequality", b1 != b2 ); test_case( "IPv6 address equality", b1 == b5 ); @@ -44,9 +48,6 @@ event zeek_init() test_case( "IPv4 and IPv6 address inequality", a1 != b1 ); - # IPv4-mapped-IPv6 (internally treated as IPv4) - local c1: addr = [::ffff:1.2.3.4]; - test_case( "IPv4-mapped-IPv6 equality to IPv4", c1 == 1.2.3.4 ); test_case( "IPv4-mapped-IPv6 is IPv4", is_v4_addr(c1) == T ); } diff --git a/testing/btest/language/any.zeek b/testing/btest/language/any.zeek index aebab284c2..ed22b1df38 100644 --- a/testing/btest/language/any.zeek +++ b/testing/btest/language/any.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { @@ -11,12 +12,12 @@ function anyarg(arg1: any, arg1type: string) test_case( arg1type, type_name(arg1) == arg1type ); } +global any1: any = 5; +global any2: any = "bar"; +global any3: any = /bar/; + event zeek_init() { - local any1: any = 5; - local any2: any = "bar"; - local any3: any = /bar/; - # Test using variable of type "any" anyarg( any1, "count" ); diff --git a/testing/btest/language/at-if-event.zeek b/testing/btest/language/at-if-event.zeek index 9c26d39faa..5624eb6f91 100644 --- a/testing/btest/language/at-if-event.zeek +++ b/testing/btest/language/at-if-event.zeek @@ -1,5 +1,7 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr + # Check if @if can be used to alternative function/event definitions @if ( 1==1 ) diff --git a/testing/btest/language/at-if.zeek b/testing/btest/language/at-if.zeek index e6d7f58cae..4e62051b1c 100644 --- a/testing/btest/language/at-if.zeek +++ b/testing/btest/language/at-if.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { @@ -10,11 +11,10 @@ function foo(c: count): bool { return c == 42 ? T : F; } global TRUE_CONDITION = T; +global xyz = 0; event zeek_init() { - local xyz = 0; - # Test "if" without "else" @if ( F ) diff --git a/testing/btest/language/at-ifdef.zeek b/testing/btest/language/at-ifdef.zeek index cbc26b5cfa..df20c972de 100644 --- a/testing/btest/language/at-ifdef.zeek +++ b/testing/btest/language/at-ifdef.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { @@ -7,11 +8,10 @@ function test_case(msg: string, expect: bool) } global thisisdefined = 123; +global xyz = 0; event zeek_init() { - local xyz = 0; - # Test "ifdef" without "else" @ifdef ( notdefined ) diff --git a/testing/btest/language/at-ifndef.zeek b/testing/btest/language/at-ifndef.zeek index 069b51bddc..6d3c3325dc 100644 --- a/testing/btest/language/at-ifndef.zeek +++ b/testing/btest/language/at-ifndef.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { @@ -7,11 +8,10 @@ function test_case(msg: string, expect: bool) } global thisisdefined = 123; +global xyz = 0; event zeek_init() { - local xyz = 0; - # Test "ifndef" without "else" @ifndef ( notdefined ) diff --git a/testing/btest/language/at-load.zeek b/testing/btest/language/at-load.zeek index 45df73b05c..1937a9cdfb 100644 --- a/testing/btest/language/at-load.zeek +++ b/testing/btest/language/at-load.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr # In this script, we try to access each object defined in a "@load"ed script diff --git a/testing/btest/language/bool.zeek b/testing/btest/language/bool.zeek index e19f5a3714..0e505d13af 100644 --- a/testing/btest/language/bool.zeek +++ b/testing/btest/language/bool.zeek @@ -1,20 +1,20 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { print fmt("%s (%s)", msg, expect ? "PASS" : "FAIL"); } +global b1: bool = T; +global b2: bool = F; +global b3: bool = T; +global b4 = T; +global b5 = F; event zeek_init() { - local b1: bool = T; - local b2: bool = F; - local b3: bool = T; - local b4 = T; - local b5 = F; - test_case( "equality operator", b1 == b3 ); test_case( "inequality operator", b1 != b2 ); test_case( "logical or operator", b1 || b2 ); diff --git a/testing/btest/language/common-mistakes2.zeek b/testing/btest/language/common-mistakes2.zeek index 20c1ae0f1f..eead53ba31 100644 --- a/testing/btest/language/common-mistakes2.zeek +++ b/testing/btest/language/common-mistakes2.zeek @@ -1,9 +1,10 @@ # A companion to language/common-mistakes.zeek. Split off because we skip -# this test when using ZAM, since it employs a type-checking violation via -# vector-of-any, which doesn't seem worth going out of our way to support -# in ZAM (and it isn't dead simple to do so). +# this test when using script optimization, since it employs a type-checking +# violation via vector-of-any, which doesn't seem worth going out of our way +# to support for script optimization. # @TEST-REQUIRES: test "${ZEEK_ZAM}" != "1" +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" # @TEST-EXEC: zeek -b %INPUT >out 2>err # @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff out diff --git a/testing/btest/language/conditional-expression.zeek b/testing/btest/language/conditional-expression.zeek index 064ee0f790..1c9eb8f56b 100644 --- a/testing/btest/language/conditional-expression.zeek +++ b/testing/btest/language/conditional-expression.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { @@ -25,13 +26,17 @@ function f2(): bool # value is constant. global false = F; +global a: count; +global b: count; +global res: count; +global res2: bool; + +global s: set[string] = { "one", "two", "three" }; +global t: table[count] of string = { [1] = "one", [2] = "two", [3] = "three" }; +global v: vector of string = { "one", "two", "three" }; + event zeek_init() { - local a: count; - local b: count; - local res: count; - local res2: bool; - # Test that the correct operand is evaluated a = b = 0; @@ -67,21 +72,18 @@ event zeek_init() test_case( "associativity", ct == 2 ); # Test for unspecified set coercion - local s: set[string] = { "one", "two", "three" }; local sT = T ? set() : s; local sF = F ? s : set(); print |sT|, type_name(sT); print |sF|, type_name(sF); # Test for unspecified table coercion - local t: table[count] of string = { [1] = "one", [2] = "two", [3] = "three" }; local tT = T ? table() : t; local tF = F ? t : table(); print |tT|, type_name(tT); print |tF|, type_name(tF); # Test for unspecified vector coercion - local v: vector of string = { "one", "two", "three" }; local vT = T ? vector() : v; local vF = F ? v : vector(); print |vT|, type_name(vT); diff --git a/testing/btest/language/copy.zeek b/testing/btest/language/copy.zeek index 638976295d..f500491835 100644 --- a/testing/btest/language/copy.zeek +++ b/testing/btest/language/copy.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { diff --git a/testing/btest/language/count.zeek b/testing/btest/language/count.zeek index 7ba4c7982f..ae6a52665e 100644 --- a/testing/btest/language/count.zeek +++ b/testing/btest/language/count.zeek @@ -1,27 +1,25 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { print fmt("%s (%s)", msg, expect ? "PASS" : "FAIL"); } +global c1: count = 0; +global c2: count = 5; +global c3: count = 0xFF; +global c4: count = 255; +global c5: count = 18446744073709551615; # maximum allowed value +global c6: count = 0xffffffffffffffff; # maximum allowed value +global c7 = 1; event zeek_init() { - local c1: count = 0; - local c2: count = 5; - local c3: count = 0xFF; - local c4: count = 255; - local c5: count = 18446744073709551615; # maximum allowed value - local c6: count = 0xffffffffffffffff; # maximum allowed value - local c7 = 1; - # Type inference test - test_case( "type inference", type_name(c7) == "count" ); - # Test various constant representations test_case( "hexadecimal", c3 == c4 ); @@ -60,6 +58,5 @@ event zeek_init() test_case( str1, str1 == "max count value = 18446744073709551615" ); local str2 = fmt("max count value = %d", c6); test_case( str2, str2 == "max count value = 18446744073709551615" ); - } diff --git a/testing/btest/language/double.zeek b/testing/btest/language/double.zeek index f98abc839a..8334657b98 100644 --- a/testing/btest/language/double.zeek +++ b/testing/btest/language/double.zeek @@ -1,37 +1,37 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { print fmt("%s (%s)", msg, expect ? "PASS" : "FAIL"); } +global d1: double = 3; +global d2: double = +3; +global d3: double = 3.; +global d4: double = 3.0; +global d5: double = +3.0; +global d6: double = 3e0; +global d7: double = 3E0; +global d8: double = 3e+0; +global d9: double = 3e-0; +global d10: double = 3.0e0; +global d11: double = +3.0e0; +global d12: double = +3.0e+0; +global d13: double = +3.0E+0; +global d14: double = +3.0E-0; +global d15: double = .03E+2; +global d16: double = .03E2; +global d17: double = 3.0001; +global d18: double = -3.0001; +global d19: double = 1.7976931348623157e308; # maximum allowed value +global d20 = 7.0; +global d21 = 7e0; +global d22 = 7e+1; event zeek_init() { - local d1: double = 3; - local d2: double = +3; - local d3: double = 3.; - local d4: double = 3.0; - local d5: double = +3.0; - local d6: double = 3e0; - local d7: double = 3E0; - local d8: double = 3e+0; - local d9: double = 3e-0; - local d10: double = 3.0e0; - local d11: double = +3.0e0; - local d12: double = +3.0e+0; - local d13: double = +3.0E+0; - local d14: double = +3.0E-0; - local d15: double = .03E+2; - local d16: double = .03E2; - local d17: double = 3.0001; - local d18: double = -3.0001; - local d19: double = 1.7976931348623157e308; # maximum allowed value - local d20 = 7.0; - local d21 = 7e0; - local d22 = 7e+1; - # Type inference tests test_case( "type inference", type_name(d20) == "double" ); diff --git a/testing/btest/language/enum.zeek b/testing/btest/language/enum.zeek index 71c354971f..d6b64a36f8 100644 --- a/testing/btest/language/enum.zeek +++ b/testing/btest/language/enum.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { @@ -13,20 +14,19 @@ type color: enum { Red, White, Blue, }; # enum without optional comma type city: enum { Rome, Paris }; +global e1: color = Blue; +global e2: color = White; +global e3: color = Blue; +global e4: city = Rome; +global x = Blue; event zeek_init() { - local e1: color = Blue; - local e2: color = White; - local e3: color = Blue; - local e4: city = Rome; - test_case( "enum equality comparison", e1 != e2 ); test_case( "enum equality comparison", e1 == e3 ); test_case( "enum equality comparison", e1 != e4 ); # type inference - local x = Blue; test_case( "type inference", x == e1 ); } diff --git a/testing/btest/language/for.zeek b/testing/btest/language/for.zeek index 6918e78818..3ae4f20ac4 100644 --- a/testing/btest/language/for.zeek +++ b/testing/btest/language/for.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { diff --git a/testing/btest/language/function.zeek b/testing/btest/language/function.zeek index ff967b897f..dacdcdff27 100644 --- a/testing/btest/language/function.zeek +++ b/testing/btest/language/function.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { diff --git a/testing/btest/language/if.zeek b/testing/btest/language/if.zeek index 1f6f1116e1..ce80ec6aa3 100644 --- a/testing/btest/language/if.zeek +++ b/testing/btest/language/if.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { diff --git a/testing/btest/language/int.zeek b/testing/btest/language/int.zeek index 469cd56e07..1ad6bb6745 100644 --- a/testing/btest/language/int.zeek +++ b/testing/btest/language/int.zeek @@ -1,30 +1,30 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { print fmt("%s (%s)", msg, expect ? "PASS" : "FAIL"); } +global i1: int = 3; +global i2: int = +3; +global i3: int = -3; +global i4: int = +0; +global i5: int = -0; +global i6: int = 12; +global i7: int = +0xc; +global i8: int = 0xC; +global i9: int = -0xC; +global i10: int = -12; +global i11: int = 9223372036854775807; # max. allowed value +global i12: int = -9223372036854775808; # min. allowed value +global i13: int = 0x7fffffffffffffff; # max. allowed value +global i14: int = -0x8000000000000000; # min. allowed value +global i15 = +3; event zeek_init() { - local i1: int = 3; - local i2: int = +3; - local i3: int = -3; - local i4: int = +0; - local i5: int = -0; - local i6: int = 12; - local i7: int = +0xc; - local i8: int = 0xC; - local i9: int = -0xC; - local i10: int = -12; - local i11: int = 9223372036854775807; # max. allowed value - local i12: int = -9223372036854775808; # min. allowed value - local i13: int = 0x7fffffffffffffff; # max. allowed value - local i14: int = -0x8000000000000000; # min. allowed value - local i15 = +3; - # Type inference test test_case( "type inference", type_name(i15) == "int" ); @@ -67,5 +67,4 @@ event zeek_init() test_case( str3, str3 == "max int value = 9223372036854775807" ); local str4 = fmt("min int value = %d", i14); test_case( str4, str4 == "min int value = -9223372036854775808" ); - } diff --git a/testing/btest/language/interval.zeek b/testing/btest/language/interval.zeek index 994eb4c769..1b6e049685 100644 --- a/testing/btest/language/interval.zeek +++ b/testing/btest/language/interval.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { @@ -12,41 +13,39 @@ function approx_equal(x: double, y: double): bool return |(x - y)/x| < 1e-6 ? T : F; } +# Constants without space and no letter "s" +global in11: interval = 2usec; +global in12: interval = 2msec; +global in13: interval = 120sec; +global in14: interval = 2min; +global in15: interval = -2hr; +global in16: interval = 2.5day; + +# Constants with space and no letter "s" +global in21: interval = 2 usec; +global in22: interval = 2 msec; +global in23: interval = 120 sec; +global in24: interval = 2 min; +global in25: interval = -2 hr; +global in26: interval = 2.5 day; + +# Constants with space and letter "s" + +global in31: interval = 2 usecs; +global in32: interval = 2 msecs; +global in33: interval = 1.2e2 secs; +global in34: interval = 2 mins; +global in35: interval = -2 hrs; +global in36: interval = 2.5 days; + +# Type inference + +global in41 = 2 usec; +global in42 = 2.1usec; +global in43 = 3usecs; + event zeek_init() { - # Constants without space and no letter "s" - - local in11: interval = 2usec; - local in12: interval = 2msec; - local in13: interval = 120sec; - local in14: interval = 2min; - local in15: interval = -2hr; - local in16: interval = 2.5day; - - # Constants with space and no letter "s" - - local in21: interval = 2 usec; - local in22: interval = 2 msec; - local in23: interval = 120 sec; - local in24: interval = 2 min; - local in25: interval = -2 hr; - local in26: interval = 2.5 day; - - # Constants with space and letter "s" - - local in31: interval = 2 usecs; - local in32: interval = 2 msecs; - local in33: interval = 1.2e2 secs; - local in34: interval = 2 mins; - local in35: interval = -2 hrs; - local in36: interval = 2.5 days; - - # Type inference - - local in41 = 2 usec; - local in42 = 2.1usec; - local in43 = 3usecs; - # Type inference tests test_case( "type inference", type_name(in41) == "interval" ); diff --git a/testing/btest/language/module.zeek b/testing/btest/language/module.zeek index e714ff22c2..12efd7affc 100644 --- a/testing/btest/language/module.zeek +++ b/testing/btest/language/module.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT secondtestfile >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr # In this source file, we define a module and export some objects diff --git a/testing/btest/language/no-module.zeek b/testing/btest/language/no-module.zeek index f78c9da6c0..e209936c90 100644 --- a/testing/btest/language/no-module.zeek +++ b/testing/btest/language/no-module.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT secondtestfile >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr # This is the same test as "module.zeek", but here we omit the module definition diff --git a/testing/btest/language/pattern.zeek b/testing/btest/language/pattern.zeek index 2567afc884..bd2d65f4db 100644 --- a/testing/btest/language/pattern.zeek +++ b/testing/btest/language/pattern.zeek @@ -1,19 +1,19 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { print fmt("%s (%s)", msg, expect ? "PASS" : "FAIL"); } +global p1: pattern = /foo|bar/; +global p2: pattern = /oob/; +global p3: pattern = /^oob/; +global p4 = /foo/; event zeek_init() { - local p1: pattern = /foo|bar/; - local p2: pattern = /oob/; - local p3: pattern = /^oob/; - local p4 = /foo/; - # Type inference tests test_case( "type inference", type_name(p4) == "pattern" ); diff --git a/testing/btest/language/port.zeek b/testing/btest/language/port.zeek index 03a6617eed..868d402b37 100644 --- a/testing/btest/language/port.zeek +++ b/testing/btest/language/port.zeek @@ -1,26 +1,26 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { print fmt("%s (%s)", msg, expect ? "PASS" : "FAIL"); } +global p1: port = 1/icmp; +global p2: port = 2/udp; +global p3: port = 3/tcp; +global p4: port = 4/unknown; +global p5 = 123/tcp; + +# maximum allowed values for each port type +global p6: port = 255/icmp; +global p7: port = 65535/udp; +global p8: port = 65535/tcp; +global p9: port = 255/unknown; event zeek_init() { - local p1: port = 1/icmp; - local p2: port = 2/udp; - local p3: port = 3/tcp; - local p4: port = 4/unknown; - local p5 = 123/tcp; - - # maximum allowed values for each port type - local p6: port = 255/icmp; - local p7: port = 65535/udp; - local p8: port = 65535/tcp; - local p9: port = 255/unknown; - # Type inference test test_case( "type inference", type_name(p5) == "port" ); diff --git a/testing/btest/language/precedence.zeek b/testing/btest/language/precedence.zeek index 1af4bb6569..b01313f280 100644 --- a/testing/btest/language/precedence.zeek +++ b/testing/btest/language/precedence.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { @@ -9,12 +10,16 @@ function test_case(msg: string, expect: bool) # This is an incomplete set of tests to demonstrate the order of precedence # of zeek script operators +global n1: int; +global n2: int; +global n3: int; + +global r1: bool; +global r2: bool; +global r3: bool; + event zeek_init() { - local n1: int; - local n2: int; - local n3: int; - # Tests that show "++" has higher precedence than "*" n1 = n2 = 5; @@ -70,10 +75,6 @@ event zeek_init() test_case( "+= and +", n2 == 3 ); test_case( "+= and +", n3 == 1 ); - local r1: bool; - local r2: bool; - local r3: bool; - # Tests that show "&&" has higher precedence than "||" r1 = F && F || T; diff --git a/testing/btest/language/set.zeek b/testing/btest/language/set.zeek index b396a0c572..110856a7b4 100644 --- a/testing/btest/language/set.zeek +++ b/testing/btest/language/set.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { diff --git a/testing/btest/language/short-circuit.zeek b/testing/btest/language/short-circuit.zeek index 45d1046ab3..c167c03ac6 100644 --- a/testing/btest/language/short-circuit.zeek +++ b/testing/btest/language/short-circuit.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { diff --git a/testing/btest/language/string.zeek b/testing/btest/language/string.zeek index 8f9350a16d..4ae7cbd1aa 100644 --- a/testing/btest/language/string.zeek +++ b/testing/btest/language/string.zeek @@ -1,36 +1,36 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { print fmt("%s (%s)", msg, expect ? "PASS" : "FAIL"); } +global s1: string = "a\ty"; # tab +global s2: string = "a\nb"; # newline +global s3: string = "a\"b"; # double quote +global s4: string = "a\\b"; # backslash +global s5: string = "a\x9y"; # 1-digit hex value (tab character) +global s6: string = "a\x0ab"; # 2-digit hex value (newline character) +global s7: string = "a\x22b"; # 2-digit hex value (double quote) +global s8: string = "a\x00b"; # 2-digit hex value (null character) +global s9: string = "a\011y"; # 3-digit octal value (tab character) +global s10: string = "a\12b"; # 2-digit octal value (newline character) +global s11: string = "a\0b"; # 1-digit octal value (null character) + +global s20: string = ""; +global s21: string = "x"; +global s22: string = s21 + s11; +global s23: string = "test"; +global s24: string = "this is a very long string" + + "which continues on the next line" + + "the end"; +global s25: string = "on"; +global s26 = "x"; event zeek_init() { - local s1: string = "a\ty"; # tab - local s2: string = "a\nb"; # newline - local s3: string = "a\"b"; # double quote - local s4: string = "a\\b"; # backslash - local s5: string = "a\x9y"; # 1-digit hex value (tab character) - local s6: string = "a\x0ab"; # 2-digit hex value (newline character) - local s7: string = "a\x22b"; # 2-digit hex value (double quote) - local s8: string = "a\x00b"; # 2-digit hex value (null character) - local s9: string = "a\011y"; # 3-digit octal value (tab character) - local s10: string = "a\12b"; # 2-digit octal value (newline character) - local s11: string = "a\0b"; # 1-digit octal value (null character) - - local s20: string = ""; - local s21: string = "x"; - local s22: string = s21 + s11; - local s23: string = "test"; - local s24: string = "this is a very long string" + - "which continues on the next line" + - "the end"; - local s25: string = "on"; - local s26 = "x"; - # Type inference test test_case( "type inference", type_name(s26) == "string" ); diff --git a/testing/btest/language/subnet.zeek b/testing/btest/language/subnet.zeek index db61460df9..894d9036ad 100644 --- a/testing/btest/language/subnet.zeek +++ b/testing/btest/language/subnet.zeek @@ -1,39 +1,42 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { print fmt("%s (%s)", msg, expect ? "PASS" : "FAIL"); } +# IPv4 addr +global a1: addr = 192.1.2.3; + +# IPv4 subnets +global s1: subnet = 0.0.0.0/0; +global s2: subnet = 192.0.0.0/8; +global s3: subnet = 255.255.255.255/32; +global s4 = 10.0.0.0/16; + +# IPv6 addrs +global b1: addr = [ffff::]; +global b2: addr = [ffff::1]; +global b3: addr = [ffff:1::1]; + +# IPv6 subnets +global t1: subnet = [::]/0; +global t2: subnet = [ffff::]/64; +global t3 = [a::]/32; + +# IPv4-mapped-IPv6 subnets +global u1: subnet = [::ffff:0:0]/96; event zeek_init() { - # IPv4 addr - local a1: addr = 192.1.2.3; - - # IPv4 subnets - local s1: subnet = 0.0.0.0/0; - local s2: subnet = 192.0.0.0/8; - local s3: subnet = 255.255.255.255/32; - local s4 = 10.0.0.0/16; - test_case( "IPv4 subnet equality", a1/8 == s2 ); test_case( "IPv4 subnet inequality", a1/4 != s2 ); test_case( "IPv4 subnet in operator", a1 in s2 ); test_case( "IPv4 subnet !in operator", a1 !in s3 ); test_case( "IPv4 subnet type inference", type_name(s4) == "subnet" ); - # IPv6 addrs - local b1: addr = [ffff::]; - local b2: addr = [ffff::1]; - local b3: addr = [ffff:1::1]; - - # IPv6 subnets - local t1: subnet = [::]/0; - local t2: subnet = [ffff::]/64; - local t3 = [a::]/32; - test_case( "IPv6 subnet equality", b1/64 == t2 ); test_case( "IPv6 subnet inequality", b3/64 != t2 ); test_case( "IPv6 subnet in operator", b2 in t2 ); @@ -43,9 +46,6 @@ event zeek_init() test_case( "IPv4 and IPv6 subnet inequality", s1 != t1 ); test_case( "IPv4 address and IPv6 subnet", a1 !in t2 ); - # IPv4-mapped-IPv6 subnets - local u1: subnet = [::ffff:0:0]/96; - test_case( "IPv4 in IPv4-mapped-IPv6 subnet", 1.2.3.4 in u1 ); test_case( "IPv6 !in IPv4-mapped-IPv6 subnet", [fe80::1] !in u1 ); test_case( "IPv4-mapped-IPv6 in IPv4-mapped-IPv6 subnet", diff --git a/testing/btest/language/table.zeek b/testing/btest/language/table.zeek index f7d63622ea..db95f43d41 100644 --- a/testing/btest/language/table.zeek +++ b/testing/btest/language/table.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { diff --git a/testing/btest/language/time.zeek b/testing/btest/language/time.zeek index 685b011217..65c9eea6fe 100644 --- a/testing/btest/language/time.zeek +++ b/testing/btest/language/time.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { diff --git a/testing/btest/language/unused-assignment.zeek b/testing/btest/language/unused-assignment.zeek index 0958eaa7d5..e3c617af3b 100644 --- a/testing/btest/language/unused-assignment.zeek +++ b/testing/btest/language/unused-assignment.zeek @@ -1,3 +1,6 @@ +# Don't run for C++ scripts, they don't do this analysis at run-time. +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" + # @TEST-EXEC: ZEEK_USAGE_ISSUES=1 zeek -b %INPUT >out 2>&1 # @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff out # @TEST-DOC: The "-u" flag should warn about unused assignments and &is_used suppresses it. diff --git a/testing/btest/language/vector-deprecated.zeek b/testing/btest/language/vector-deprecated.zeek new file mode 100644 index 0000000000..ed0d09661c --- /dev/null +++ b/testing/btest/language/vector-deprecated.zeek @@ -0,0 +1,27 @@ +# @TEST-EXEC: zeek -b %INPUT >out +# @TEST-EXEC: btest-diff out +# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff .stderr + +function test_case(msg: string, expect: bool) + { + print fmt("%s (%s)", msg, expect ? "PASS" : "FAIL"); + } + +event zeek_init() +{ + local v6 = vector( 10, 20, 30 ); + local v16 = v6; + v16 += 40; + + local vs1 = vector( "foo", "bar" ); + + local vss2 = vs1 + "@"; + test_case( "+ operator [string]", vss2[0] == "foo@" && vss2[1] == "bar@" ); + + local vss4 = (vs1 == "bar"); + test_case( "== operator [string]", vss4[0] == F && vss4[1] == T ); + + local vss5 = ("bar" == vs1); + test_case( "== operator [string]", vss5[0] == F && vss5[1] == T ); + # !=, <, >, <=, >= are handled the same as ==, skipping tests +} diff --git a/testing/btest/language/vector.zeek b/testing/btest/language/vector.zeek index 7c461b4ce0..798fd7e15c 100644 --- a/testing/btest/language/vector.zeek +++ b/testing/btest/language/vector.zeek @@ -1,5 +1,6 @@ # @TEST-EXEC: zeek -b %INPUT >out # @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr function test_case(msg: string, expect: bool) { @@ -169,19 +170,9 @@ event zeek_init() local vss = vs1 + vs2; test_case( "+ operator [string]", vss[0] == "fooxxx" && vss[1] == "baryyy" ); - local vss2 = vs1 + "@"; - test_case( "+ operator [string]", vss2[0] == "foo@" && vss2[1] == "bar@" ); - local vss3 = (vs1 == vs3); test_case( "== operator [string]", vss3[0] == F && vss3[1] == T ); - local vss4 = (vs1 == "bar"); - test_case( "== operator [string]", vss4[0] == F && vss4[1] == T ); - - local vss5 = ("bar" == vs1); - test_case( "== operator [string]", vss5[0] == F && vss5[1] == T ); - # !=, <, >, <=, >= are handled the same as ==, skipping tests - # Test &&,|| of two vectors test_case( "&& operator", v14[0] == F && v14[1] == F && v14[2] == T ); @@ -227,8 +218,9 @@ event zeek_init() print "hole in vector of managed types after replacing slice", |v21|, v21; # Test << and >> operators. - local v22 = v6 << 1; - local v23 = v6 >> 1; - test_case( "left shift", all_set(v22 == vector(20, 40, 60)) ); - test_case( "right shift", all_set(v23 == vector(5, 10, 15)) ); + local four_ones = vector(1, 1, 1, 1); + local v22 = v6 << four_ones; + local v23 = v6 >> four_ones; + test_case( "left shift", all_set(v22 == vector(20, 40, 60, 80)) ); + test_case( "right shift", all_set(v23 == vector(5, 10, 15, 20)) ); } diff --git a/testing/btest/opt/opt-func.zeek b/testing/btest/opt/opt-func.zeek index 6594cffe34..e93f72c8ed 100644 --- a/testing/btest/opt/opt-func.zeek +++ b/testing/btest/opt/opt-func.zeek @@ -1,7 +1,7 @@ # @TEST-EXEC: zeek -b -O ZAM --optimize-func='my_test' %INPUT >output # @TEST-EXEC: btest-diff output -# Tests that we can selectively a given function. +# Tests that we can selectively pick a given function. function my_test() { diff --git a/testing/btest/opt/opt-func2.zeek b/testing/btest/opt/opt-func2.zeek index c503479905..773d438789 100644 --- a/testing/btest/opt/opt-func2.zeek +++ b/testing/btest/opt/opt-func2.zeek @@ -1,7 +1,7 @@ # @TEST-EXEC: zeek -b -O ZAM --optimize-func='another_test' %INPUT >output # @TEST-EXEC: btest-diff output -# Tests that we can selectively a bunch of functions (event handlers), +# Tests that we can selectively pick a bunch of functions (event handlers), # but not every function. function my_test() diff --git a/testing/btest/opt/opt-func3.zeek b/testing/btest/opt/opt-func3.zeek index 15f49987b1..13202b4641 100644 --- a/testing/btest/opt/opt-func3.zeek +++ b/testing/btest/opt/opt-func3.zeek @@ -1,7 +1,7 @@ # @TEST-EXEC: zeek -b -O ZAM --optimize-func='my_test' --optimize-func='another_test' %INPUT >output # @TEST-EXEC: btest-diff output -# Tests that we can selectively a bunch of functions (event handlers), +# Tests that we can selectively pick a bunch of functions (event handlers), # and also call out an additional function. function my_test() diff --git a/testing/btest/scripts/base/frameworks/analyzer/register-for-port.zeek b/testing/btest/scripts/base/frameworks/analyzer/register-for-port.zeek index d7fdb5fc50..d37212a2d2 100644 --- a/testing/btest/scripts/base/frameworks/analyzer/register-for-port.zeek +++ b/testing/btest/scripts/base/frameworks/analyzer/register-for-port.zeek @@ -1,4 +1,7 @@ -# +# Don't run for C++ scripts because the multiple invocations lead to +# some runs having complaints that there are no scripts. +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" + # @TEST-EXEC: zeek -b -r ${TRACES}/ssh/ssh-on-port-80.trace %INPUT dpd_buffer_size=0 base/protocols/conn base/protocols/ssh base/frameworks/dpd # @TEST-EXEC: cat conn.log | zeek-cut service | grep -q ssh # diff --git a/testing/btest/scripts/base/protocols/http/multipart-file-limit.zeek b/testing/btest/scripts/base/protocols/http/multipart-file-limit.zeek index 1050baccaa..bbfed736ca 100644 --- a/testing/btest/scripts/base/protocols/http/multipart-file-limit.zeek +++ b/testing/btest/scripts/base/protocols/http/multipart-file-limit.zeek @@ -1,3 +1,7 @@ +# Don't run for C++ scripts because the multiple invocations lead to +# some runs having complaints that there are no scripts. +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" + # @TEST-EXEC: zeek -b -C -r $TRACES/http/multipart.trace base/protocols/http # @TEST-EXEC: btest-diff http.log # @TEST-EXEC: zeek -b -C -r $TRACES/http/multipart.trace base/protocols/http %INPUT >out-limited diff --git a/testing/btest/scripts/base/protocols/smb/smb2-create-delete-on-close.zeek b/testing/btest/scripts/base/protocols/smb/smb2-create-delete-on-close.zeek index 47e49c71ee..5dbb5d147a 100644 --- a/testing/btest/scripts/base/protocols/smb/smb2-create-delete-on-close.zeek +++ b/testing/btest/scripts/base/protocols/smb/smb2-create-delete-on-close.zeek @@ -1,3 +1,6 @@ +# Don't run for C++ scripts because there's no script to compile. +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" + # @TEST-EXEC: zeek -C -r $TRACES/smb/smb2.delete-on-close-perms-delete-existing.pcap policy/protocols/smb/log-cmds # @TEST-EXEC: btest-diff smb_files.log # @TEST-EXEC: btest-diff smb_cmd.log diff --git a/testing/btest/scripts/policy/protocols/conn/known-hosts.zeek b/testing/btest/scripts/policy/protocols/conn/known-hosts.zeek index 38d14a4607..3359731565 100644 --- a/testing/btest/scripts/policy/protocols/conn/known-hosts.zeek +++ b/testing/btest/scripts/policy/protocols/conn/known-hosts.zeek @@ -1,5 +1,8 @@ # A basic test of the known-hosts script's logging and asset_tracking options +# Don't run for C++ scripts because there's no script to compile. +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" + # @TEST-EXEC: zeek -b -r $TRACES/wikipedia.trace %INPUT Known::host_tracking=LOCAL_HOSTS # @TEST-EXEC: mv known_hosts.log knownhosts-local.log # @TEST-EXEC: btest-diff knownhosts-local.log diff --git a/testing/btest/scripts/policy/protocols/conn/known-services.zeek b/testing/btest/scripts/policy/protocols/conn/known-services.zeek index 3c34adadc9..5a621cbfcd 100644 --- a/testing/btest/scripts/policy/protocols/conn/known-services.zeek +++ b/testing/btest/scripts/policy/protocols/conn/known-services.zeek @@ -1,5 +1,8 @@ # A basic test of the known-services script's logging and asset_tracking options +# Don't run for C++ scripts because there's no script to compile. +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" + # @TEST-EXEC: zeek -r $TRACES/var-services-std-ports.trace %INPUT Known::service_tracking=LOCAL_HOSTS # @TEST-EXEC: mv known_services.log knownservices-local.log # @TEST-EXEC: btest-diff knownservices-local.log