diff options
| author | Rohith PR <praroh2@gmail.com> | 2021-05-11 16:09:28 +0530 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-05-14 12:45:00 +0200 |
| commit | 530f58caaa5052e9e56bf8461caee4d821953bcb (patch) | |
| tree | f4703d39d9e7f1ae11285d27f041e9177d43d253 | |
| parent | 29345aecf6e8d53ccb3577a3762bb0c263f7558d (diff) | |
Fixed #32734 -- Fixed validation of startapp's directory with trailing slash.
Regression in fc9566d42daf28cdaa25a5db1b5ade253ceb064f.
| -rw-r--r-- | AUTHORS | 1 | ||||
| -rw-r--r-- | django/core/management/templates.py | 4 | ||||
| -rw-r--r-- | tests/admin_scripts/tests.py | 7 |
3 files changed, 10 insertions, 2 deletions
@@ -798,6 +798,7 @@ answer newbie questions, and generally made Django that much better: Rob Nguyen <tienrobertnguyenn@gmail.com> Robin Munn <http://www.geekforgod.com/> Rodrigo Pinheiro Marques de Araújo <fenrrir@gmail.com> + Rohith P R <https://rohithpr.com> Romain Garrigues <romain.garrigues.cs@gmail.com> Ronny Haryanto <https://ronny.haryan.to/> Ross Poulton <ross@rossp.org> diff --git a/django/core/management/templates.py b/django/core/management/templates.py index 8dc6068286..8607ca8542 100644 --- a/django/core/management/templates.py +++ b/django/core/management/templates.py @@ -73,9 +73,9 @@ class TemplateCommand(BaseCommand): except OSError as e: raise CommandError(e) else: - if app_or_project == 'app': - self.validate_name(os.path.basename(target), 'directory') top_dir = os.path.abspath(os.path.expanduser(target)) + if app_or_project == 'app': + self.validate_name(os.path.basename(top_dir), 'directory') if not os.path.exists(top_dir): raise CommandError("Destination directory '%s' does not " "exist, please create it first." % top_dir) diff --git a/tests/admin_scripts/tests.py b/tests/admin_scripts/tests.py index fd94d4919f..8dd06f660b 100644 --- a/tests/admin_scripts/tests.py +++ b/tests/admin_scripts/tests.py @@ -2206,6 +2206,13 @@ class StartApp(AdminScriptTestCase): "another directory." ) + def test_trailing_slash_in_target_app_directory_name(self): + app_dir = os.path.join(self.test_dir, 'apps', 'app1') + os.makedirs(app_dir) + _, err = self.run_django_admin(['startapp', 'app', os.path.join('apps', 'app1', '')]) + self.assertNoOutput(err) + self.assertIs(os.path.exists(os.path.join(app_dir, 'apps.py')), True) + def test_overlaying_app(self): # Use a subdirectory so it is outside the PYTHONPATH. os.makedirs(os.path.join(self.test_dir, 'apps/app1')) |
