# 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|msw): Add a way of specifying data dependencies.

tests = [
  {
    "test": "mojo:clipboard_apptests",
  },
  {
    "test": "mojo:example_apptests",
    # ExampleApplicationTest.CheckCommandLineArg checks --example_apptest_arg.
    "test-args": ["--example_apptest_arg"],
  },
  {
    "test": "mojo:example_apptests",
    # ExampleApplicationTest.CheckCommandLineArg checks --example_apptest_arg.
    "test-args": ["--example_apptest_arg"],
    "shell-args": ["--enable-multiprocess"],
  },
  {
    "test": "mojo:files_apptests",
  },
  {
    "test": "mojo:http_server_apptests",
  },
  {
    "test": "mojo:network_service_apptests",
  },
  {
    "test": "mojo:mojo_view_manager_client_apptests",
    "shell-args": ["--args-for=mojo:native_viewport_service --use-headless-config --use-osmesa"],
  },
  {
    "test": "mojo:view_manager_service_apptests",
    "shell-args": ["--args-for=mojo:native_viewport_service --use-headless-config --use-osmesa"],
  },
  {
    "test": "mojo:window_manager_apptests",
  },
]

if config.target_os == config.OS_LINUX:
  tests += [
    {
      "test": "mojo:example_apptests",
      # ExampleApplicationTest.CheckCommandLineArg checks --example_apptest_arg.
      "test-args": ["--example_apptest_arg"],
      "shell-args": [
        "--url-mappings=mojo:example_service=mojo:python_example_service"
      ],
    },
    # TODO(vtl): See TODO in //services/files/c/BUILD.gn.
    {
      "test": "mojo:mojio_apptests",
    },
    {
      "test": "mojo:mojo_url_redirector_apptests",
      "test-args": ["--redirector_port=49152",
                    "--app_location_files_port=49153"],
      "shell-args": ["--args-for=mojo:mojo_url_redirector 0.0.0.0:49152 http://localhost:49153"],
    }
  ]

if config.target_os == config.OS_ANDROID:
  tests += [
    {
      "test": "mojo:example_apptests",
      # ExampleApplicationTest.CheckCommandLineArg checks --example_apptest_arg.
      "test-args": ["--example_apptest_arg"],
      "shell-args": [
        "--url-mappings=mojo:example_service=mojo:android_example_service"
      ],
    },
  ]

if config.target_os != config.OS_ANDROID:
  tests += [
    {
      "test": "mojo:js_apptests",
    },
    {
      "test": "mojo:reaper_apptests",
    },
    {
      "test": "mojo:dart_apptests",
      "type": "dart",
    },
    {
      # https://github.com/domokit/mojo/issues/61
      # Sometime the shell get a trucated application when exposed through the
      # http server.
      "test": "mojo:shell_apptests",
    },
  ]
