7
7
8
8
from django .apps import AppConfig
9
9
from django .conf import settings
10
+ from django .core .checks import Error
10
11
from django .test import TransactionTestCase
11
12
from django .test .utils import get_runner
12
13
from django .utils .module_loading import import_string
@@ -64,6 +65,7 @@ def is_middleware_class(cls, middleware_path):
64
65
65
66
@classmethod
66
67
def add_middleware (cls ):
68
+ middleware_class_name = 'test_query_counter.middleware.Middleware'
67
69
middleware_setting = getattr (settings , 'MIDDLEWARE' , None )
68
70
setting_name = 'MIDDLEWARE'
69
71
if middleware_setting is None :
@@ -72,15 +74,26 @@ def add_middleware(cls):
72
74
73
75
# add the middleware only if it was not added before
74
76
if not any (map (cls .is_middleware_class , middleware_setting )):
75
- setattr (
76
- settings ,
77
- setting_name ,
78
- (
79
- middleware_setting + (
80
- 'test_query_counter.middleware.Middleware' ,
81
- )
77
+ if isinstance (middleware_setting , list ):
78
+ new_middleware_setting = (
79
+ middleware_setting +
80
+ [middleware_class_name ]
82
81
)
83
- )
82
+ elif isinstance (middleware_setting , tuple ):
83
+ new_middleware_setting = (
84
+ middleware_setting +
85
+ (middleware_class_name ,)
86
+ )
87
+ else :
88
+ err_msg = "{} is missing from {}." .format (
89
+ middleware_class_name ,
90
+ setting_name
91
+ )
92
+ hint = "Add {} to {}." .format (middleware_class_name ,
93
+ setting_name )
94
+ raise Error (err_msg , hint = hint )
95
+
96
+ setattr (settings , setting_name , new_middleware_setting )
84
97
85
98
@classmethod
86
99
def wrap_set_up (cls , set_up ):
0 commit comments