From 3bb86816920867a6537ec85afef52c6ca8f259b9 Mon Sep 17 00:00:00 2001 From: Petter Friberg Date: Fri, 16 Sep 2022 08:27:15 +0200 Subject: [PATCH 1/2] Replace print with writing to stdout in `syncpermissions` command --- .pre-commit-config.yaml | 1 + .../management/commands/syncpermissions.py | 6 ++++-- tests/tests/test_commands.py | 16 ++++------------ 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7a83ab2..e4d28ed 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -45,6 +45,7 @@ repos: - flake8-bugbear - flake8-comprehensions - flake8-tidy-imports + - flake8-print - repo: https://github.com/sirosen/check-jsonschema rev: "0.18.1" hooks: diff --git a/src/bananas/management/commands/syncpermissions.py b/src/bananas/management/commands/syncpermissions.py index c61bc55..0fb307f 100644 --- a/src/bananas/management/commands/syncpermissions.py +++ b/src/bananas/management/commands/syncpermissions.py @@ -29,11 +29,13 @@ def handle_noargs(self, *args: object, **options: object) -> None: ) if created: - print(f"Found new admin view: {ct.name} [{ct.app_label}]") + self.stdout.write( + f"Found new admin view: {ct.name} [{ct.app_label}]" + ) for codename, name in model._meta.permissions: p, created = Permission.objects.update_or_create( codename=codename, content_type=ct, defaults={"name": name} ) if created: - print(f"Created permission: {name}") + self.stdout.write(f"Created permission: {name}") diff --git a/tests/tests/test_commands.py b/tests/tests/test_commands.py index f1604de..8b15e46 100644 --- a/tests/tests/test_commands.py +++ b/tests/tests/test_commands.py @@ -1,4 +1,4 @@ -from typing import List +from unittest import mock from django.core.management import call_command from django.test import TestCase @@ -13,17 +13,9 @@ def test_show_urls(self): admin_api_url_count = 50 self.assertEqual(len(urls), admin_api_url_count) - class FakeSys: - class stdout: - lines: List[str] = [] + with mock.patch.object(show_urls.sys, "stdout", autospec=True) as stdout: + show_urls.show_urls() - @classmethod - def write(cls, line: str) -> None: - cls.lines.append(line) - - show_urls.sys = FakeSys # type: ignore[attr-defined] - show_urls.show_urls() - - self.assertEqual(len(FakeSys.stdout.lines), admin_api_url_count) + self.assertEqual(stdout.write.call_count, admin_api_url_count) call_command("show_urls") From 9386d5884f164ba658e61883dc49bfafe3117c8b Mon Sep 17 00:00:00 2001 From: Petter Friberg Date: Fri, 16 Sep 2022 09:55:14 +0200 Subject: [PATCH 2/2] fixup! Replace print with writing to stdout in `syncpermissions` command --- tests/tests/test_commands.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests/test_commands.py b/tests/tests/test_commands.py index 8b15e46..43f7aff 100644 --- a/tests/tests/test_commands.py +++ b/tests/tests/test_commands.py @@ -13,7 +13,7 @@ def test_show_urls(self): admin_api_url_count = 50 self.assertEqual(len(urls), admin_api_url_count) - with mock.patch.object(show_urls.sys, "stdout", autospec=True) as stdout: + with mock.patch.object(show_urls.sys, "stdout", autospec=True) as stdout: # type: ignore[attr-defined] show_urls.show_urls() self.assertEqual(stdout.write.call_count, admin_api_url_count)