From bcd80de8b5264d8c853bbd38bfeb02279a9b3799 Mon Sep 17 00:00:00 2001 From: Jacob Walls Date: Thu, 31 Aug 2023 20:15:22 -0400 Subject: Fixed #34778 -- Avoided importing modules in startapp/startproject. --- tests/admin_scripts/tests.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'tests/admin_scripts/tests.py') diff --git a/tests/admin_scripts/tests.py b/tests/admin_scripts/tests.py index 57fbc454ff..7f39d7fcfc 100644 --- a/tests/admin_scripts/tests.py +++ b/tests/admin_scripts/tests.py @@ -2447,6 +2447,28 @@ class StartProject(LiveServerTestCase, AdminScriptTestCase): ) self.assertFalse(os.path.exists(testproject_dir)) + def test_command_does_not_import(self): + """ + startproject doesn't import modules (and cannot be fooled by a module + raising ImportError). + """ + bad_name = "raises_import_error" + args = ["startproject", bad_name] + testproject_dir = os.path.join(self.test_dir, bad_name) + + with open(os.path.join(self.test_dir, "raises_import_error.py"), "w") as f: + f.write("raise ImportError") + + out, err = self.run_django_admin(args) + self.assertOutput( + err, + "CommandError: 'raises_import_error' conflicts with the name of an " + "existing Python module and cannot be used as a project name. Please try " + "another name.", + ) + self.assertNoOutput(out) + self.assertFalse(os.path.exists(testproject_dir)) + def test_simple_project_different_directory(self): """ The startproject management command creates a project in a specific -- cgit v1.3