By: Tom Sydney Kerckhove <syd@cs-syd.eu>
sqitch-postgres: deploy migrations into a random non-public schema The harness deployed (and snapshotted) migrations in the public schema, so a migration that hardcodes a schema in an information_schema lookup -- a deploy guard or verify with table_schema = 'public' -- passed unnoticed even though it silently misbehaves (a skipped ALTER, a verify that finds nothing) when deployed into a non-default schema. Deploy into a fresh, randomly-named non-public schema instead, created and dropped (CASCADE) via a SetupFunc so tests leave nothing behind. sqitch connections are scoped to it via PGOPTIONS search_path; pooled actions via useTestSchema; and the schema snapshots now follow current_schema(). A migration that hardcodes a schema now fails the existing deploy --verify checks (a new toy-sqitch-hardcoded-public negative fixture exercises this). New API: randomSchemaSetupFunc (generates the name and supplies it), schemaSetupFunc (takes a name; for sharing one schema across two databases), randomSchemaName, useTestSchema. Breaking: sqitchTargetFromOptions now takes the schema as its first argument. Both packages -> 0.1.0.0.