mirror of
https://github.com/zeek/zeek.git
synced 2025-10-05 08:08:19 +00:00
zeek-setup: Load scrips before running unit tests
It is currently not possible to call a->Conn()->GetVal() or construct a zeek/file_analysis/File object from within doctests, as these quickly reference the unpopulated zeek::id namespace to construct Val objects of various types, making it hard write basic tests without completely re-organizing. Move running of the unit tests after parsing the scripts, so it is possible for some basic exercising of File objects within tests.
This commit is contained in:
parent
71f487bd20
commit
9f8eb682b1
2 changed files with 13 additions and 17 deletions
|
@ -535,9 +535,6 @@ TEST_CASE("construction")
|
||||||
CHECK_EQ(s7.Len(), 6);
|
CHECK_EQ(s7.Len(), 6);
|
||||||
CHECK_EQ(s7.Bytes(), text2);
|
CHECK_EQ(s7.Bytes(), text2);
|
||||||
|
|
||||||
// Construct a temporary reporter object for the next two tests
|
|
||||||
zeek::reporter = new zeek::Reporter(false);
|
|
||||||
|
|
||||||
zeek::byte_vec text3 = new u_char[7];
|
zeek::byte_vec text3 = new u_char[7];
|
||||||
memcpy(text3, text.c_str(), 7);
|
memcpy(text3, text.c_str(), 7);
|
||||||
zeek::String s8{false, text3, 6};
|
zeek::String s8{false, text3, 6};
|
||||||
|
@ -549,8 +546,6 @@ TEST_CASE("construction")
|
||||||
zeek::String s9{false, text4, 6};
|
zeek::String s9{false, text4, 6};
|
||||||
CHECK_EQ(std::string(s9.CheckString()), "<string-with-NUL>");
|
CHECK_EQ(std::string(s9.CheckString()), "<string-with-NUL>");
|
||||||
|
|
||||||
delete zeek::reporter;
|
|
||||||
|
|
||||||
zeek::byte_vec text5 = (zeek::byte_vec)malloc(7);
|
zeek::byte_vec text5 = (zeek::byte_vec)malloc(7);
|
||||||
memcpy(text5, text.c_str(), 7);
|
memcpy(text5, text.c_str(), 7);
|
||||||
zeek::String s10{true, text5, 6};
|
zeek::String s10{true, text5, 6};
|
||||||
|
|
|
@ -679,7 +679,7 @@ SetupResult setup(int argc, char** argv, Options* zopts)
|
||||||
if ( options.plugins_to_load.empty() && options.scripts_to_load.empty() &&
|
if ( options.plugins_to_load.empty() && options.scripts_to_load.empty() &&
|
||||||
options.script_options_to_set.empty() && ! options.pcap_file && ! options.interface &&
|
options.script_options_to_set.empty() && ! options.pcap_file && ! options.interface &&
|
||||||
! options.identifier_to_print && ! command_line_policy && ! options.print_plugins &&
|
! options.identifier_to_print && ! command_line_policy && ! options.print_plugins &&
|
||||||
! options.supervisor_mode && ! Supervisor::ThisNode() )
|
! options.supervisor_mode && ! Supervisor::ThisNode() && ! options.run_unit_tests )
|
||||||
add_input_file("-");
|
add_input_file("-");
|
||||||
|
|
||||||
for ( const auto& script_option : options.script_options_to_set )
|
for ( const auto& script_option : options.script_options_to_set )
|
||||||
|
@ -726,17 +726,6 @@ SetupResult setup(int argc, char** argv, Options* zopts)
|
||||||
|
|
||||||
plugin_mgr->ActivateDynamicPlugins(! options.bare_mode);
|
plugin_mgr->ActivateDynamicPlugins(! options.bare_mode);
|
||||||
|
|
||||||
// Delay the unit test until here so that plugins have been loaded.
|
|
||||||
if ( options.run_unit_tests )
|
|
||||||
{
|
|
||||||
set_signal_mask(false); // Allow ctrl-c to abort the tests early
|
|
||||||
doctest::Context context;
|
|
||||||
auto dargs = to_cargs(options.doctest_args);
|
|
||||||
context.applyCommandLine(dargs.size(), dargs.data());
|
|
||||||
ZEEK_LSAN_ENABLE();
|
|
||||||
exit(context.run());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Print usage after plugins load so that any path extensions are properly shown.
|
// Print usage after plugins load so that any path extensions are properly shown.
|
||||||
if ( options.print_usage )
|
if ( options.print_usage )
|
||||||
usage(argv[0], 0);
|
usage(argv[0], 0);
|
||||||
|
@ -808,6 +797,18 @@ SetupResult setup(int argc, char** argv, Options* zopts)
|
||||||
init_net_var();
|
init_net_var();
|
||||||
run_bif_initializers();
|
run_bif_initializers();
|
||||||
|
|
||||||
|
// Delay the unit test until here so that plugins and script
|
||||||
|
// types have been fully loaded.
|
||||||
|
if ( options.run_unit_tests )
|
||||||
|
{
|
||||||
|
set_signal_mask(false); // Allow ctrl-c to abort the tests early
|
||||||
|
doctest::Context context;
|
||||||
|
auto dargs = to_cargs(options.doctest_args);
|
||||||
|
context.applyCommandLine(dargs.size(), dargs.data());
|
||||||
|
ZEEK_LSAN_ENABLE();
|
||||||
|
exit(context.run());
|
||||||
|
}
|
||||||
|
|
||||||
// Assign the script_args for command line processing in Zeek scripts.
|
// Assign the script_args for command line processing in Zeek scripts.
|
||||||
if ( ! options.script_args.empty() )
|
if ( ! options.script_args.empty() )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue