Ich habe ein Programm / eine Bibliothek geschrieben, mit der ich in einem Artikel Ergebnisse erzielt habe. (Hier ist , aber meine Frage ist allgemein.) Ich habe Tests , dass ich regelmäßig laufen mit ctest
(es dauert ein paar Minuten zu laufen). Um einige Tabellen oder Abbildungen im Artikel zu reproduzieren, muss ich ein Skript oder ein einfaches Treiberprogramm erstellen, das möglicherweise 10 Minuten, manchmal auch länger, ausgeführt wird, sodass ich diesen Teil der regulären Testsuite nicht haben möchte. Gleichzeitig möchte ich sicherstellen, dass die Ergebnisse des Artikels:
- später wiedergegeben
- Stellen Sie sicher, dass sie immer noch die gleichen / richtigen Ergebnisse liefern, nachdem ich die Bibliothek weiterentwickle
Derzeit versuche ich, ein kleines Treiberprogramm zu haben, das ich als Teil der regulären Testsuite ausführe. Wenn ich die Ergebnisse des Artikels reproduzieren möchte, kommentiere ich einige Zeilen dort aus. Natürlich weiß ich nie, welche Zeilen genau sind und ob ich andere Parameter anpassen muss, um genau die gleichen Ergebnisse wie im Artikel zu erzielen.
Ich habe auch versucht, ein Python-Skript zu haben, das die genauen Zahlen / Tabellen aus dem Artikel berechnet. Ein solches Skript funktioniert normalerweise nach einem Update der Bibliothek nicht mehr, da es nicht regelmäßig ausgeführt wird (zu lange dauert).
Die beste Methode, die mir in den Sinn gekommen ist, ist ein Fortran (oder C / C ++) - Beispiel, das regelmäßig kompiliert wird (als Teil der Bibliothek), aber nicht in einer regulären Testsuite ausgeführt wird. Auf diese Weise weiß ich zumindest, dass es gut kompiliert (und somit hoffentlich auch läuft). Und ich werde ein einfaches (kleineres) Beispiel als Teil einer regulären Testsuite testen.
Wie kann dieses Problem optimal gelöst werden?
quelle
Antworten:
In deal.II haben wir eine Testsuite, die von einem regulären Unix-Makefile gesteuert wird. Es hat ein Standardziel, das alle üblichen Tests ausführt, und ein separates Ziel für teure Tests. Die Ausführung jedes Tests erfolgt mit einer generischen Regel, aber das Standardziel ruft die generische Regel nur für bestimmte Tests auf und das teure Ziel ruft sie für die teuren Tests auf. Da dies alles nach einer allgemeinen Regel erfolgt, muss es zu einem bestimmten Zeitpunkt auf dem neuesten Stand sein. Was möglicherweise nicht mehr aktuell ist, können nur die Namen der Tests sein.
Update: Der obige Text war im Jahr 2012 korrekt. Seit 2014 basiert die deal.II-Testsuite auf CTest, die allgemeine Idee bleibt jedoch gültig.
quelle
p4est
?