from __future__ import annotations from unittest.mock import patch from django.core.management import call_command from django.test import TransactionTestCase from django.test.utils import override_settings class LintMigrationsCommandTestCase(TransactionTestCase): databases = {"default", "sqlite"} def setUp(self): call_command("migrate", "app_unique_together", "0002") self.addCleanup(call_command, "migrate", "app_unique_together") super().setUp() def test_plain(self): with self.assertRaises(SystemExit): call_command("lintmigrations") def test_config_file_app_label(self): with patch( "django_migration_linter.management.commands.lintmigrations.Command.read_config_file" ) as config_fn: config_fn.return_value = {"app_label": "app_correct"} call_command("lintmigrations") def test_command_line_app_label(self): call_command("lintmigrations", app_label="app_correct") def test_command_line_and_config_file_app_label(self): with patch( "django_migration_linter.management.commands.lintmigrations.Command.read_config_file" ) as config_fn: config_fn.return_value = {"app_label": "app_correct"} with self.assertRaises(SystemExit): call_command("lintmigrations", app_label="app_drop_table") @override_settings(MIGRATION_LINTER_OPTIONS={"app_label": "app_correct"}) def test_django_settings_option(self): call_command("lintmigrations")