Skip to content

Commit

Permalink
whoops, might wanna fix the rest of the title check tests too..
Browse files Browse the repository at this point in the history
  • Loading branch information
GloriousEggroll committed Oct 15, 2024
1 parent e3b259c commit 877c6dc
Showing 1 changed file with 36 additions and 74 deletions.
110 changes: 36 additions & 74 deletions protonfixes_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -293,114 +293,76 @@ def testGetGameName(self):
self.assertFalse(result, 'Expected an empty string')

def testGetGameNameDB(self):
"""Set UMU_ID and access umu database
Reads from a local CSV file for a title name to be displayed
if a UMU_ID is supplied.
"""
"""Set UMU_ID and access umu database"""
os.environ['UMU_ID'] = 'umu-35140'
os.environ['STORE'] = 'gog'
os.environ['WINEPREFIX'] = self.pfx
os.environ['WINEPREFIX'] = str(self.pfx) # Convert PosixPath to string

# Mock CSV content
csv_content = """Batman: Arkham Asylum Game of the Year Edition,gog,1482504285,umu-35140,,"""

with patch('builtins.open', mock_open(read_data=csv_content)):
func = fix.get_game_name # Reference the function directly
func = fix.get_game_name
result = func()
self.assertEqual(result, 'Batman: Arkham Asylum Game of the Year Edition')

def testGetGameNameDBTimeout(self):
"""Set UMU_ID and access umu database
Mock the TimeoutError
"""
def testGetGameNameDBFileNotFound(self):
"""Set UMU_ID and simulate FileNotFoundError for the CSV file"""
os.environ['UMU_ID'] = 'umu-35140'
os.environ['WINEPREFIX'] = self.pfx.as_posix()
# Mock a valid umu db response
with (
patch.object(fix, 'check_internet', return_value=True),
patch.object(urllib.request, 'urlopen') as mock_function,
):
mock_function.side_effect = TimeoutError
func = fix.get_game_name.__wrapped__ # Do not reference the cache
os.environ['STORE'] = 'gog'
os.environ['WINEPREFIX'] = str(self.pfx)

with patch('builtins.open', side_effect=FileNotFoundError):
func = fix.get_game_name
result = func()
self.assertEqual(result, 'UNKNOWN')

def testGetGameNameDbOS(self):
"""Set UMU_ID and access umu database
Mock the OSError, which only shown if debugging is enabled
"""
"""Set UMU_ID and simulate OSError when accessing the CSV file"""
os.environ['UMU_ID'] = 'umu-35140'
os.environ['WINEPREFIX'] = self.pfx.as_posix()
os.environ['DEBUG'] = '1'
# Mock a valid umu db response
with (
patch.object(fix, 'check_internet', return_value=True),
patch.object(urllib.request, 'urlopen') as mock_function,
):
mock_function.side_effect = OSError
func = fix.get_game_name.__wrapped__ # Do not reference the cache
os.environ['STORE'] = 'gog'
os.environ['WINEPREFIX'] = str(self.pfx)

with patch('builtins.open', side_effect=OSError):
func = fix.get_game_name
result = func()
self.assertEqual(result, 'UNKNOWN')

def testGetGameNameDbIndex(self):
"""Set UMU_ID and access umu database
Mock the IndexError
"""
"""Set UMU_ID and simulate IndexError with malformed CSV data"""
os.environ['UMU_ID'] = 'umu-35140'
os.environ['WINEPREFIX'] = self.pfx.as_posix()
os.environ['DEBUG'] = '1'
# Mock a valid umu db response
with (
patch.object(fix, 'check_internet', return_value=True),
patch.object(urllib.request, 'urlopen') as mock_function,
):
mock_function.side_effect = IndexError
func = fix.get_game_name.__wrapped__ # Do not reference the cache
os.environ['STORE'] = 'gog'
os.environ['WINEPREFIX'] = str(self.pfx)

# Mock CSV content with missing columns
csv_content = """Batman: Arkham Asylum Game of the Year Edition,gog"""

with patch('builtins.open', mock_open(read_data=csv_content)):
func = fix.get_game_name
result = func()
self.assertEqual(result, 'UNKNOWN')

def testGetGameNameDbUnicode(self):
"""Set UMU_ID and access umu database
Mock the UnicodeError
"""
"""Set UMU_ID and simulate UnicodeDecodeError when reading the CSV file"""
os.environ['UMU_ID'] = 'umu-35140'
os.environ['WINEPREFIX'] = self.pfx.as_posix()
os.environ['DEBUG'] = '1'

def mock_urlopen_raise_error(*args, **kwargs):
raise UnicodeDecodeError('utf-8', b'', 0, 1, '')

# Mock a valid umu db response
with (
patch.object(fix, 'check_internet', return_value=True),
patch.object(urllib.request, 'urlopen') as mock_function,
):
mock_function.side_effect = mock_urlopen_raise_error
func = fix.get_game_name.__wrapped__ # Do not reference the cache
os.environ['STORE'] = 'gog'
os.environ['WINEPREFIX'] = str(self.pfx)

with patch('builtins.open', side_effect=UnicodeDecodeError('utf-8', b'', 0, 1, '')):
func = fix.get_game_name
result = func()
self.assertEqual(result, 'UNKNOWN')

def testGetGameNameNoManifest(self):
"""Do not set UMU_ID and try to get the title from the steam app
library
UNKNOWN should be returned because no manifest file will exist in the
test directory
"""
"""Do not set UMU_ID and try to get the title from the steam app library"""
os.environ['SteamAppId'] = '1628350'
os.environ['WINEPREFIX'] = self.pfx.as_posix()
os.environ['WINEPREFIX'] = str(self.pfx)
os.environ['PWD'] = os.environ['WINEPREFIX']
steamapps = self.pfx.joinpath('steamapps')
steamapps.mkdir()
func = fix.get_game_name.__wrapped__ # Do not reference the cache
steamapps = os.path.join(self.pfx, 'steamapps')
os.makedirs(steamapps, exist_ok=True)
func = fix.get_game_name
result = func()
self.assertEqual(result, 'UNKNOWN')


if __name__ == '__main__':
unittest.main()

0 comments on commit 877c6dc

Please sign in to comment.