Read simple data cases automatically (#3034)
Co-authored-by: Felix Hildén <felix.hilden@gmail.com>
This commit is contained in:
parent
20d8ccb542
commit
fc2a16433e
@ -179,8 +179,8 @@ def test_piping_diff(self) -> None:
|
||||
r"(STDIN|STDOUT)\t\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d\.\d\d\d\d\d\d "
|
||||
r"\+\d\d\d\d"
|
||||
)
|
||||
source, _ = read_data("expression.py")
|
||||
expected, _ = read_data("expression.diff")
|
||||
source, _ = read_data("simple_cases/expression.py")
|
||||
expected, _ = read_data("simple_cases/expression.diff")
|
||||
args = [
|
||||
"-",
|
||||
"--fast",
|
||||
@ -197,7 +197,7 @@ def test_piping_diff(self) -> None:
|
||||
self.assertEqual(expected, actual)
|
||||
|
||||
def test_piping_diff_with_color(self) -> None:
|
||||
source, _ = read_data("expression.py")
|
||||
source, _ = read_data("simple_cases/expression.py")
|
||||
args = [
|
||||
"-",
|
||||
"--fast",
|
||||
@ -241,7 +241,7 @@ def test_pep_572_version_detection(self) -> None:
|
||||
self.assertIn(black.TargetVersion.PY38, versions)
|
||||
|
||||
def test_expression_ff(self) -> None:
|
||||
source, expected = read_data("expression")
|
||||
source, expected = read_data("simple_cases/expression.py")
|
||||
tmp_file = Path(black.dump_to_file(source))
|
||||
try:
|
||||
self.assertTrue(ff(tmp_file, write_back=black.WriteBack.YES))
|
||||
@ -255,8 +255,8 @@ def test_expression_ff(self) -> None:
|
||||
black.assert_stable(source, actual, DEFAULT_MODE)
|
||||
|
||||
def test_expression_diff(self) -> None:
|
||||
source, _ = read_data("expression.py")
|
||||
expected, _ = read_data("expression.diff")
|
||||
source, _ = read_data("simple_cases/expression.py")
|
||||
expected, _ = read_data("simple_cases/expression.diff")
|
||||
tmp_file = Path(black.dump_to_file(source))
|
||||
diff_header = re.compile(
|
||||
rf"{re.escape(str(tmp_file))}\t\d\d\d\d-\d\d-\d\d "
|
||||
@ -281,8 +281,8 @@ def test_expression_diff(self) -> None:
|
||||
self.assertEqual(expected, actual, msg)
|
||||
|
||||
def test_expression_diff_with_color(self) -> None:
|
||||
source, _ = read_data("expression.py")
|
||||
expected, _ = read_data("expression.diff")
|
||||
source, _ = read_data("simple_cases/expression.py")
|
||||
expected, _ = read_data("simple_cases/expression.diff")
|
||||
tmp_file = Path(black.dump_to_file(source))
|
||||
try:
|
||||
result = BlackRunner().invoke(
|
||||
@ -320,7 +320,7 @@ def test_string_quotes(self) -> None:
|
||||
black.assert_stable(source, not_normalized, mode=mode)
|
||||
|
||||
def test_skip_magic_trailing_comma(self) -> None:
|
||||
source, _ = read_data("expression.py")
|
||||
source, _ = read_data("simple_cases/expression.py")
|
||||
expected, _ = read_data("expression_skip_magic_trailing_comma.diff")
|
||||
tmp_file = Path(black.dump_to_file(source))
|
||||
diff_header = re.compile(
|
||||
@ -755,7 +755,7 @@ def test_get_features_used(self) -> None:
|
||||
self.assertEqual(black.get_features_used(node), {Feature.NUMERIC_UNDERSCORES})
|
||||
node = black.lib2to3_parse("123456\n")
|
||||
self.assertEqual(black.get_features_used(node), set())
|
||||
source, expected = read_data("function")
|
||||
source, expected = read_data("simple_cases/function.py")
|
||||
node = black.lib2to3_parse(source)
|
||||
expected_features = {
|
||||
Feature.TRAILING_COMMA_IN_CALL,
|
||||
@ -765,7 +765,7 @@ def test_get_features_used(self) -> None:
|
||||
self.assertEqual(black.get_features_used(node), expected_features)
|
||||
node = black.lib2to3_parse(expected)
|
||||
self.assertEqual(black.get_features_used(node), expected_features)
|
||||
source, expected = read_data("expression")
|
||||
source, expected = read_data("simple_cases/expression.py")
|
||||
node = black.lib2to3_parse(source)
|
||||
self.assertEqual(black.get_features_used(node), set())
|
||||
node = black.lib2to3_parse(expected)
|
||||
@ -939,7 +939,7 @@ def test_check_diff_use_together(self) -> None:
|
||||
src1 = (THIS_DIR / "data" / "string_quotes.py").resolve()
|
||||
self.invokeBlack([str(src1), "--diff", "--check"], exit_code=1)
|
||||
# Files which will not be reformatted.
|
||||
src2 = (THIS_DIR / "data" / "composition.py").resolve()
|
||||
src2 = (THIS_DIR / "data" / "simple_cases" / "composition.py").resolve()
|
||||
self.invokeBlack([str(src2), "--diff", "--check"])
|
||||
# Multi file command.
|
||||
self.invokeBlack([str(src1), str(src2), "--diff", "--check"], exit_code=1)
|
||||
@ -1168,7 +1168,7 @@ def test_reformat_one_with_stdin_and_existing_path(self) -> None:
|
||||
report = MagicMock()
|
||||
# Even with an existing file, since we are forcing stdin, black
|
||||
# should output to stdout and not modify the file inplace
|
||||
p = Path(str(THIS_DIR / "data/collections.py"))
|
||||
p = THIS_DIR / "data" / "simple_cases" / "collections.py"
|
||||
# Make sure is_file actually returns True
|
||||
self.assertTrue(p.is_file())
|
||||
path = Path(f"__BLACK_STDIN_FILENAME__{p}")
|
||||
|
@ -12,56 +12,9 @@
|
||||
assert_format,
|
||||
dump_to_stderr,
|
||||
read_data,
|
||||
all_data_cases,
|
||||
)
|
||||
|
||||
SIMPLE_CASES: List[str] = [
|
||||
"attribute_access_on_number_literals",
|
||||
"beginning_backslash",
|
||||
"bracketmatch",
|
||||
"class_blank_parentheses",
|
||||
"class_methods_new_line",
|
||||
"collections",
|
||||
"comments",
|
||||
"comments2",
|
||||
"comments3",
|
||||
"comments4",
|
||||
"comments5",
|
||||
"comments6",
|
||||
"comments_non_breaking_space",
|
||||
"comment_after_escaped_newline",
|
||||
"composition",
|
||||
"composition_no_trailing_comma",
|
||||
"docstring",
|
||||
"empty_lines",
|
||||
"expression",
|
||||
"fmtonoff",
|
||||
"fmtonoff2",
|
||||
"fmtonoff3",
|
||||
"fmtonoff4",
|
||||
"fmtskip",
|
||||
"fmtskip2",
|
||||
"fmtskip3",
|
||||
"fmtskip4",
|
||||
"fmtskip5",
|
||||
"fmtskip6",
|
||||
"fmtskip7",
|
||||
"fstring",
|
||||
"function",
|
||||
"function2",
|
||||
"function_trailing_comma",
|
||||
"import_spacing",
|
||||
"power_op_spacing",
|
||||
"remove_parens",
|
||||
"slices",
|
||||
"string_prefixes",
|
||||
"torture",
|
||||
"trailing_comma_optional_parens1",
|
||||
"trailing_comma_optional_parens2",
|
||||
"trailing_comma_optional_parens3",
|
||||
"tricky_unicode_symbols",
|
||||
"tupleassign",
|
||||
]
|
||||
|
||||
PY310_CASES: List[str] = [
|
||||
"starred_for_target",
|
||||
"pattern_matching_simple",
|
||||
@ -147,7 +100,7 @@ def check_file(filename: str, mode: black.Mode, *, data: bool = True) -> None:
|
||||
assert_format(source, expected, mode, fast=False)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("filename", SIMPLE_CASES)
|
||||
@pytest.mark.parametrize("filename", all_data_cases("simple_cases"))
|
||||
def test_simple_format(filename: str) -> None:
|
||||
check_file(filename, DEFAULT_MODE)
|
||||
|
||||
|
@ -90,12 +90,21 @@ def assertFormatEqual(self, expected: str, actual: str) -> None:
|
||||
_assert_format_equal(expected, actual)
|
||||
|
||||
|
||||
def all_data_cases(dir_name: str, data: bool = True) -> List[str]:
|
||||
base_dir = DATA_DIR if data else PROJECT_ROOT
|
||||
cases_dir = base_dir / dir_name
|
||||
assert cases_dir.is_dir()
|
||||
return [f"{dir_name}/{case_path.stem}" for case_path in cases_dir.iterdir()]
|
||||
|
||||
|
||||
def read_data(name: str, data: bool = True) -> Tuple[str, str]:
|
||||
"""read_data('test_name') -> 'input', 'output'"""
|
||||
if not name.endswith((".py", ".pyi", ".out", ".diff")):
|
||||
name += ".py"
|
||||
base_dir = DATA_DIR if data else PROJECT_ROOT
|
||||
return read_data_from_file(base_dir / name)
|
||||
case_path = base_dir / name
|
||||
assert case_path.is_file(), f"{case_path} is not a file."
|
||||
return read_data_from_file(case_path)
|
||||
|
||||
|
||||
def read_data_from_file(file_name: Path) -> Tuple[str, str]:
|
||||
|
Loading…
Reference in New Issue
Block a user