]>
Commit | Line | Data |
---|---|---|
b1f7435d A |
1 | |
2 | The easy way to run all tests is within Xcode. Just select "unit-tests" as the target and click Build. | |
3 | ||
4 | When run from within Xcode, the just built linker will be used. If you cd into a test case and run it, the | |
5 | installed linker (e.g. /usr/bin/ld) will be used. | |
6 | ||
7 | Each test case is a directory with a Makefile. The Makefile default target should do whatever work is necessary | |
8 | to perform the test. If successful is should print "PASS xxx" where xxx is the name of the test case. Otherwise | |
9 | it should print "FAIL xxx reason". If nothing is printed (for instance a tool crashed), the harness will | |
10 | automatically print that it failed. The harness will always pass ARCH to the Makefile to specify which | |
11 | architecture to test. The Makefile should also have a "clean" target which removes and generated files. | |
12 | ||
13 | ||
14 | There are some utility functions for use in Makefiles for generating the PASS/FAIL strings: | |
15 | ||
16 | ${PASS_IFF} can be put in front of the last command in the make rule and it will print PASS | |
17 | if the command returned 0 or FAIL otherwise. Example: | |
18 | ${PASS_IFF} ${CC} foo.c -o foo | |
19 | Will print PASS if and only if the compilation succeeded | |
20 | ||
21 | ${PASS_IFF_EMPTY} can have data piped into it. It prints PASS if there is no data, otherwise FAIL. | |
22 | Example: | |
23 | otool -hv foo.o | grep SUBSECTIONS_VIA_SYMBOLS | ${PASS_IFF_EMPTY} | |
24 | Will print PASS if and only if the output of otool does not contain SUBSECTIONS_VIA_SYMBOLS | |
25 | ||
26 | ||
27 | ||
28 |