1
0
mirror of synced 2025-01-23 22:54:08 +01:00

Add new test for checking dummy TJA errors

This commit is contained in:
Viv 2023-07-23 10:11:29 -04:00
parent 907ea43f16
commit 9a24b90618
2 changed files with 87 additions and 0 deletions

View File

@ -0,0 +1,17 @@
// This song contains only basic notes.
BPM:120
OFFSET:-1.00
COURSE:Oni
LEVEL:10
BALLOON:8,8
SCOREINIT:400
SCOREDIFF:100
#START
1020304,
5000008,
6000008,
7000008,
9000008,
#END

View File

@ -0,0 +1,70 @@
import os
import subprocess
from subprocess import CalledProcessError
import shutil
import glob
import traceback
import pytest
from tja2fumen import main as convert
@pytest.mark.parametrize('id_song,err_msg', [
['basic_song', None]
])
def test_expected_errors(id_song, err_msg, tmp_path, entry_point):
# Define the testing directory
path_test = os.path.dirname(os.path.realpath(__file__))
# Define the working directory
path_temp = os.path.join(tmp_path, id_song)
os.mkdir(path_temp)
# Copy input TJA to working directory
path_tja = os.path.join(path_test, "data", "dummy_tjas", f"{id_song}.tja")
path_tja_tmp = os.path.join(path_temp, f"{id_song}.tja")
shutil.copy(path_tja, path_tja_tmp)
# Try to convert TJA file to fumen files, then check the error traceback
tb = call_conversion_func(path_test, path_tja_tmp, err_msg, entry_point)
if err_msg:
assert err_msg in tb
else:
assert tb == ''
def call_conversion_func(path_test, path_tja_tmp, err_msg, entry_point):
tb = ''
if entry_point == "python-api":
if not err_msg:
convert(argv=[path_tja_tmp])
else:
with pytest.raises(ValueError) as e:
convert(argv=[path_tja_tmp])
tb = "".join(traceback.format_tb(e.tb))
elif entry_point == "python-cli":
if not err_msg:
subprocess.check_output(f"tja2fumen {path_tja_tmp}", text=True,
shell=True, stderr=subprocess.STDOUT)
else:
with pytest.raises(CalledProcessError) as e:
subprocess.check_output(f"tja2fumen {path_tja_tmp}", text=True,
shell=True, stderr=subprocess.STDOUT)
tb = e.value.output
elif entry_point == "exe":
exe_glob = os.path.join(os.path.split(path_test)[0], "dist", "*.exe")
exe = glob.glob(exe_glob)[0]
if not err_msg:
subprocess.check_output(f"{exe} {path_tja_tmp}", text=True,
shell=True, stderr=subprocess.STDOUT)
else:
with pytest.raises(CalledProcessError) as e:
subprocess.check_output(f"{exe} {path_tja_tmp}", text=True,
shell=True, stderr=subprocess.STDOUT)
tb = e.value.output
return tb