# Copyright 2020 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

group("fidl") {
  testonly = true

  public_deps = [
    "fidlcparsequality:host",
    "fidldoc($host_toolchain)",
    "fidlgen_go:host",
    "fidlgen_hlcpp:host",
    "fidlgen_libfuzzer:host",
    "fidlgen_llcpp:host",
    "fidlgen_rust:host",
    "fidlgen_syzkaller:host",
    "gidl:host",
    "measure-tape/src:host",
  ]
}

group("tests") {
  testonly = true

  deps = [
    "fidldoc:tests",
    "fidlgen_go:tests",
    "fidlgen_hlcpp:tests",
    "fidlgen_libfuzzer:tests",
    "fidlgen_llcpp:tests",
    "fidlgen_rust:tests",
    "fidlgen_syzkaller:tests",
    "gidl:tests",
    "measure-tape:tests",
  ]
}
