anewt-developers team mailing list archive
-
anewt-developers team
-
Mailing list archive
-
Message #00015
PostgreSQL testsuite
Wouter,
ik heb een postgresql testsuite gemaakt. Resultaat: 2 bugs; 1 duidelijk,
1 heeel obscuur.
De duidelijke was een $bool die een $value had moeten zijn.
De obscure was dat ik begon met een CREATE TEMPORARY TABLE, maar alle
methodes klaagden dat 'test_table' niet bestond. Wat assertions (in het
begin) gedaan, en hij bestond wel degelijk (kostte wat moeite om een
query te vinden die mij verteld of een tabel bestaat of niet). Na lang
doorzoeken bleek het probleem te zijn dat, nadat de tijdelijke tabel
gemaakt is, de connectie verbroken wordt door een test.
Ik heb dit opgelost door 2 connectie instanties te maken, en het
connecten/disconnecten/reconnecten op de 2e te testen. Toen kreeg ik
overal errors dat de resource niet geldig was. Toen maar getest of de
code voor meerdere simultane connecties (op sqlite) klopt, maar dat deed
het wel (testcode behouden).
Na nog veel verder zoeken bleek dat pg_connect(), als je een connection
string meegeeft die hij al eerder gehad heeft, hij de oude resource weer
teruggeeft. Dus na een disconnect op de ene is de andere corrupt. Dit
gedrag kun je uitschakelen met een parameter, dus dat heb ik maar gedaan.
Heeft me wel 2 of 3 uurtjes gekost.
Verder nog wat kleine probleempjes met de testsuite die je in sqlite
niet hebt: de "?raw?" is geen geldige string, dat moet '?raw?' zijn. En
1 is geen geldige boolean, dat moet TRUE zijn.
Ik heb ook een testsuite gemaakt. Mijn god, wat is de documentatie
daarover vaag zeg. Ik kreeg de hele tijd een InvalidArgumentException
omdat er iets mis was met het argument 'AnewtDatabasePostgeSQLTest'. Na
een uur ofzo kwam ik erachter dat er een typo in zat :S Naja, hij werkt nu.
Ik heb de boel direct gecommit in anewt.uws, dus die moet je maar even
pullen:
http://mneme.hostingxs.nl/~sander/anewt.uws/
Ik heb gezorgd dat ik de nieuwste versie had.
-- Sander
Follow ups