# This file contains a list of Mojo gtest unit tests.
# This must be valid python. It can use the |config| global that will be a
# mopy.config.Config object and must set a |tests| global that will contain the
# tests to run.
# TODO(vtl): Add a way of specifying data dependencies instead of cacheable.

tests = [
  # System tests:
  {
    "test": "mojo_system_unittests",
  },

  # Public tests:
  {
    "test": "mojo_public_bindings_unittests",
    "cacheable": False,
  },
  {
    "test": "mojo_public_environment_unittests",
  },
  {
    "test": "mojo_public_system_unittests",
  },
  {
    "test": "mojo_public_utility_unittests",
  },

  # Non-system, non-public tests:
  {
    "test": "crypto_unittests",
  },
  {
    "test": "mojo_application_manager_unittests",
  },
  {
    "test": "mojo_common_unittests",
  },
  {
    "test": "external_application_unittests",
  },
  {
    "test": "mojo_view_manager_lib_unittests",
  },
  {
    "test": "mojo_surfaces_lib_unittests",
  },
  {
    "test": "view_manager_service_unittests",
  },
  {
    "test": "window_manager_unittests",
  },

  # Shell integration tests:
  {
    "test": "mojo_shell_tests",
    "cacheable": False,
  },
]

if config.target_os != config.OS_ANDROID:
  tests += [
    # Tests for components we depend on:
    {
      "test": "gfx_unittests",
    },
    {
      "test": "events_unittests",
    },

    # JavaScript tests:
    {
      "test": "js_unittests",
      "cacheable": False,
    },
    {
      "test": "js_integration_tests",
      "cacheable": False,
    },
    {
      "test": "js_services_unittests",
      "cacheable": False,
    },
  ]

# TODO: get dart unittests working with android.
if config.target_os != config.OS_ANDROID:
  tests += [
    {
      "test": "dart_unittests",
      "cacheable": False,
    },
  ]
