This is an experimental copy for testing Poikilos' issue mirroring system. Note that Gitea's migration tool can import issues, but the "Issues" checkbox is disabled when "This repository will be a mirror" is enabled (it is for this repo).
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

153 lines
4.9 KiB

import os
import sys
import unittest
TESTS_DIR = os.path.dirname(os.path.realpath(__file__))
REPO_DIR = os.path.dirname(TESTS_DIR)
TESTS_DATA_DIR = os.path.join(TESTS_DIR, "data")
if __name__ == "__main__":
# Allow it to run without pytest.
sys.path.insert(0, REPO_DIR)
from pyenliven.mtpatches import ( # noqa F402
get_shallowest_files_sub,
diff_only_head,
find_mod,
find_modpack,
)
class TestMTPatches(unittest.TestCase):
def test_get_shallowest_files_sub(self):
sub = get_shallowest_files_sub(
os.path.join(TESTS_DATA_DIR, "base")
)
self.assertEqual(sub, os.path.join("unused", "sub", "has_file"))
# ^ should be "has_file" dir, since that contains
# "shallowest_in_base.txt"
def test_get_shallowest_files_not_in_sub(self):
sub = get_shallowest_files_sub(
os.path.join(TESTS_DATA_DIR, "base", "unused", "sub", "has_file"),
log_level=1,
)
self.assertEqual(sub, "")
# ^ should be "has_file" dir, since that contains
# "shallowest_in_base.txt"
def test_diff_only_head__different_file(self):
base = os.path.join(TESTS_DATA_DIR, "base", "unused", "sub")
head = os.path.join(TESTS_DATA_DIR, "head", "unused", "sub")
# ^ use deeper dir to skip new file in head/unused/
# (See test_diff_only_head__new_file for that).
diffs = diff_only_head(
base,
head,
)
self.assertEqual(
diffs,
[
{
'rel': os.path.join("has_file", "shallowest_in_base.txt"),
'code': 1,
},
]
)
def test_diff_only_head__new_file(self):
base = os.path.join(TESTS_DATA_DIR, "base")
head = os.path.join(TESTS_DATA_DIR, "head")
diffs = diff_only_head(
base,
head,
)
self.assertEqual(
diffs,
[
{
'rel': os.path.join("unused", "sub", "has_file",
"shallowest_in_base.txt"),
'code': 1,
},
{
'rel': os.path.join("unused", "shallower_file.txt"),
'code': 1,
'new': True,
},
]
)
def test_diff_only_head__same(self):
base = os.path.join(TESTS_DATA_DIR, "base-same")
head = os.path.join(TESTS_DATA_DIR, "head-same")
diffs = diff_only_head(
base,
head,
)
# Same except ignore extra_file_to_ignore.txt:
self.assertFalse(diffs) # assert same (ignoring base extra file(s))
def test_find_mod(self):
game_path = os.path.join(TESTS_DATA_DIR, "mod_game")
self.assertEqual(
find_mod(game_path, "wrong_mod"),
None
)
self.assertEqual(
find_mod(game_path, "mod1"),
os.path.join("mods", "extra_parent", "modpack1", "mod1")
)
self.assertEqual(
find_mod(os.path.join(TESTS_DATA_DIR, "modpack_game"), "mod2"),
os.path.join("mods", "extra_parent", "modpack2", "mod2")
)
self.assertEqual(
find_mod(os.path.join(game_path, "mods", "extra_parent",
"modpack1", "mod1"),
"mod1"), # Yes, should still find mod1 ("") if root
""
)
self.assertEqual(
find_mod(os.path.join(game_path, "mods"), "mod1"),
os.path.join("extra_parent", "modpack1", "mod1"),
)
def test_find_modpack(self):
game_path = os.path.join(TESTS_DATA_DIR, "modpack_game")
self.assertEqual(
find_modpack(game_path, "wrong_modpack"),
None
)
self.assertEqual(
find_modpack(game_path, "modpack1"),
os.path.join("mods", "extra_parent", "modpack1")
)
self.assertEqual(
find_modpack(os.path.join(TESTS_DATA_DIR, "modpack_game"),
"modpack2"),
os.path.join("mods", "extra_parent", "modpack2")
)
self.assertEqual(
find_modpack(os.path.join(game_path, "mods", "extra_parent",
"modpack1"),
"modpack1"), # Yes, still find mod1 ("") if root
""
)
self.assertEqual(
find_modpack(os.path.join(game_path, "mods", "extra_parent",
"modpack2"),
"modpack2"), # Yes, still find mod1 ("") if root
""
)
self.assertEqual(
find_modpack(os.path.join(game_path, "mods"), "modpack1"),
os.path.join("extra_parent", "modpack1"),
)
if __name__ == "__main__":
unittest.main()