Make dump_and_load_then_compare default to using a temporary directory
Dump path format variables all need to be strings
This commit is contained in:
parent
a932893edc
commit
e0809b7a8d
@ -75,9 +75,9 @@ class FormatParameters(TypedDict, total=False):
|
||||
# uppercase BSC ADV EXT
|
||||
difficulty: str
|
||||
# 0-based
|
||||
difficulty_index: int
|
||||
difficulty_index: str
|
||||
# 1-based
|
||||
difficulty_number: int
|
||||
difficulty_number: str
|
||||
dedup: str
|
||||
|
||||
|
||||
@ -85,8 +85,8 @@ def extract_format_params(chartfile: ChartFile, dedup_index: int) -> FormatParam
|
||||
return FormatParameters(
|
||||
title=chartfile.song.metadata.title or "",
|
||||
difficulty=chartfile.difficulty,
|
||||
difficulty_index=DIFFICULTY_INDEX.get(chartfile.difficulty, 3),
|
||||
difficulty_number=DIFFICULTY_NUMBER.get(chartfile.difficulty, 4),
|
||||
difficulty_index=str(DIFFICULTY_INDEX.get(chartfile.difficulty, 2)),
|
||||
difficulty_number=str(DIFFICULTY_NUMBER.get(chartfile.difficulty, 3)),
|
||||
dedup="" if dedup_index == 0 else f"-{dedup_index}",
|
||||
)
|
||||
|
||||
|
@ -13,7 +13,7 @@ from jubeatools.formats.jubeat_analyser.memo.load import MemoParser
|
||||
from jubeatools.testutils import strategies as jbst
|
||||
from jubeatools.testutils.test_patterns import dump_and_load_then_compare
|
||||
|
||||
from ..test_utils import memo_compatible_song, temp_file_named_txt
|
||||
from ..test_utils import memo_compatible_song
|
||||
from . import example1, example2, example3
|
||||
|
||||
|
||||
@ -48,7 +48,6 @@ def test_that_full_chart_roundtrips(song: song.Song, circle_free: bool) -> None:
|
||||
dump_and_load_then_compare(
|
||||
Format.MEMO,
|
||||
song,
|
||||
temp_path=temp_file_named_txt(),
|
||||
bytes_decoder=lambda b: b.decode("shift-jis-2004", errors="surrogateescape"),
|
||||
dump_options={"circle_free": circle_free},
|
||||
)
|
||||
|
@ -12,7 +12,7 @@ from jubeatools.formats.jubeat_analyser.memo1.load import Memo1Parser
|
||||
from jubeatools.testutils.strategies import notes as notes_strat
|
||||
from jubeatools.testutils.test_patterns import dump_and_load_then_compare
|
||||
|
||||
from ..test_utils import memo_compatible_song, temp_file_named_txt
|
||||
from ..test_utils import memo_compatible_song
|
||||
from . import example1
|
||||
|
||||
|
||||
@ -44,7 +44,6 @@ def test_that_full_chart_roundtrips(song: song.Song, circle_free: bool) -> None:
|
||||
dump_and_load_then_compare(
|
||||
Format.MEMO_1,
|
||||
song,
|
||||
temp_path=temp_file_named_txt(),
|
||||
bytes_decoder=lambda b: b.decode("shift-jis-2004", errors="surrogateescape"),
|
||||
dump_options={"circle_free": circle_free},
|
||||
)
|
||||
|
@ -22,7 +22,7 @@ from jubeatools.song import (
|
||||
from jubeatools.testutils.strategies import notes as notes_strat
|
||||
from jubeatools.testutils.test_patterns import dump_and_load_then_compare
|
||||
|
||||
from ..test_utils import memo_compatible_song, temp_file_named_txt
|
||||
from ..test_utils import memo_compatible_song
|
||||
from . import example1, example2, example3
|
||||
|
||||
|
||||
@ -55,7 +55,6 @@ def test_that_full_chart_roundtrips(song: Song, circle_free: bool) -> None:
|
||||
dump_and_load_then_compare(
|
||||
Format.MEMO_2,
|
||||
song,
|
||||
temp_path=temp_file_named_txt(),
|
||||
bytes_decoder=lambda b: b.decode("shift-jis-2004", errors="surrogateescape"),
|
||||
dump_options={"circle_free": circle_free},
|
||||
)
|
||||
|
@ -24,7 +24,7 @@ from jubeatools.testutils.strategies import notes as notes_strat
|
||||
from jubeatools.testutils.strategies import tap_note
|
||||
from jubeatools.testutils.test_patterns import dump_and_load_then_compare
|
||||
|
||||
from ..test_utils import memo_compatible_song, temp_file_named_txt
|
||||
from ..test_utils import memo_compatible_song
|
||||
|
||||
|
||||
@given(st.sets(tap_note(), min_size=1, max_size=100))
|
||||
@ -88,7 +88,6 @@ def test_that_full_chart_roundtrips(song: Song, circle_free: bool) -> None:
|
||||
dump_and_load_then_compare(
|
||||
Format.MONO_COLUMN,
|
||||
song,
|
||||
temp_path=temp_file_named_txt(),
|
||||
bytes_decoder=lambda b: b.decode("shift-jis-2004", errors="surrogateescape"),
|
||||
dump_options={"circle_free": circle_free},
|
||||
)
|
||||
|
@ -2,7 +2,7 @@ from hypothesis import given
|
||||
|
||||
from jubeatools import song
|
||||
from jubeatools.formats import Format
|
||||
from jubeatools.formats.konami.testutils import eve_compatible_song, open_temp_dir
|
||||
from jubeatools.formats.konami.testutils import eve_compatible_song
|
||||
from jubeatools.testutils.test_patterns import dump_and_load_then_compare
|
||||
|
||||
|
||||
@ -11,7 +11,6 @@ def test_that_full_chart_roundtrips(song: song.Song) -> None:
|
||||
dump_and_load_then_compare(
|
||||
Format.EVE,
|
||||
song,
|
||||
temp_path=open_temp_dir(),
|
||||
bytes_decoder=lambda b: b.decode("ascii"),
|
||||
load_options={"beat_snap": 12},
|
||||
)
|
||||
|
@ -2,7 +2,7 @@ from hypothesis import given
|
||||
|
||||
from jubeatools import song
|
||||
from jubeatools.formats import Format
|
||||
from jubeatools.formats.konami.testutils import eve_compatible_song, open_temp_dir
|
||||
from jubeatools.formats.konami.testutils import eve_compatible_song
|
||||
from jubeatools.testutils.test_patterns import dump_and_load_then_compare
|
||||
|
||||
from .construct import jbsq
|
||||
@ -13,7 +13,6 @@ def test_that_full_chart_roundtrips(song: song.Song) -> None:
|
||||
dump_and_load_then_compare(
|
||||
Format.JBSQ,
|
||||
song,
|
||||
temp_path=open_temp_dir(),
|
||||
bytes_decoder=lambda b: str(jbsq.parse(b)),
|
||||
load_options={"beat_snap": 12},
|
||||
)
|
||||
|
@ -1,8 +1,4 @@
|
||||
import tempfile
|
||||
from contextlib import contextmanager
|
||||
from decimal import Decimal
|
||||
from pathlib import Path
|
||||
from typing import Iterator
|
||||
|
||||
from hypothesis import strategies as st
|
||||
|
||||
@ -53,9 +49,3 @@ def eve_compatible_song(draw: DrawFunc) -> song.Song:
|
||||
metadata=song.Metadata(),
|
||||
charts={diff: chart},
|
||||
)
|
||||
|
||||
|
||||
@contextmanager
|
||||
def open_temp_dir() -> Iterator[Path]:
|
||||
with tempfile.TemporaryDirectory() as temp_dir:
|
||||
yield Path(temp_dir)
|
||||
|
@ -8,7 +8,6 @@ from hypothesis import strategies as st
|
||||
|
||||
from jubeatools import song
|
||||
from jubeatools.formats import Format
|
||||
from jubeatools.formats.konami.testutils import open_temp_dir
|
||||
from jubeatools.formats.malody import schema as malody
|
||||
from jubeatools.formats.malody.dump import dump_malody_chart
|
||||
from jubeatools.testutils import strategies as jbst
|
||||
@ -50,7 +49,6 @@ def test_that_full_chart_roundtrips(s: song.Song) -> None:
|
||||
dump_and_load_then_compare(
|
||||
Format.MALODY,
|
||||
s,
|
||||
temp_path=open_temp_dir(),
|
||||
bytes_decoder=lambda b: b.decode("utf-8"),
|
||||
)
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
import tempfile
|
||||
from contextlib import contextmanager
|
||||
from pathlib import Path
|
||||
from typing import Callable, ContextManager, Optional
|
||||
from typing import Callable, ContextManager, Iterator, Optional
|
||||
|
||||
from hypothesis import note
|
||||
|
||||
@ -9,11 +11,17 @@ from jubeatools.formats.enum import Format
|
||||
from jubeatools.formats.guess import guess_format
|
||||
|
||||
|
||||
@contextmanager
|
||||
def open_temp_dir() -> Iterator[Path]:
|
||||
with tempfile.TemporaryDirectory() as temp_dir:
|
||||
yield Path(temp_dir)
|
||||
|
||||
|
||||
def dump_and_load_then_compare(
|
||||
format_: Format,
|
||||
song: song.Song,
|
||||
temp_path: ContextManager[Path],
|
||||
bytes_decoder: Callable[[bytes], str],
|
||||
temp_path: Callable[[], ContextManager[Path]] = open_temp_dir,
|
||||
load_options: Optional[dict] = None,
|
||||
dump_options: Optional[dict] = None,
|
||||
) -> None:
|
||||
@ -21,7 +29,7 @@ def dump_and_load_then_compare(
|
||||
dump_options = dump_options or {}
|
||||
loader = LOADERS[format_]
|
||||
dumper = DUMPERS[format_]
|
||||
with temp_path as folder_path:
|
||||
with temp_path() as folder_path:
|
||||
files = dumper(song, folder_path, **dump_options)
|
||||
for file_path, bytes_ in files.items():
|
||||
file_path.write_bytes(bytes_)
|
||||
|
Loading…
Reference in New Issue
Block a user