Hallo, versuche gerade CUnit (http://cunit.sourceforge.net/ )auf den avr
zu portieren.
Änderungen waren nötig, einmal Compilerflags, um inline Assembler in der
avr-libc zu akzeptieren, zum anderen mussten manche Funktionen raus - da
in der avr-libc nicht vorhanden.
Im Anhang sind meine beiden Patches.
Dann bauen mit:
rm configure
autoconf
./configure --host=avr --disable-automated --disable-console
make
Funktioniert auch, leider nicht vollständig.
Es wird für alle Tests, die nicht durchlaufen, auch korrekt die Zeile
angezeigt.
Allerdings fehlt am Ende die Zusammenfassung.
Sie müsste so aussehen:
--Run Summary: Type Total Ran Passed Failed
suites 1 1 n/a 0
tests 1 1 0 1
asserts 2 2 0 2
Probiere ich den selben Code auf x86, funktioniert das auch.
Beim Debuggen sieht man, dass er auch in CU_get_run_results_string(void)
in TestRun.c ankommt, jedoch scheitert die Geschichte am snprintf.
In result steht allerdings ziemlicher Quatsch, kein wirklicher ASCII
String.
In snprintf zu debuggen ist sehr schwer, da es doch sehr low-level mäßig
ist mit vielen Makros und unübersichtlichen Kontrollstrukturen.
snprintf funktioniert ansich auch, auch mit doubles und auch mit %8.3f
ähnlichen Formatierungen.
Nicht nur die Zusammenfassung fehlt auf dem avr, sondern auch noch
andere Ausgaben:
1 | CUnit - A unit testing framework for C - Version
|
2 | 2.1-2
|
3 | http://cunit.sourceforge.net/
|
4 |
|
5 |
|
6 | 1. src/main.c:147 - CU_ASSERT_TRUE(false())
|
7 | 2. src/main.c:148 - CU_ASSERT_TRUE(0)
|
1 | CUnit - A Unit testing framework for C - Version 2.1-0
|
2 | http://cunit.sourceforge.net/
|
3 |
|
4 | Suite: Test
|
5 | Test: Hoffentlich klappts
|
6 | ... FAILED
|
7 | 1. ../src/cunittest.c:27 - CU_ASSERT_TRUE(false())
|
8 | 2. ../src/cunittest.c:28 - CU_ASSERT_TRUE(0)
|
9 |
|
10 | --Run Summary: Type Total Ran Passed Failed
|
11 | suites 1 1 n/a 0
|
12 | tests 1 1 0 1
|
13 | asserts 2 2 0 2
|
An der Länge des Summarystrings liegt es wohl auch nicht.
Danke schonmal für alle Tipps