@@ -159,7 +159,7 @@ def test_slash_d_verbose(executor):
159159@dbtest
160160def test_slash_d_table_1 (executor ):
161161 results = executor (r"\d tbl1" )
162- title = None
162+ title = 'Table "public.tbl1"'
163163 rows = [
164164 ["id1" , "integer" , " not null" ],
165165 ["txt1" , "text" , " not null" ],
@@ -173,7 +173,7 @@ def test_slash_d_table_1(executor):
173173@dbtest
174174def test_slash_d_table_2 (executor ):
175175 results = executor (r"\d tbl2" )
176- title = None
176+ title = 'Table "public.tbl2"'
177177 rows = [
178178 ["id2" , "integer" , " not null default nextval('tbl2_id2_seq'::regclass)" ],
179179 ["txt2" , "text" , "" ],
@@ -184,6 +184,22 @@ def test_slash_d_table_2(executor):
184184 assert results == expected
185185
186186
187+ @dbtest
188+ def test_slash_d_wildcard (executor ):
189+ results = executor (r"\d tbl*" )
190+ # tbl* matches tbl1, tbl2, tbl2_id2_seq (sequence), tbl3, tbl3_c3_excl (index)
191+ # executor flattens each block as [title, rows, headers, status]
192+ # so titles appear at indices 0, 4, 8, ...
193+ titles = results [0 ::4 ]
194+ assert titles == [
195+ 'Table "public.tbl1"' ,
196+ 'Table "public.tbl2"' ,
197+ 'Sequence "public.tbl2_id2_seq"' ,
198+ 'Table "public.tbl3"' ,
199+ 'Index "public.tbl3_c3_excl"' ,
200+ ]
201+
202+
187203@dbtest
188204def test_slash_d_test_generated_default (executor ):
189205 results = executor (r"\d schema3.test_generated_default" )
@@ -200,10 +216,10 @@ def test_slash_d_test_generated_default(executor):
200216
201217@dbtest
202218def test_slash_d_table_verbose_1 (executor ):
203- title = None
204219 headers = ["Column" , "Type" , "Modifiers" , "Storage" , "Stats target" , "Description" ]
205220
206221 results = executor (r"\d+ tbl1" )
222+ title = 'Table "public.tbl1"'
207223 rows = [
208224 ["id1" , "integer" , " not null" , "plain" , None , None ],
209225 ["txt1" , "text" , " not null" , "extended" , None , None ],
@@ -213,6 +229,7 @@ def test_slash_d_table_verbose_1(executor):
213229 assert results == expected
214230
215231 results = executor (r'\d+ "Inh1"' )
232+ title = 'Table "public.Inh1"'
216233 rows = [
217234 ["id1" , "integer" , " not null" , "plain" , None , None ],
218235 ["txt1" , "text" , " not null" , "extended" , None , None ],
@@ -225,10 +242,10 @@ def test_slash_d_table_verbose_1(executor):
225242
226243@dbtest
227244def test_slash_d_table_verbose_2 (executor ):
228- title = None
229245 headers = ["Column" , "Type" , "Modifiers" , "Storage" , "Stats target" , "Description" ]
230246
231247 results = executor (r"\d+ tbl2" )
248+ title = 'Table "public.tbl2"'
232249 rows = [
233250 [
234251 "id2" ,
@@ -245,6 +262,7 @@ def test_slash_d_table_verbose_2(executor):
245262 assert results == expected
246263
247264 results = executor (r"\d+ inh2" )
265+ title = 'Table "public.inh2"'
248266 rows = [
249267 ["id1" , "integer" , " not null" , "plain" , None , None ],
250268 ["txt1" , "text" , " not null" , "extended" , None , None ],
@@ -266,7 +284,7 @@ def test_slash_d_table_verbose_2(executor):
266284
267285@dbtest
268286def test_slash_d_view_verbose (executor ):
269- title = None
287+ title = 'View "public.vw1"'
270288 headers = ["Column" , "Type" , "Modifiers" , "Storage" , "Description" ]
271289
272290 results = executor (r"\d+ vw1" )
@@ -283,7 +301,7 @@ def test_slash_d_view_verbose(executor):
283301@dbtest
284302def test_slash_d_table_with_exclusion (executor ):
285303 results = executor (r"\d tbl3" )
286- title = None
304+ title = 'Table "public.tbl3"'
287305 rows = [["c3" , "circle" , "" ]]
288306 headers = ["Column" , "Type" , "Modifiers" ]
289307 status = 'Indexes:\n "tbl3_c3_excl" EXCLUDE USING gist (c3 WITH &&)\n '
@@ -294,7 +312,7 @@ def test_slash_d_table_with_exclusion(executor):
294312@dbtest
295313def test_slash_d_table_2_in_schema (executor ):
296314 results = executor (r"\d schema2.tbl2" )
297- title = None
315+ title = 'Table "schema2.tbl2"'
298316 rows = [
299317 [
300318 "id2" ,
0 commit comments