forked from ArchipelagoMW/Archipelago
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Stardew Valley: Properly support Universal Tracker (ArchipelagoMW#3630)
* save the seed in slot data to reuse it in UT * add logging when seed is missing * add UT test and fix bundle test * self review * run UT test on allsanity+mod so it's more meaningfull
- Loading branch information
Showing
7 changed files
with
105 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
52 changes: 52 additions & 0 deletions
52
worlds/stardew_valley/test/stability/TestUniversalTracker.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
import unittest | ||
from unittest.mock import Mock | ||
|
||
from .. import SVTestBase, create_args, allsanity_mods_6_x_x | ||
from ... import STARDEW_VALLEY, FarmType, BundleRandomization, EntranceRandomization | ||
|
||
|
||
class TestUniversalTrackerGenerationIsStable(SVTestBase): | ||
options = allsanity_mods_6_x_x() | ||
options.update({ | ||
EntranceRandomization.internal_name: EntranceRandomization.option_buildings, | ||
BundleRandomization.internal_name: BundleRandomization.option_shuffled, | ||
FarmType.internal_name: FarmType.option_standard, # Need to choose one otherwise it's random | ||
}) | ||
|
||
def test_all_locations_and_items_are_the_same_between_two_generations(self): | ||
# This might open a kivy window temporarily, but it's the only way to test this... | ||
if self.skip_long_tests: | ||
raise unittest.SkipTest("Long tests disabled") | ||
|
||
try: | ||
# This test only run if UT is present, so no risk of running in the CI. | ||
from worlds.tracker.TrackerClient import TrackerGameContext # noqa | ||
except ImportError: | ||
raise unittest.SkipTest("UT not loaded, skipping test") | ||
|
||
slot_data = self.world.fill_slot_data() | ||
ut_data = self.world.interpret_slot_data(slot_data) | ||
|
||
fake_context = Mock() | ||
fake_context.re_gen_passthrough = {STARDEW_VALLEY: ut_data} | ||
args = create_args({0: self.options}) | ||
args.outputpath = None | ||
args.outputname = None | ||
args.multi = 1 | ||
args.race = None | ||
args.plando_options = self.multiworld.plando_options | ||
args.plando_items = self.multiworld.plando_items | ||
args.plando_texts = self.multiworld.plando_texts | ||
args.plando_connections = self.multiworld.plando_connections | ||
args.game = self.multiworld.game | ||
args.name = self.multiworld.player_name | ||
args.sprite = {} | ||
args.sprite_pool = {} | ||
args.skip_output = True | ||
|
||
generated_multi_world = TrackerGameContext.TMain(fake_context, args, self.multiworld.seed) | ||
generated_slot_data = generated_multi_world.worlds[1].fill_slot_data() | ||
|
||
# Just checking slot data should prove that UT generates the same result as AP generation. | ||
self.maxDiff = None | ||
self.assertEqual(slot_data, generated_slot_data) |