Tests: Datenbank-Meldungen immer in English zurückgeben
authorMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 10 Feb 2017 12:26:07 +0000 (13:26 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 10 Feb 2017 12:26:07 +0000 (13:26 +0100)
Die Sprache, in der z.B. Fehlermeldungen von der Datenbank geliefert
werden, wird beim Erstellen des PostgreSQL-Clusters festgelegt. Dies ist
bei vielen Standardinstallationen Deutsch, da meinst nur
»--locale=de_DE.UTF-8« gesagt wird, und damit auch LC_MESSAGES gesetzt
wird.

Für Tests ist das ungünstig, weil sich diese darauf verlassen können
müssen, dass die Fehlermeldungen immer in einer bestimmten Sprache
sind. Unsere Tests vergleichen Fehlermeldungen mit den erwarteten
Mustern, und diese sind in Englisch.

Daher die Nachrichten-Locale Datenbankverbindungen von sowohl Auth- als
auch Hauptdatenbank am Anfang der Tests auf Englisch setzen.

t/Support/TestSetup.pm

index 037cfb5..d74e66a 100644 (file)
@@ -48,6 +48,12 @@ sub login {
 
   $SIG{__DIE__} = sub { Carp::confess( @_ ) } if $::lx_office_conf{debug}->{backtrace_on_die};
 
+  # Always use English locale for messages from the database during
+  # tests.
+  my $query = qq|SET lc_messages = 'en_US.UTF-8'|;
+  SL::DB->auth->dbh->do($query)   || die 'Cannot set database locale to en_US.UTF-8 for auth database';
+  SL::DB->client->dbh->do($query) || die 'Cannot set database locale to en_US.UTF-8 for main database';
+
   return 1;
 }