Skip to content

Commit

Permalink
Read simple data cases automatically (#3034)
Browse files Browse the repository at this point in the history
Co-authored-by: Felix Hildén <felix.hilden@gmail.com>
  • Loading branch information
saroad2 and felix-hilden authored May 8, 2022
1 parent 20d8ccb commit fc2a164
Show file tree
Hide file tree
Showing 49 changed files with 25 additions and 63 deletions.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
26 changes: 13 additions & 13 deletions tests/test_black.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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",
Expand Down Expand Up @@ -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))
Expand All @@ -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 "
Expand All @@ -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(
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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,
Expand All @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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}")
Expand Down
51 changes: 2 additions & 49 deletions tests/test_format.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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)

Expand Down
11 changes: 10 additions & 1 deletion tests/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -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]:
Expand Down

0 comments on commit fc2a164

Please sign in to comment.