tree: 7bd382ac84947af9c939fc5dd415501024084a4e [path history] [tgz]
  1. code_generator_tests/
  2. collision_tests/
  3. config_tests/
  4. example_tests/
  5. header_parser_tests/
  6. large_integration_tests/
  7. native_objc_test/
  8. native_test/
  9. rename_tests/
  10. README.md
  11. regen.dart
  12. setup.dart
  13. test_utils.dart
test/README.md

Build Status Coverage Status

ffigen testing

Running Tests

  1. Some tests require that dynamic libraries be built before running the tests. You can do so with:

    dart run test/setup.dart
    
  2. Run the tests with:

    dart test
    

Development

Some tests verify that the generated Dart FFI bindings match a golden file.

For example, the test test/native_test/native_test.dart works by:

  1. Loading the dynamic library for test/native_test/native_test.c (which was generated by dart run test/setup.dart).

  2. Generating binding files for that dynamic library in the test/debug_generated directory.

  3. Comparing the golden file (i.e. test/native_test/native_test_bindings.dart) to the generated file and generating a test failure if they do not match.

  4. Using the golden bindings to excercise the dynamic library.

If you modify any source for a dynamic library (e.g. any .c, .h or .m files), then you should run:

   dart run test/setup.dart  # Rebuild the dynamic libraries.
   dart run test/regen.dart  # Rebuild the golden FFI bindings.

If you modify any code that changes how FFI bindings are generated, then you should run:

dart run test/regen.dart  # Rebuild the golden FFI bindings.

A conservative way to run tests is with:

dart run test/setup.dart && dart run test/regen.dart && dart test

Note: you should verify that the changes to the golden bindings are reasonable with git diff.