Improve custom TJA testing
This commit is contained in:
parent
5474ad0baa
commit
1faaab9e9c
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,3 +1,6 @@
|
||||
# Custom song directory
|
||||
testing/data/custom_tjas/*
|
||||
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
|
@ -25,8 +25,9 @@ dev = ["pytest", "build", "pyinstaller", "twine", "toml-cli",
|
||||
where = ["src"]
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
addopts = "-vv --tb=short"
|
||||
addopts = "-vv --tb=short --color=yes"
|
||||
console_output_style = "count"
|
||||
disable_test_id_escaping_and_forfeit_all_rights_to_community_support = "True"
|
||||
|
||||
[tool.flake8]
|
||||
exclude = "venv/"
|
||||
|
@ -10,39 +10,6 @@ from conftest import convert
|
||||
from tja2fumen.parsers import parse_fumen
|
||||
|
||||
|
||||
@pytest.mark.skipif("CI" in os.environ,
|
||||
reason="Test is only for local debugging")
|
||||
def test_converted_tja_no_comparison(tmp_path, entry_point):
|
||||
"""
|
||||
A test purely to aid with debugging. It lets me drop a .tja into a
|
||||
pre-determined folder and run the conversion, allowing me to set
|
||||
breakpoints and debug internal state without any tedious setup.
|
||||
"""
|
||||
# Define the testing directory
|
||||
path_test = os.path.dirname(os.path.realpath(__file__))
|
||||
path_test = os.path.join(path_test, "data", "unpaired_tjs")
|
||||
for fname in os.listdir(path_test):
|
||||
# Copy input TJA to working directory
|
||||
path_tja = os.path.join(path_test, fname)
|
||||
path_tja_tmp = os.path.join(tmp_path, fname)
|
||||
shutil.copy(path_tja, path_tja_tmp)
|
||||
|
||||
# Convert TJA file to fumen files
|
||||
convert(path_test, path_tja_tmp, entry_point)
|
||||
|
||||
# Fetch output fumen paths
|
||||
paths_out = glob.glob(os.path.join(tmp_path, "*.bin"))
|
||||
assert paths_out, f"No bin files generated in {tmp_path}"
|
||||
order = "xmhne" # Ura Oni -> Oni -> Hard -> Normal -> Easy
|
||||
paths_out = sorted(paths_out,
|
||||
key=lambda s: [order.index(c) if c in order
|
||||
else len(order) for c in s])
|
||||
for path_out in paths_out:
|
||||
difficulty = os.path.basename(path_out).split(".")[0].split("_")[1]
|
||||
song = parse_fumen(path_out, exclude_empty_measures=False)
|
||||
print(f"{difficulty}: {len(song.measures)}")
|
||||
|
||||
|
||||
@pytest.mark.parametrize('id_song', [
|
||||
pytest.param('butou5'),
|
||||
pytest.param('shoto9',
|
||||
|
51
testing/test_custom_tjas.py
Normal file
51
testing/test_custom_tjas.py
Normal file
@ -0,0 +1,51 @@
|
||||
import os
|
||||
import shutil
|
||||
import glob
|
||||
|
||||
import pytest
|
||||
|
||||
from conftest import convert
|
||||
from tja2fumen.parsers import parse_fumen
|
||||
|
||||
CUSTOM_TJA_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)),
|
||||
"data", "custom_tjas")
|
||||
# CUSTOM_TJA_DIR = os.path.join("D:\\", "games", "TaikoTDM",
|
||||
# "CustomSongSources", "ESE")
|
||||
CUSTOM_TJAS = sum([
|
||||
# For each file in the subfolder, keep only if it ends in `.tja`
|
||||
[(root, f) for f in files if f.endswith(".tja")]
|
||||
# Iterate through all subfolders in the "unpaired_tjas" folder
|
||||
for root, _, files in os.walk(CUSTOM_TJA_DIR)
|
||||
], []) # sum([list of lists], []) -> https://stackoverflow.com/a/716489
|
||||
CUSTOM_TJA_PATHS = [os.path.join(root, f) for (root, f) in CUSTOM_TJAS]
|
||||
CUSTOM_TJA_IDS = [f for (root, f) in CUSTOM_TJAS]
|
||||
|
||||
|
||||
@pytest.mark.parametrize('path_tja', CUSTOM_TJA_PATHS, ids=CUSTOM_TJA_IDS)
|
||||
@pytest.mark.skipif("CI" in os.environ,
|
||||
reason="Test is only for local debugging")
|
||||
def test_converted_custom_tjas(path_tja, tmp_path, entry_point):
|
||||
"""
|
||||
A test purely to aid with debugging. It lets me drop a .tja into a
|
||||
pre-determined folder and run the conversion, allowing me to set
|
||||
breakpoints and debug internal state without any tedious setup.
|
||||
"""
|
||||
# Define the testing directory
|
||||
path_test = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
# Copy input TJA to working directory
|
||||
path_tja_tmp = str(tmp_path / "test.tja")
|
||||
shutil.copy(path_tja, path_tja_tmp)
|
||||
|
||||
# Convert TJA file to fumen files
|
||||
convert(path_test, path_tja_tmp, entry_point)
|
||||
|
||||
# Fetch output fumen paths
|
||||
paths_out = glob.glob(os.path.join(tmp_path, "*.bin"))
|
||||
assert paths_out, f"No bin files generated in {tmp_path}"
|
||||
order = "xmhne" # Ura Oni -> Oni -> Hard -> Normal -> Easy
|
||||
paths_out = sorted(paths_out,
|
||||
key=lambda s: [order.index(c) if c in order
|
||||
else len(order) for c in s])
|
||||
for path_out in paths_out:
|
||||
parse_fumen(path_out, exclude_empty_measures=False)
|
Loading…
Reference in New Issue
Block a user