• Tom Lane's avatar
    Add an enforcement mechanism for global object names in regression tests. · 54100f5c
    Tom Lane authored
    In commit 18555b13 we tentatively established a rule that regression
    tests should use names containing "regression" for databases, and names
    starting with "regress_" for all other globally-visible object names, so
    as to circumscribe the side-effects that "make installcheck" could have
    on an existing installation.
    
    This commit adds a simple enforcement mechanism for that rule: if the code
    is compiled with ENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS defined, it
    will emit a warning (not an error) whenever a database, role, tablespace,
    subscription, or replication origin name is created that doesn't obey the
    rule.  Running one or more buildfarm members with that symbol defined
    should be enough to catch new violations, at least in the regular
    regression tests.  Most TAP tests wouldn't notice such warnings, but
    that's actually fine because TAP tests don't execute against an existing
    server anyway.
    
    Since it's already the case that running src/test/modules/ tests in
    installcheck mode is deprecated, we can use that as a home for tests
    that seem unsafe to run against an existing server, such as tests that
    might have side-effects on existing roles.  Document that (though this
    commit doesn't in itself make it any less safe than before).
    
    Update regress.sgml to define these restrictions more clearly, and
    to clean up assorted lack-of-up-to-date-ness in its descriptions of
    the available regression tests.
    
    Discussion: https://postgr.es/m/16638.1468620817@sss.pgh.pa.us
    54100f5c
user.c 46.9 KB