Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[1.16] Unit tests for [drains], [poison] and [slows], including apply_to=opponent #6582

Merged
merged 1 commit into from
Apr 19, 2022

Commits on Apr 17, 2022

  1. Unit tests for [drains], [poison] and [slow], with apply_to=opponent

    Here `apply_to=opponent` means that the weapon special gives the opponent the
    ability, the unit that should get poisoned or slowed is the unit that has the
    weapon special.
    
    There's a known bug in 1.16, that `apply_to=opponent` check the wrong unit to
    see it it's `unpoisonable`, `undrainable` etc. It also checks the wrong unit to
    see if it's already poisoned or slowed, so a battle between two units that both
    have reverse-poison results in at most one being poisoned.
    
    As 1.16 has already been released, to avoid OOS the test is checking that the
    current behavior's known bug is preserved. For the 1.17 branch, the five lines
    labelled `preserving known bug` will be changed to test the reverse.
    
    Most of the credit for this is Newfrenchy's, as he's already written a fix
    and a WML based test. This commit uses a Lua test instead to test more
    combinations of statuses.
    
    This adds a `COMMON_KEEP_A_B_UNIT_TEST` macro, which is a counterpart to the
    `GENERIC_UNIT_TEST` macro that starts the leaders next to each other, ready
    to attack. The `A_B` is because I'm planning a multiple-side variant too, and
    the main reason for using separate files is Git's fuzzy-patch matching when
    merging and rebasing. Having large blocks of identical text in
    `wml_unit_test_macros.cfg` can mean the wrong section gets patched.
    
    There's no test for [petrify], as simulate_combat doesn't provide a stat for it.
    
    This tests only 3 of the 6 abilities whose behavior will change in 1.17's
    equivalent of 1.16's 7b39b65. That's sufficient to prevent any accidental
    copy of the 1.17 fix to 1.16, and my thoughts on testing the others are:
    * [firststrike]'s test is in 7b39b65. It crashed, so is fixed in 1.16.
    * [drains], [poison] and [slow] are tested here.
    * [petrify] ends combat, it's also not exposed in simulate_combat's stats.
    * [plague] triggers after combat ends.
    stevecotton committed Apr 17, 2022
    Configuration menu
    Copy the full SHA
    0d8353c View commit details
    Browse the repository at this point in the history