From 44f88e49beceffebd2da34c8e48ad1a07ba8ef7e Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Mon, 29 May 2023 21:21:55 -0400 Subject: [PATCH] Quietens Spaceman when debugging UNIT_TESTS locally (#75570) The contract is removed by virtue of testing. --- .github/workflows/run_integration_tests.yml | 2 +- code/__DEFINES/qdel.dm | 1 + code/controllers/subsystem/air.dm | 3 ++- code/controllers/subsystem/garbage.dm | 2 +- code/controllers/subsystem/minor_mapping.dm | 3 ++- code/game/world.dm | 4 ++-- code/modules/antagonists/cult/cult.dm | 6 ++---- tools/build/build.js | 14 +++++++++++--- tools/build/lib/byond.js | 4 +++- 9 files changed, 25 insertions(+), 14 deletions(-) diff --git a/.github/workflows/run_integration_tests.yml b/.github/workflows/run_integration_tests.yml index bfb8b4b8c94..0c4ba61a8a4 100644 --- a/.github/workflows/run_integration_tests.yml +++ b/.github/workflows/run_integration_tests.yml @@ -60,7 +60,7 @@ jobs: run: | bash tools/ci/install_byond.sh source $HOME/BYOND/byond/bin/byondsetup - tools/build/build --ci dm -DCIBUILDING -DANSICOLORS -Werror + tools/build/build --ci dm -DCIBUILDING -DANSICOLORS -WError -NWTG0001 - name: Run Tests run: | source $HOME/BYOND/byond/bin/byondsetup diff --git a/code/__DEFINES/qdel.dm b/code/__DEFINES/qdel.dm index 359e3c0b756..69cec5262a2 100644 --- a/code/__DEFINES/qdel.dm +++ b/code/__DEFINES/qdel.dm @@ -19,6 +19,7 @@ * * Functionally identical to [QDEL_HINT_QUEUE] if [GC_FAILURE_HARD_LOOKUP] is not enabled in _compiler_options.dm. */ +#warn TG0001 qdel REFERENCE_TRACKING enabled #define QDEL_HINT_FINDREFERENCE 5 /// Behavior as [QDEL_HINT_FINDREFERENCE], but only if the GC fails and a hard delete is forced. #define QDEL_HINT_IFFAIL_FINDREFERENCE 6 diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index bc6f802f2d5..488debb48e5 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -615,7 +615,7 @@ SUBSYSTEM_DEF(air) // In an ideal world, we would have absolutely zero active turfs 99.99% of the time, but that's not the case. `log_mapping()` during world initialize triggers a CI fail. #ifdef UNIT_TESTS return -#endif +#else // Associated lists, left-hand-side is the z-level or z-trait, right-hand-side is the number of active turfs associated with that. var/list/tally_by_level = list() // Discriminate for certain z-traits, stuff like "Linkage" is not helpful. @@ -672,6 +672,7 @@ SUBSYSTEM_DEF(air) message_to_log += "End of active turf list." log_mapping(message_to_log.Join("\n")) +#endif /turf/open/proc/resolve_active_graph() . = list() diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index 086fcd760c5..684c243a6be 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -404,7 +404,7 @@ SUBSYSTEM_DEF(garbage) #ifdef REFERENCE_TRACKING if (QDEL_HINT_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled, display all references to this object, then queue the object for deletion. SSgarbage.Queue(D) - D.find_references() //This breaks ci. Consider it insurance against somehow pring reftracking on accident + INVOKE_ASYNC(D, TYPE_PROC_REF(/datum, find_references)) if (QDEL_HINT_IFFAIL_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled and the object fails to collect, display all references to this object. SSgarbage.Queue(D) SSgarbage.reference_find_on_fail[text_ref(D)] = TRUE diff --git a/code/controllers/subsystem/minor_mapping.dm b/code/controllers/subsystem/minor_mapping.dm index 73371932e04..f1bbe5278ae 100644 --- a/code/controllers/subsystem/minor_mapping.dm +++ b/code/controllers/subsystem/minor_mapping.dm @@ -9,10 +9,11 @@ SUBSYSTEM_DEF(minor_mapping) /datum/controller/subsystem/minor_mapping/Initialize() #ifdef UNIT_TESTS // This whole subsystem just introduces a lot of odd confounding variables into unit test situations, so let's just not bother with doing an initialize here. return SS_INIT_NO_NEED - #endif // the mice are easily the bigger problem, but let's just avoid anything that could cause some bullshit. + #else trigger_migration(CONFIG_GET(number/mice_roundstart)) place_satchels() return SS_INIT_SUCCESS + #endif // the mice are easily the bigger problem, but let's just avoid anything that could cause some bullshit. /// Spawns some critters on exposed wires, usually but not always mice /datum/controller/subsystem/minor_mapping/proc/trigger_migration(to_spawn=10) diff --git a/code/game/world.dm b/code/game/world.dm index 181ff3c9098..cc1190f7078 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -299,8 +299,7 @@ GLOBAL_VAR(restart_counter) #ifdef UNIT_TESTS FinishTestRun() return - #endif - + #else if(TgsAvailable()) var/do_hard_reboot // check the hard reboot counter @@ -331,6 +330,7 @@ GLOBAL_VAR(restart_counter) TgsReboot() // TGS can decide to kill us right here, so it's important to do it last ..() + #endif /world/proc/auxcleanup() AUXTOOLS_FULL_SHUTDOWN(AUXLUA) diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index 0ee07377305..531ca4dc8ca 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -280,12 +280,9 @@ if(cult_ascendent) return -#ifdef UNIT_TESTS // This proc is unnecessary clutter whilst running cult related unit tests // Remove this if, at some point, someone decides to test that halos and eyes are added at expected ratios - return -#endif - +#ifndef UNIT_TESTS var/alive = 0 var/cultplayers = 0 for(var/I in GLOB.player_list) @@ -315,6 +312,7 @@ mind.current.AddElement(/datum/element/cult_halo) cult_ascendent = TRUE log_game("The blood cult has ascended with [cultplayers] players.") +#endif /datum/team/cult/add_member(datum/mind/new_member) . = ..() diff --git a/tools/build/build.js b/tools/build/build.js index ac0f37c67a9..86e1151fa03 100644 --- a/tools/build/build.js +++ b/tools/build/build.js @@ -47,6 +47,11 @@ export const WarningParameter = new Juke.Parameter({ alias: 'W', }); +export const NoWarningParameter = new Juke.Parameter({ + type: 'string[]', + alias: 'NW', +}); + export const DmMapsIncludeTarget = new Juke.Target({ executes: async () => { const folders = [ @@ -65,7 +70,7 @@ export const DmMapsIncludeTarget = new Juke.Target({ }); export const DmTarget = new Juke.Target({ - parameters: [DefineParameter, DmVersionParameter, WarningParameter], + parameters: [DefineParameter, DmVersionParameter, WarningParameter, NoWarningParameter], dependsOn: ({ get }) => [ get(DefineParameter).includes('ALL_MAPS') && DmMapsIncludeTarget, ], @@ -91,13 +96,14 @@ export const DmTarget = new Juke.Target({ await DreamMaker(`${DME_NAME}.dme`, { defines: ['CBT', ...get(DefineParameter)], warningsAsErrors: get(WarningParameter).includes('error'), + ignoreWarningCodes: get(NoWarningParameter), namedDmVersion: get(DmVersionParameter), }); }, }); export const DmTestTarget = new Juke.Target({ - parameters: [DefineParameter, DmVersionParameter, WarningParameter], + parameters: [DefineParameter, DmVersionParameter, WarningParameter, NoWarningParameter], dependsOn: ({ get }) => [ get(DefineParameter).includes('ALL_MAPS') && DmMapsIncludeTarget, ], @@ -106,6 +112,7 @@ export const DmTestTarget = new Juke.Target({ await DreamMaker(`${DME_NAME}.test.dme`, { defines: ['CBT', 'CIBUILDING', ...get(DefineParameter)], warningsAsErrors: get(WarningParameter).includes('error'), + ignoreWarningCodes: get(NoWarningParameter), namedDmVersion: get(DmVersionParameter), }); Juke.rm('data/logs/ci', { recursive: true }); @@ -131,7 +138,7 @@ export const DmTestTarget = new Juke.Target({ }); export const AutowikiTarget = new Juke.Target({ - parameters: [DefineParameter, DmVersionParameter, WarningParameter], + parameters: [DefineParameter, DmVersionParameter, WarningParameter, NoWarningParameter], dependsOn: ({ get }) => [ get(DefineParameter).includes('ALL_MAPS') && DmMapsIncludeTarget, ], @@ -143,6 +150,7 @@ export const AutowikiTarget = new Juke.Target({ await DreamMaker(`${DME_NAME}.test.dme`, { defines: ['CBT', 'AUTOWIKI', ...get(DefineParameter)], warningsAsErrors: get(WarningParameter).includes('error'), + ignoreWarningCodes: get(NoWarningParameter), namedDmVersion: get(DmVersionParameter), }); Juke.rm('data/autowiki_edits.txt'); diff --git a/tools/build/lib/byond.js b/tools/build/lib/byond.js index 55ffd32bc60..14ed533147d 100644 --- a/tools/build/lib/byond.js +++ b/tools/build/lib/byond.js @@ -149,7 +149,9 @@ export const DreamMaker = async (dmeFile, options = {}) => { testOutputFile(`${dmeBaseName}.rsc`); const runWithWarningChecks = async (dmeFile, args) => { const execReturn = await Juke.exec(dmeFile, args); - if (options.warningsAsErrors && execReturn.combined.match(/\d+:warning: /)) { + const ignoredWarningCodes = options.ignoreWarningCodes ?? []; + const reg = ignoredWarningCodes.length > 0 ? new RegExp(`\d+:warning: (?!(${ignoredWarningCodes.join('|')}))`) : /\d+:warning: /; + if (options.warningsAsErrors && execReturn.combined.match(reg)) { Juke.logger.error(`Compile warnings treated as errors`); throw new Juke.ExitCode(2); }