← Back to team overview

anewt-developers team mailing list archive

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