Skip to content

Commit 8f48eec

Browse files
authored
sort unit tests by name inside of each priority bracket (#1185)
* sort unit tests by name inside of each priority bracket * maybe better? * im dum * try to fix this cringe * cleaner * add names to combat tests
1 parent dedc334 commit 8f48eec

10 files changed

+55
-1
lines changed

code/__HELPERS/cmp.dm

+5
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@
1616
/proc/cmp_name_dsc(atom/a, atom/b)
1717
return sorttext(a.name, b.name)
1818

19+
/proc/cmp_name_or_type_asc(atom/a, atom/b)
20+
var/comp_a = a.name || "[a.type]"
21+
var/comp_b = b.name || "[b.type]"
22+
return sorttext(comp_b, comp_a)
23+
1924
GLOBAL_VAR_INIT(cmp_field, "name")
2025
/proc/cmp_records_asc(datum/data/record/a, datum/data/record/b)
2126
return sorttext(b.fields[GLOB.cmp_field], a.fields[GLOB.cmp_field])

code/modules/unit_tests/_unit_test.dm

+23
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,12 @@ GLOBAL_LIST_EMPTY(unit_test_mapping_logs)
6565
if (istype(content, /obj/effect/landmark))
6666
continue
6767
qdel(content)
68+
69+
for(var/mob/dead/observer/ghost in GLOB.dead_mob_list)
70+
if(!ghost.client)
71+
ghost.key = null
72+
qdel(ghost)
73+
6874
return ..()
6975

7076
/datum/unit_test/proc/Run()
@@ -171,6 +177,23 @@ GLOBAL_LIST_EMPTY(unit_test_mapping_logs)
171177

172178
tests_to_run = sortTim(tests_to_run, GLOBAL_PROC_REF(cmp_unit_test_priority))
173179

180+
/// Create a list of every unit test for each priority value
181+
var/list/priority_buckets = list()
182+
for(var/datum/unit_test/test as anything in tests_to_run)
183+
var/priority_str = "[test.priority]"
184+
if(!(priority_str in priority_buckets))
185+
priority_buckets[priority_str] = list()
186+
187+
priority_buckets[priority_str] += test
188+
189+
/// Sort them by name within those buckets
190+
for(var/priority_str in priority_buckets)
191+
sortTim(priority_buckets[priority_str], GLOBAL_PROC_REF(cmp_name_or_type_asc))
192+
193+
tests_to_run = list()
194+
for(var/priority_str in priority_buckets)
195+
tests_to_run += priority_buckets[priority_str]
196+
174197
var/list/test_results = list()
175198

176199
for(var/unit_path in tests_to_run)

code/modules/unit_tests/combat/combat.dm

+14
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
/datum/unit_test/combat/harm_punch
2+
name = "COMBAT: Punching Shall Deal Damage"
3+
14
/datum/unit_test/combat/harm_punch/Run()
25
var/mob/living/carbon/human/puncher = allocate(/mob/living/carbon/human)
36
var/mob/living/carbon/human/victim = allocate(/mob/living/carbon/human)
@@ -10,6 +13,9 @@
1013

1114
TEST_ASSERT(victim.getBruteLoss() > 0, "Victim took no brute damage after being punched")
1215

16+
/datum/unit_test/combat/harm_melee
17+
name = "COMBAT: Toolboxes Shall Deal Damage"
18+
1319
/datum/unit_test/combat/harm_melee/Run()
1420
var/mob/living/carbon/human/tider = allocate(/mob/living/carbon/human)
1521
var/mob/living/carbon/human/victim = allocate(/mob/living/carbon/human)
@@ -21,6 +27,9 @@
2127

2228
TEST_ASSERT(victim.getBruteLoss() > 0, "Victim took no brute damage after being hit by a toolbox")
2329

30+
/datum/unit_test/combat/harm_different_damage
31+
name = "COMBAT: Welding Tools Shall Deal Burn Damage"
32+
2433
/datum/unit_test/combat/harm_different_damage/Run()
2534
var/mob/living/carbon/human/attacker = allocate(/mob/living/carbon/human)
2635
var/mob/living/carbon/human/victim = allocate(/mob/living/carbon/human)
@@ -36,6 +45,7 @@
3645
TEST_ASSERT(victim.getFireLoss() > 0, "Victim took no burn damage after being hit by a lit welding tool")
3746

3847
/datum/unit_test/combat/attack_chain
48+
name = "COMBAT: Attack Chain Sanity"
3949
var/attack_hit
4050
var/post_attack_hit
4151
var/pre_attack_hit
@@ -69,6 +79,9 @@
6979
TEST_ASSERT(attack_hit, "Attack signal was not fired")
7080
TEST_ASSERT(post_attack_hit, "Post-attack signal was not fired")
7181

82+
/datum/unit_test/combat/non_standard_damage
83+
name = "COMBAT: Brain Damage Shall Kill"
84+
7285
/datum/unit_test/combat/non_standard_damage/Run()
7386
var/mob/living/carbon/human/man = allocate(/mob/living/carbon/human)
7487

@@ -77,6 +90,7 @@
7790

7891
/// Tests you can punch yourself
7992
/datum/unit_test/combat/self_punch
93+
name = "COMBAT: You Can Punch Yourself"
8094

8195
/datum/unit_test/combat/self_punch/Run()
8296
var/mob/living/carbon/human/dummy = allocate(/mob/living/carbon/human/consistent)

code/modules/unit_tests/combat/combat_blocking.dm

-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
/datum/unit_test/combat/armed_blocking
1919
name = "COMBAT/BLOCKING: Items Must Block Armed Attacks"
2020

21-
2221
/datum/unit_test/combat/armed_blocking/Run()
2322
var/mob/living/carbon/human/consistent/attacker = ALLOCATE_BOTTOM_LEFT()
2423
var/mob/living/carbon/human/consistent/victim = ALLOCATE_BOTTOM_LEFT()

code/modules/unit_tests/combat/combat_door_click.dm

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/// Tests that airlocks can be closed by clicking on the floor, as [/datum/component/redirect_attack_hand_from_turf ] dictates
22
/datum/unit_test/combat/door_click
3+
name = "COMBAT/INTERACTION: Doors Shall Open and Close On Click."
34

45
/datum/unit_test/combat/door_click/Run()
56
var/mob/living/carbon/human/consistent/tider = ALLOCATE_BOTTOM_LEFT()

code/modules/unit_tests/combat/combat_emp_flashlight.dm

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/// Test EMP flashlight EMPs people you point it at
22
/datum/unit_test/combat/emp_flashlight
3+
name = "COMBAT/MISC: EMP Flashlight Shall EMP On Click"
34
var/sig_caught = 0
45

56
/datum/unit_test/combat/emp_flashlight/Run()

code/modules/unit_tests/combat/combat_flash.dm

+3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/// Tests that flashes, well, flash.
22
/datum/unit_test/combat/flash_click
3+
name = "COMBAT/FLASH: Flashes Shall Deal Stamina Damage"
34
var/apply_verb = "while Attacker was not on combat mode"
45

56
/datum/unit_test/combat/flash_click/Run()
@@ -22,6 +23,7 @@
2223

2324
/// Tests that flashes flash on combat mode.
2425
/datum/unit_test/combat/flash_click/combat_mode
26+
name = "COMBAT/FLASH: Flashes Shall Deal Stamina Damage (Combat Mode)"
2527
apply_verb = "while Attacker was on combat mode"
2628

2729
/datum/unit_test/combat/flash_click/combat_mode/ready_subjects(mob/living/carbon/human/attacker, mob/living/carbon/human/victim)
@@ -30,6 +32,7 @@
3032

3133
/// Tests that flashes do not flash if wearing protection.
3234
/datum/unit_test/combat/flash_click/flash_protection
35+
name = "COMBAT/FLASH: Flashes Shall Deal Not Deal Stamina Damage To Flash Immune"
3336
apply_verb = "while wearing flash protection"
3437

3538
/datum/unit_test/combat/flash_click/flash_protection/ready_subjects(mob/living/carbon/human/attacker, mob/living/carbon/human/victim)

code/modules/unit_tests/combat/combat_pistol_whip.dm

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/// Tests that guns (bayonetted or otherwise) are able to be used as melee weapons in close range
22
/datum/unit_test/combat/pistol_whip
3+
name = "COMBAT/GUNS: Guns Shall Melee With Combat Mode and Point-Blank Without"
34

45
/datum/unit_test/combat/pistol_whip/Run()
56
var/mob/living/carbon/human/consistent/attacker = ALLOCATE_BOTTOM_LEFT()

code/modules/unit_tests/combat/combat_stamina.dm

+6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
/datum/unit_test/combat/stamina_swing
2+
name = "COMBAT/STAMINA: Attacking Shall Consume Stamina"
3+
14
/datum/unit_test/combat/stamina_swing/Run()
25
var/mob/living/carbon/human/consistent/attacker = ALLOCATE_BOTTOM_LEFT()
36
var/mob/living/carbon/human/consistent/victim = ALLOCATE_BOTTOM_LEFT()
@@ -14,6 +17,9 @@
1417
var/actual_loss = attacker.stamina.loss
1518
TEST_ASSERT_EQUAL(actual_loss, expected_loss, "Attacker didn't lose 50 stamina, lost [actual_loss] instead.")
1619

20+
/datum/unit_test/combat/stamina_damage
21+
name = "COMBAT/STAMINA: Melee Victim Shall Lose Stamina"
22+
1723
/datum/unit_test/combat/stamina_damage/Run()
1824
var/mob/living/carbon/human/consistent/attacker = ALLOCATE_BOTTOM_LEFT()
1925
var/mob/living/carbon/human/consistent/victim = ALLOCATE_BOTTOM_LEFT()

code/modules/unit_tests/create_and_destroy.dm

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
///Delete one of every type, sleep a while, then check to see if anything has gone fucky
22
/datum/unit_test/create_and_destroy
3+
name = "DEL THE WORLD: All Atoms Shall Cleanly Initialize and Destroy"
34
//You absolutely must run last
45
priority = TEST_DEL_WORLD
56

0 commit comments

Comments
 (0)