[Python-de] EntryPoint per Programm hinzufügen?

Sebastian Wiesner lunaryorn at googlemail.com
Fr Mär 9 15:18:50 CET 2012


Am 9. März 2012 12:23 schrieb Hartmut Goebel <h.goebel at goebel-consult.de>:
> Hallo,
>
> für die Testsuite von https://github.com/htgoebel/gitflow möchte ich einen
> Testcase schreiben, um die Funktion der Plugins zu testen Dazu möchte ich
> einen Entry-Point per programm hinzufügen, also im Testcase.
>
> Da es in der (uninstallierten) Testsuite passieren soll, kann ich keinen
> Entry-point in setup.py schreiben. Außerdem ist es ein Dummy, der gehört
> also gar nicht dort hin.

Wenn ich Dich richtig verstehe, dann ist Dein eigentliches Ziel, in
der Testsuite zu testen, dass "gitflow" ein Plugin, welches durch
einen Entrypoint deklariert ist, laden und verwenden kann?  Und für
diesen Test möchtest Du ein funktionsloses Dummy-Plugin verwenden?

Dann installiere das dummy-plugin doch einfach als richtiges Plugin.
So testest Du dann auch den Code-Pfad, der später tatsächlich abläuft,
denn in der Realität werden Entrypoints ja eigentlich immer aus der
"setup.py" deklariert.

Im Detail also ein Unterverzeichnis für das Plugin anlegen,
beispielsweise tests/dummy-plugin, dort den Quelltext des Plugins
ablegen, und eine neue, unabhängige "setup.py" anlegen, welche die
nötigen Metadaten und den Entrypoint deklariert.  Vor der Ausführung
der Testsuite dann das Plugin im virtualenv installieren.  Die
Installation oder auch das Einrichten des virtualenvs im Allgemeinen
kannst Du dann mit einem "requirements.txt" für pip oder noch besser
mit "tox" automatisieren.  Zur Not geht auch ein
"subprocess.check_call([sys.executable, 'setup.py', 'install'],
cwd='tests/dummy-plugin')" in einer test fixture.

HTH,
Sebastian Wiesner


Mehr Informationen über die Mailingliste python-de