| --- |
| title: Running Tests |
| --- |
| |
| # Running Tests |
| |
| You will always need to run tests when you do a check\-in. |
| |
| 1. Preconditions |
| - If you change the DTD, be sure to read and follow [Updating DTDs](https://cldr.unicode.org/development/updating-dtds) first. |
| - If you added a new feature or fixed a significant bug, add a unit test for it. |
| - See unittest/NumberingSystemsTest as an example. |
| - Remember to add to unittest/TestAll |
| 2. Run **TestAll \-e** |
| - These are the unit tests in exhaustive mode |
| - If you are doing something you know to be simple, you could do the shorter run of just **TestAll** |
| 3. Run **ConsoleCheckCLDR \-e \-z final\_testing \-S common,seed** |
| - This runs the same set of test that the Survey Tool does. |
| - If you know what you are doing, you can run a set of filtered tests. |
| 4. Other tests |
| 1. The unit tests are not complete, so you get a better workout if you are doing anything fancy by running: |
| 2. [**NewLdml2IcuConverter**](https://cldr.unicode.org/development/coding-cldr-tools/newldml2icuconverter) |
| 3. [**Generating Charts**](https://cldr.unicode.org/development/cldr-big-red-switch/generating-charts) |
| 1. If you have interesting new data, write a chart for it. See subclasses of Chart.java for examples. |
| |
| ## Running tests on the command line |
| |
| ```bash |
| $ export CLDR_DIR=/path/to/svn/root/for/cldr |
| |
| $ cd $CLDR_DIR/tools/java && ant all |
| |
| $ cd $CLDR_DIR/tools/cldr-unittest && ant unittestExhaustive datacheck |
| ``` |
| |
| \[TODO: add more commands here; can't we automate all this into a single build rule for ant?] TODO: [TODOL ticket:8864](http://unicode.org/cldr/trac/ticket/8864) |
| |
| ## Debugging |
| |
| \[TODO: add more tips here] |
| |
| ### Regexes |
| |
| We use a lot of regexes! |
| |
| 1. There is org.unicode.cldr.util.RegexUtilities.showMismatch (and related methods) that are really useful in debugging cases where regexes fail. You hand it a pattern or matcher and a string, and it shows how far the regex got before it failed. |
| 2. To debug RegexLookup, there is a special call you can make where you pass in a set. On return, that set is filled with a set of strings showing how far each of the regex patterns progressed. You can thus see why a string didn't match as expected. |
| |