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"(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"
|
r"\+\d\d\d\d"
|
||||||
)
|
)
|
||||||
source, _ = read_data("expression.py")
|
source, _ = read_data("simple_cases/expression.py")
|
||||||
expected, _ = read_data("expression.diff")
|
expected, _ = read_data("simple_cases/expression.diff")
|
||||||
args = [
|
args = [
|
||||||
"-",
|
"-",
|
||||||
"--fast",
|
"--fast",
|
||||||
@ -197,7 +197,7 @@ def test_piping_diff(self) -> None:
|
|||||||
self.assertEqual(expected, actual)
|
self.assertEqual(expected, actual)
|
||||||
|
|
||||||
def test_piping_diff_with_color(self) -> None:
|
def test_piping_diff_with_color(self) -> None:
|
||||||
source, _ = read_data("expression.py")
|
source, _ = read_data("simple_cases/expression.py")
|
||||||
args = [
|
args = [
|
||||||
"-",
|
"-",
|
||||||
"--fast",
|
"--fast",
|
||||||
@ -241,7 +241,7 @@ def test_pep_572_version_detection(self) -> None:
|
|||||||
self.assertIn(black.TargetVersion.PY38, versions)
|
self.assertIn(black.TargetVersion.PY38, versions)
|
||||||
|
|
||||||
def test_expression_ff(self) -> None:
|
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))
|
tmp_file = Path(black.dump_to_file(source))
|
||||||
try:
|
try:
|
||||||
self.assertTrue(ff(tmp_file, write_back=black.WriteBack.YES))
|
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)
|
black.assert_stable(source, actual, DEFAULT_MODE)
|
||||||
|
|
||||||
def test_expression_diff(self) -> None:
|
def test_expression_diff(self) -> None:
|
||||||
source, _ = read_data("expression.py")
|
source, _ = read_data("simple_cases/expression.py")
|
||||||
expected, _ = read_data("expression.diff")
|
expected, _ = read_data("simple_cases/expression.diff")
|
||||||
tmp_file = Path(black.dump_to_file(source))
|
tmp_file = Path(black.dump_to_file(source))
|
||||||
diff_header = re.compile(
|
diff_header = re.compile(
|
||||||
rf"{re.escape(str(tmp_file))}\t\d\d\d\d-\d\d-\d\d "
|
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)
|
self.assertEqual(expected, actual, msg)
|
||||||
|
|
||||||
def test_expression_diff_with_color(self) -> None:
|
def test_expression_diff_with_color(self) -> None:
|
||||||
source, _ = read_data("expression.py")
|
source, _ = read_data("simple_cases/expression.py")
|
||||||
expected, _ = read_data("expression.diff")
|
expected, _ = read_data("simple_cases/expression.diff")
|
||||||
tmp_file = Path(black.dump_to_file(source))
|
tmp_file = Path(black.dump_to_file(source))
|
||||||
try:
|
try:
|
||||||
result = BlackRunner().invoke(
|
result = BlackRunner().invoke(
|
||||||
@ -320,7 +320,7 @@ def test_string_quotes(self) -> None:
|
|||||||
black.assert_stable(source, not_normalized, mode=mode)
|
black.assert_stable(source, not_normalized, mode=mode)
|
||||||
|
|
||||||
def test_skip_magic_trailing_comma(self) -> None:
|
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")
|
expected, _ = read_data("expression_skip_magic_trailing_comma.diff")
|
||||||
tmp_file = Path(black.dump_to_file(source))
|
tmp_file = Path(black.dump_to_file(source))
|
||||||
diff_header = re.compile(
|
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})
|
self.assertEqual(black.get_features_used(node), {Feature.NUMERIC_UNDERSCORES})
|
||||||
node = black.lib2to3_parse("123456\n")
|
node = black.lib2to3_parse("123456\n")
|
||||||
self.assertEqual(black.get_features_used(node), set())
|
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)
|
node = black.lib2to3_parse(source)
|
||||||
expected_features = {
|
expected_features = {
|
||||||
Feature.TRAILING_COMMA_IN_CALL,
|
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)
|
self.assertEqual(black.get_features_used(node), expected_features)
|
||||||
node = black.lib2to3_parse(expected)
|
node = black.lib2to3_parse(expected)
|
||||||
self.assertEqual(black.get_features_used(node), expected_features)
|
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)
|
node = black.lib2to3_parse(source)
|
||||||
self.assertEqual(black.get_features_used(node), set())
|
self.assertEqual(black.get_features_used(node), set())
|
||||||
node = black.lib2to3_parse(expected)
|
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()
|
src1 = (THIS_DIR / "data" / "string_quotes.py").resolve()
|
||||||
self.invokeBlack([str(src1), "--diff", "--check"], exit_code=1)
|
self.invokeBlack([str(src1), "--diff", "--check"], exit_code=1)
|
||||||
# Files which will not be reformatted.
|
# 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"])
|
self.invokeBlack([str(src2), "--diff", "--check"])
|
||||||
# Multi file command.
|
# Multi file command.
|
||||||
self.invokeBlack([str(src1), str(src2), "--diff", "--check"], exit_code=1)
|
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()
|
report = MagicMock()
|
||||||
# Even with an existing file, since we are forcing stdin, black
|
# Even with an existing file, since we are forcing stdin, black
|
||||||
# should output to stdout and not modify the file inplace
|
# 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
|
# Make sure is_file actually returns True
|
||||||
self.assertTrue(p.is_file())
|
self.assertTrue(p.is_file())
|
||||||
path = Path(f"__BLACK_STDIN_FILENAME__{p}")
|
path = Path(f"__BLACK_STDIN_FILENAME__{p}")
|
||||||
|
@ -12,56 +12,9 @@
|
|||||||
assert_format,
|
assert_format,
|
||||||
dump_to_stderr,
|
dump_to_stderr,
|
||||||
read_data,
|
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] = [
|
PY310_CASES: List[str] = [
|
||||||
"starred_for_target",
|
"starred_for_target",
|
||||||
"pattern_matching_simple",
|
"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)
|
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:
|
def test_simple_format(filename: str) -> None:
|
||||||
check_file(filename, DEFAULT_MODE)
|
check_file(filename, DEFAULT_MODE)
|
||||||
|
|
||||||
|
@ -90,12 +90,21 @@ def assertFormatEqual(self, expected: str, actual: str) -> None:
|
|||||||
_assert_format_equal(expected, actual)
|
_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]:
|
def read_data(name: str, data: bool = True) -> Tuple[str, str]:
|
||||||
"""read_data('test_name') -> 'input', 'output'"""
|
"""read_data('test_name') -> 'input', 'output'"""
|
||||||
if not name.endswith((".py", ".pyi", ".out", ".diff")):
|
if not name.endswith((".py", ".pyi", ".out", ".diff")):
|
||||||
name += ".py"
|
name += ".py"
|
||||||
base_dir = DATA_DIR if data else PROJECT_ROOT
|
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]:
|
def read_data_from_file(file_name: Path) -> Tuple[str, str]:
|
||||||
|
Loading…
Reference in New Issue
Block a user