mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import subprocess
 | |
| from pathlib import Path
 | |
| from unittest import mock, skipUnless
 | |
| 
 | |
| from django.core.management import CommandError, call_command
 | |
| from django.db import connection
 | |
| from django.db.backends.sqlite3.client import DatabaseClient
 | |
| from django.test import SimpleTestCase
 | |
| 
 | |
| 
 | |
| class SqliteDbshellCommandTestCase(SimpleTestCase):
 | |
|     def settings_to_cmd_args_env(self, settings_dict, parameters=None):
 | |
|         if parameters is None:
 | |
|             parameters = []
 | |
|         return DatabaseClient.settings_to_cmd_args_env(settings_dict, parameters)
 | |
| 
 | |
|     def test_path_name(self):
 | |
|         self.assertEqual(
 | |
|             self.settings_to_cmd_args_env({"NAME": Path("test.db.sqlite3")}),
 | |
|             (["sqlite3", Path("test.db.sqlite3")], None),
 | |
|         )
 | |
| 
 | |
|     def test_parameters(self):
 | |
|         self.assertEqual(
 | |
|             self.settings_to_cmd_args_env({"NAME": "test.db.sqlite3"}, ["-help"]),
 | |
|             (["sqlite3", "test.db.sqlite3", "-help"], None),
 | |
|         )
 | |
| 
 | |
|     @skipUnless(connection.vendor == "sqlite", "SQLite test")
 | |
|     def test_non_zero_exit_status_when_path_to_db_is_path(self):
 | |
|         sqlite_with_path = {
 | |
|             "ENGINE": "django.db.backends.sqlite3",
 | |
|             "NAME": Path("test.db.sqlite3"),
 | |
|         }
 | |
|         cmd_args = self.settings_to_cmd_args_env(sqlite_with_path)[0]
 | |
| 
 | |
|         msg = '"sqlite3 test.db.sqlite3" returned non-zero exit status 1.'
 | |
|         with (
 | |
|             mock.patch(
 | |
|                 "django.db.backends.sqlite3.client.DatabaseClient.runshell",
 | |
|                 side_effect=subprocess.CalledProcessError(returncode=1, cmd=cmd_args),
 | |
|             ),
 | |
|             self.assertRaisesMessage(CommandError, msg),
 | |
|         ):
 | |
|             call_command("dbshell")
 |