X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/aedb4ff7f061b321ea5804bc4fc4943c52c6a786..467efe15562e3bad88b1eb3bc11f76b5b9a68816:/tests/test_primer.py diff --git a/tests/test_primer.py b/tests/test_primer.py index dc30a7a..8d00d83 100644 --- a/tests/test_primer.py +++ b/tests/test_primer.py @@ -11,7 +11,7 @@ from pathlib import Path from platform import system from subprocess import CalledProcessError from tempfile import TemporaryDirectory, gettempdir -from typing import Any, Callable, Iterator, Tuple +from typing import Any, Callable, Iterator, List, Tuple, TypeVar from unittest.mock import Mock, patch from click.testing import CliRunner @@ -89,6 +89,24 @@ async def return_zero(*args: Any, **kwargs: Any) -> int: return 0 +if sys.version_info >= (3, 9): + T = TypeVar("T") + Q = asyncio.Queue[T] +else: + T = Any + Q = asyncio.Queue + + +def collect(queue: Q) -> List[T]: + ret = [] + while True: + try: + item = queue.get_nowait() + ret.append(item) + except asyncio.QueueEmpty: + return ret + + class PrimerLibTests(unittest.TestCase): def test_analyze_results(self) -> None: fake_results = lib.Results( @@ -198,10 +216,25 @@ class PrimerLibTests(unittest.TestCase): with patch("black_primer.lib.git_checkout_or_rebase", return_false): with TemporaryDirectory() as td: return_val = loop.run_until_complete( - lib.process_queue(str(config_path), Path(td), 2) + lib.process_queue( + str(config_path), Path(td), 2, ["django", "pyramid"] + ) ) self.assertEqual(0, return_val) + @event_loop() + def test_load_projects_queue(self) -> None: + """Test the process queue on primer itself + - If you have non black conforming formatting in primer itself this can fail""" + loop = asyncio.get_event_loop() + config_path = Path(lib.__file__).parent / "primer.json" + + config, projects_queue = loop.run_until_complete( + lib.load_projects_queue(config_path, ["django", "pyramid"]) + ) + projects = collect(projects_queue) + self.assertEqual(projects, ["django", "pyramid"]) + class PrimerCLITests(unittest.TestCase): @event_loop() @@ -217,6 +250,7 @@ class PrimerCLITests(unittest.TestCase): "workdir": str(work_dir), "workers": 69, "no_diff": False, + "projects": "", } with patch("black_primer.cli.lib.process_queue", return_zero): return_val = loop.run_until_complete(cli.async_main(**args)) # type: ignore @@ -230,6 +264,19 @@ class PrimerCLITests(unittest.TestCase): result = runner.invoke(cli.main, ["--help"]) self.assertEqual(result.exit_code, 0) + def test_projects(self) -> None: + runner = CliRunner() + with event_loop(): + result = runner.invoke(cli.main, ["--projects=tox,asdf"]) + self.assertEqual(result.exit_code, 0) + assert "1 / 1 succeeded" in result.output + + with event_loop(): + runner = CliRunner() + result = runner.invoke(cli.main, ["--projects=tox,attrs"]) + self.assertEqual(result.exit_code, 0) + assert "2 / 2 succeeded" in result.output + if __name__ == "__main__": unittest.main()