Add more regression tests for pg_ls_dir()

This system function was being triggered once in the main regression
test suite to check its SRF configuration, and more in other test
modules but nothing checked the behavior of the options missing_ok and
include_dot_dirs.  This commit adds some tests for both options, to
avoid mistakes if this code is manipulated in the future.

Extracted from a larger patch by the same author, with a few tweaks by
me.

Author: Justin Pryzby
Discussion: https://postgr.es/m/20191227170220.GE12890@telsasoft.com
This commit is contained in:
Michael Paquier 2022-03-15 10:52:19 +09:00
parent c6f2f01611
commit ff8b37ba80
2 changed files with 31 additions and 0 deletions

View file

@ -378,6 +378,29 @@ select * from (select pg_ls_dir('.') a) a where a = 'base' limit 1;
base
(1 row)
-- Test missing_ok (second argument)
select pg_ls_dir('does not exist', false, false); -- error
ERROR: could not open directory "does not exist": No such file or directory
select pg_ls_dir('does not exist', true, false); -- ok
pg_ls_dir
-----------
(0 rows)
-- Test include_dot_dirs (third argument)
select count(*) = 1 as dot_found
from pg_ls_dir('.', false, true) as ls where ls = '.';
dot_found
-----------
t
(1 row)
select count(*) = 1 as dot_found
from pg_ls_dir('.', false, false) as ls where ls = '.';
dot_found
-----------
f
(1 row)
select * from (select (pg_timezone_names()).name) ptn where name='UTC' limit 1;
name
------

View file

@ -124,6 +124,14 @@ from (select pg_ls_waldir() w) ss where length((w).name) = 24 limit 1;
select count(*) >= 0 as ok from pg_ls_archive_statusdir();
select * from (select pg_ls_dir('.') a) a where a = 'base' limit 1;
-- Test missing_ok (second argument)
select pg_ls_dir('does not exist', false, false); -- error
select pg_ls_dir('does not exist', true, false); -- ok
-- Test include_dot_dirs (third argument)
select count(*) = 1 as dot_found
from pg_ls_dir('.', false, true) as ls where ls = '.';
select count(*) = 1 as dot_found
from pg_ls_dir('.', false, false) as ls where ls = '.';
select * from (select (pg_timezone_names()).name) ptn where name='UTC' limit 1;