[PyAthens] Setuptools & warnings

Antonis Christofides anthony at itia.ntua.gr
Wed Nov 25 14:09:04 CET 2009


Γεια σας,

έχω ένα module και του έχω φτιάξει easy_setup. Έχει και tests, που
τρέχουν με

./setup.py test

Μερικά από τα test χρειάζονται σύνδεση με βάση δεδομένων. Για να
τρέξουν τα τεστ αυτά χρειάζεται να ορίσεις μια μεταβλητή περιβάλλοντος:

export PSYCOPG_CONNECTION="host=... dbname=... user=... password=..."

Αν δεν ορίσω αυτή τη μεταβλητή περιβάλλοντος, τότε αυτά τα τεστ δεν
αποτυγχάνουν μεν, δεν τρέχουν δε. Βγάζουν ένα Warning, που δίνει
οδηγίες "Δεν έτρεξα τα database tests. Αν θες να τα τρέξεις, κάνε αυτό
κι αυτό." Το warning βγαίνει με το warnings.warn

Το πρόβλημα: αυτό το warning βγαίνει πάνω-πάνω, και ακολούθως κάνει
σκρολ προς τα πάνω και εξαφανίζεται, και αυτό που βλέπει αυτός που
τρέχει τα τεστ είναι

    [το πιο πάνω μέρος έχει κάνει scroll και έχει φύγει]
    test_up3 (tests.test_timeseries._Test_timestep_utilities) ... ok
    test_up4 (tests.test_timeseries._Test_timestep_utilities) ... ok
    test_up5 (tests.test_timeseries._Test_timestep_utilities) ... ok
    test_lastem (tests.test_meteologger._Test_lastem) ... ok
    test_pc208w (tests.test_meteologger._Test_pc208w) ... ok

    ----------------------------------------------------------------------
    Ran 76 tests in 0.082s

    OK

Αυτό που θέλω είναι το warning να φαίνεται κάτω απ' το OK, ή τέλος
πάντων να είναι εύκολα ορατό χωρίς να χρειάζεται να ψυλλιαστεί κάτι ο
tester.

Αυτό που δοκίμασα ήταν να αλλάξω την warnings.showwarning ώστε αντί να
δείχνει το warning να το προσθέτει σε μια λίστα, και να χρησιμοποιήσω
την atexit.register για να δείχνει αυτά τα warnings στο τέλος. Πλην
όμως η atexit.register δεν φαίνεται να έχει κανένα αποτέλεσμα. Η
sys.exitfunc έχει αποτέλεσμα, αλλά έχει άλλα προβλήματα (όταν έρθει η
ώρα της να τρέξει έχει ξεχάσει τα global variables, κι έτσι δεν
υπάρχει πια η λίστα των warnings).

Κάνω κάποιο προφανές λάθος; Μήπως το setuptools κάνει αυτό που θέλω με
κάποιο άλλο τρόπο;


More information about the PyAthens mailing list