def test_ufmt_paths_config(self): with TemporaryDirectory() as td: td = Path(td).resolve() md = td / "foo" md.mkdir() f1 = md / "__init__.py" f2 = md / "foo.py" sd = md / "frob/" sd.mkdir() f3 = sd / "main.py" for f in f1, f2, f3: f.write_text(POORLY_FORMATTED_CODE) pyproj = td / "pyproject.toml" pyproj.write_text(FAKE_CONFIG) file_wrapper = Mock(name="ufmt_file", wraps=ufmt.ufmt_file) with patch("ufmt.core.ufmt_file", file_wrapper): ufmt.ufmt_paths([td]) file_wrapper.assert_has_calls( [ call(f2, dry_run=False, diff=False), ], any_order=True, ) self.assertEqual(f1.read_text(), POORLY_FORMATTED_CODE) self.assertEqual(f2.read_text(), CORRECTLY_FORMATTED_CODE) self.assertEqual(f3.read_text(), POORLY_FORMATTED_CODE)
def test_ufmt_paths(self): with TemporaryDirectory() as td: td = Path(td) f1 = td / "bar.py" sd = td / "foo" sd.mkdir() f2 = sd / "baz.py" f3 = sd / "frob.py" for f in f1, f2, f3: f.write_text(POORLY_FORMATTED_CODE) file_wrapper = Mock(name="ufmt_file", wraps=ufmt.ufmt_file) with patch("ufmt.core.ufmt_file", file_wrapper): with self.subTest("files"): results = ufmt.ufmt_paths([f1, f3], dry_run=True) self.assertEqual(2, len(results)) file_wrapper.assert_has_calls( [ call(f1, dry_run=True, diff=False), call(f3, dry_run=True, diff=False), ], any_order=True, ) self.assertTrue(all(r.changed for r in results)) file_wrapper.reset_mock() with self.subTest("files with diff"): results = ufmt.ufmt_paths([f1, f3], dry_run=True, diff=True) self.assertEqual(2, len(results)) file_wrapper.assert_has_calls( [ call(f1, dry_run=True, diff=True), call(f3, dry_run=True, diff=True), ], any_order=True, ) self.assertTrue(all(r.changed for r in results)) file_wrapper.reset_mock() with self.subTest("subdir"): results = ufmt.ufmt_paths([sd]) file_wrapper.assert_has_calls( [ call(f2, dry_run=False, diff=False), call(f3, dry_run=False, diff=False), ], any_order=True, ) self.assertTrue(all(r.changed for r in results)) file_wrapper.reset_mock()
def test_ufmt_paths_stdin(self, stdin_mock): stdin_mock.return_value = Result(path=STDIN, changed=True) with self.subTest("no name"): list(ufmt.ufmt_paths([STDIN], dry_run=True)) stdin_mock.assert_called_with( Path("<stdin>"), dry_run=True, diff=False, return_content=False, black_config_factory=None, usort_config_factory=None, pre_processor=None, post_processor=None, ) with self.subTest("path name"): list(ufmt.ufmt_paths([STDIN, Path("hello.py")], dry_run=True)) stdin_mock.assert_called_with( Path("hello.py"), dry_run=True, diff=False, return_content=False, black_config_factory=None, usort_config_factory=None, pre_processor=None, post_processor=None, ) with self.subTest("extra args"): with self.assertRaisesRegex(ValueError, "too many stdin paths"): list( ufmt.ufmt_paths( [STDIN, Path("hello.py"), Path("foo.py")], dry_run=True))
def test_e2e_return_bytes(self): with TemporaryDirectory() as td: td = Path(td).resolve() foo = td / "foo.py" foo.write_text(POORLY_FORMATTED_CODE) results = list(ufmt.ufmt_paths([foo], return_content=True)) expected = [ ufmt.Result( foo, changed=True, written=True, diff=None, error=None, before=POORLY_FORMATTED_CODE.encode(), after=CORRECTLY_FORMATTED_CODE.encode(), ) ] self.assertEqual(expected, results)
def test_ufmt_paths(self): with TemporaryDirectory() as td: td = Path(td) f1 = td / "bar.py" sd = td / "foo" sd.mkdir() f2 = sd / "baz.py" f3 = sd / "frob.py" for f in f1, f2, f3: f.write_text(POORLY_FORMATTED_CODE) file_wrapper = Mock(name="ufmt_file", wraps=ufmt.ufmt_file) with patch("ufmt.core.ufmt_file", file_wrapper): with self.subTest("no paths"): results = list(ufmt.ufmt_paths([], dry_run=True)) self.assertEqual([], results) file_wrapper.assert_not_called() with self.subTest("non-existent paths"): results = list( ufmt.ufmt_paths([(td / "fake.py"), (td / "another.py")], dry_run=True)) self.assertEqual([], results) with self.subTest("mixed paths with stdin"): with patch("ufmt.core.LOG") as log_mock: results = list( ufmt.ufmt_paths([f1, STDIN, f3], dry_run=True)) self.assertEqual(2, len(results)) log_mock.warning.assert_called_once() with self.subTest("files"): results = list(ufmt.ufmt_paths([f1, f3], dry_run=True)) self.assertEqual(2, len(results)) file_wrapper.assert_has_calls( [ call( f1, dry_run=True, diff=False, return_content=False, black_config_factory=None, usort_config_factory=None, pre_processor=None, post_processor=None, ), call( f3, dry_run=True, diff=False, return_content=False, black_config_factory=None, usort_config_factory=None, pre_processor=None, post_processor=None, ), ], any_order=True, ) self.assertTrue(all(r.changed for r in results)) file_wrapper.reset_mock() with self.subTest("files with diff"): results = list( ufmt.ufmt_paths([f1, f3], dry_run=True, diff=True)) self.assertEqual(2, len(results)) file_wrapper.assert_has_calls( [ call( f1, dry_run=True, diff=True, return_content=False, black_config_factory=None, usort_config_factory=None, pre_processor=None, post_processor=None, ), call( f3, dry_run=True, diff=True, return_content=False, black_config_factory=None, usort_config_factory=None, pre_processor=None, post_processor=None, ), ], any_order=True, ) self.assertTrue(all(r.changed for r in results)) file_wrapper.reset_mock() with self.subTest("subdir"): results = list(ufmt.ufmt_paths([sd])) file_wrapper.assert_has_calls( [ call( f2, dry_run=False, diff=False, return_content=False, black_config_factory=None, usort_config_factory=None, pre_processor=None, post_processor=None, ), call( f3, dry_run=False, diff=False, return_content=False, black_config_factory=None, usort_config_factory=None, pre_processor=None, post_processor=None, ), ], any_order=True, ) self.assertTrue(all(r.changed for r in results)) file_wrapper.reset_mock()