# This file contains a list of fusl-backed Mojo apptests to run. For
# description of the file format, see `mojo_test` in devtools.

# TODO(kulakowski) Figure out how to deduplicate app tests. There's no
# particular reason to run against both the host glibc and fusl.

import os.path

_ORIGIN = os.path.join(os.path.dirname(shell_path), "fusl_x64")
_ORIGIN_ARG = "--origin=file://" + _ORIGIN

tests = [
  {
    "test": "mojo:asset_bundle_apptests",
    "shell-args": [ _ORIGIN_ARG ],
  },
  {
    "test": "mojo:authenticating_url_loader_interceptor_apptests",
    "shell-args": [ _ORIGIN_ARG ],
  },
  {
    "test": "mojo:benchmark_apptests",
    "shell-args": [ _ORIGIN_ARG ],
  },
  {
    "test": "mojo:clipboard_apptests",
    "shell-args": [ _ORIGIN_ARG ],
  },
  {
    "test": "mojo:example_apptests",
    # ExampleApplicationTest.CheckCommandLineArg checks --example_apptest_arg.
    "shell-args": [ _ORIGIN_ARG ],
    "test-args": ["--example_apptest_arg"],
  },
  {
    "test": "mojo:example_apptests",
    "name": "mojo:example_apptests (multiprocess)",
    # ExampleApplicationTest.CheckCommandLineArg checks --example_apptest_arg.
    "test-args": ["--example_apptest_arg"],
    "shell-args": [
      _ORIGIN_ARG,
      "--enable-multiprocess"
    ],
  },
  {
    "test": "mojo:files_apptests",
    "shell-args": [ _ORIGIN_ARG ],
  },
  {
    "test": "mojo:http_server_apptests",
    "shell-args": [ _ORIGIN_ARG ],
  },
  {
    "test": "mojo:log_impl_apptests",
    "shell-args": [ _ORIGIN_ARG ],
  },
  {
    "test": "mojo:moterm_apptests",
    "shell-args": [ _ORIGIN_ARG ],
  },
  {
    "test": "mojo:prediction_apptests",
    "shell-args": [ _ORIGIN_ARG ],
  },
  {
    "test": "mojo:url_response_disk_cache_apptests",
    "shell-args": [ _ORIGIN_ARG ],
  },
  {
  "test": "mojo:example_apptests",
    "name": "mojo:example_apptests (python_example_service)",
    # ExampleApplicationTest.CheckCommandLineArg checks --example_apptest_arg.
    "test-args": ["--example_apptest_arg"],
    "shell-args": [
      "--url-mappings=mojo:example_service=mojo:python_example_service",
      _ORIGIN_ARG,
    ],
  },
  {
  "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",
      _ORIGIN_ARG,
    ],
  }
]
