diff --git a/.github/workflows/matrix.yml b/.github/workflows/matrix.yml index 0555ca0411a65..a693c7b883c8d 100644 --- a/.github/workflows/matrix.yml +++ b/.github/workflows/matrix.yml @@ -107,7 +107,7 @@ jobs: pch: 1 archive-success: basic-build dont_skip_data_only_changes: 1 - mods: --mods=magiclysm + mods: magiclysm|xedra_evolved title: Basic Build and Test (Clang oldest supported, Ubuntu, Curses) ccache_limit: 4.5G ccache_key: linux-llvm-13 diff --git a/build-scripts/gha_test_only.sh b/build-scripts/gha_test_only.sh index cfeb42b897d69..fbe3db437ac43 100755 --- a/build-scripts/gha_test_only.sh +++ b/build-scripts/gha_test_only.sh @@ -58,7 +58,9 @@ else parallel -j "$num_test_jobs" ${parallel_opts} "run_test './tests/cata_test' '('{}')=> ' --user-dir=test_user_dir_{#} {}" ::: "[slow] ~starting_items" "~[slow] ~[.],starting_items" if [ -n "$MODS" ] then - parallel -j "$num_test_jobs" ${parallel_opts} "run_test './tests/cata_test' 'Mods-('{}')=> ' $(printf %q "${MODS}") --user-dir=modded_{#} {}" ::: "[slow] ~starting_items" "~[slow] ~[.],starting_items" + for MODSET in ${MODS//|/ }; do + parallel -j "$num_test_jobs" ${parallel_opts} "run_test './tests/cata_test' 'Mods-('{}')=> ' --mods=$(printf %q "${MODSET}") --user-dir=modded_{#} {}" ::: "[slow] ~starting_items" "~[slow] ~[.],starting_items" + done fi if [ -n "$TEST_STAGE" ] diff --git a/src/npctalk.cpp b/src/npctalk.cpp index 65bad06eb68f0..8d2d905db09b0 100644 --- a/src/npctalk.cpp +++ b/src/npctalk.cpp @@ -28,6 +28,7 @@ #include "avatar.h" #include "bionics.h" #include "bodypart.h" +#include "cached_options.h" #include "calendar.h" #include "cata_lazy.h" #include "cata_path.h" @@ -6404,6 +6405,25 @@ talk_effect_fun_t::func f_run_eoc_selector( const JsonObject &jo, std::string_vi translation title = to_translation( "Select an option." ); jo.read( "title", title ); + // Selector dialog can't be initialized in tests, so either cancel or activate first eoc + if( test_mode ) { + return [eocs, context, allow_cancel]( dialogue & d ) { + if( allow_cancel ) { + return; + } + + dialogue newDialog( d ); + if( !context.empty() ) { + for( const auto &val : context[0] ) { + newDialog.set_value( val.first, val.second.evaluate( d ) ); + } + } + const effect_on_condition_id first_eoc = + eocs[0].var ? effect_on_condition_id( eocs[0].var->evaluate( d ) ) : eocs[0].id; + first_eoc->activate( newDialog ); + }; + } + return [eocs, context, title, eoc_names, eoc_keys, eoc_descriptions, hide_failing, allow_cancel, hilight_disabled]( dialogue & d ) { uilist eoc_list;