def test_extract_archive_subfolder(self): with tempfile.TemporaryDirectory() as temp_dir: self.extractAddon('some-fake-addon.zip', temp_dir, curse.Curse("", GameVersion.retail), subfolder='sub-folder') self.assertExtractionSuccess(temp_dir, 'sub-folder', 'file1.txt')
def test_integration_curse_find_zip_url(self): for game_version in GameVersion.__members__.values(): with self.subTest(game_version): c = curse.Curse(self.url, game_version) zip_url = c.find_zip_url() # example: https://www.curseforge.com/wow/addons/bartender4/download/2730531/file self.assertRegex(zip_url.lower(), rf"{self.url}/download/[0-9]+/file")
def test_curse_url_redirect(self): test_data = url_redirect_test_data for game_version in test_data.supported_game_versions: with self.subTest((game_version, test_data.url, test_data.version_regex)): c = curse.Curse(test_data.url, game_version) latest_version = c.get_latest_version() self.assertRegex(latest_version, test_data.version_regex)
def test_integration_curse_get_latest_version(self): for url, version_regex in version_test_data: thiscurse = curse.Curse(url) latest_version = thiscurse.get_latest_version() with self.subTest([url, version_regex]): # something like 4.5.6, or v163 self.assertRegex(latest_version, version_regex)
def test_integration_curse_get_latest_version(self): for vtd in version_test_data: for game_version in vtd.supported_game_versions: with self.subTest((game_version, vtd.url, vtd.version_regex)): c = curse.Curse(vtd.url, game_version) latest_version = c.get_latest_version() # something like 4.5.6, or v163 self.assertRegex(latest_version, vtd.version_regex)
def test_integration_curse_get_latest_version(self): for url, version_regex in version_test_data: for game_version in GameVersion.__members__.values(): with self.subTest((game_version, url, version_regex)): c = curse.Curse(url, game_version) latest_version = c.get_latest_version() # something like 4.5.6, or v163 self.assertRegex(latest_version, version_regex)
def test_extract_archive_with_multiple_folders(self): with tempfile.TemporaryDirectory() as temp_dir: self.extractAddon('some-fake-addon-with-many-folders.zip', temp_dir, curse.Curse("", GameVersion.retail)) self.assertExtractionSuccess(temp_dir, 'FolderA', 'sub-folder', 'file1.txt') self.assertExtractionSuccess(temp_dir, 'FolderB', 'fileB.txt') self.assertExtractionSuccess(temp_dir, 'FolderC', 'fileC.txt')
def test_curse_versions_parsing(self): # The curse object is a throwaway here _ = version_test_data[1] d = curse.Curse(_.url, GameVersion.retail, AddonVersion.release) # This mock pulls a static example of a curse addon files page for testing expected_results = [(AddonVersion.release, 'v1.12.5'), (AddonVersion.beta, 'v1.12.0-beta-2'), (AddonVersion.alpha, 'v9.0.1-alpha-8')] for addon_version, expected_value in expected_results: with self.subTest((addon_version, expected_value)): d.addon_version = addon_version self.assertEqual(d.get_latest_version(), expected_value)
def test_curse_unsupported_game_version(self): # classiccodex should throw an version error when searching for an # unsupported retail game version classiccodex = version_test_data[0] c = curse.Curse(classiccodex.url, GameVersion.retail) self.assertRaises(curse.SiteError, c.get_latest_version)
def setUp(self): self.url = 'https://www.curseforge.com/wow/addons/bartender4' self.curse = curse.Curse(self.url, GameVersion.retail)
def setUp(self): self.url = 'https://www.curseforge.com/wow/addons/bartender4' self.curse = curse.Curse(self.url)