# Copyright 2016 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.

import("//build/package.gni")

executable("tests") {
  output_name = "libc-tests"
  testonly = true
  sources = [
    "main.cc",
  ]
  deps = [
    "//third_party/googletest:gtest",
    "//third_party/libc-tests/third_party/nacl-ported-tests/abi:small_tests",
    "//third_party/libc-tests/third_party/nacl-ported-tests/bigalloc:small_tests",
    "//third_party/libc-tests/third_party/nacl-ported-tests/dup:small_tests",
    "//third_party/libc-tests/third_party/nacl-ported-tests/dynamic_linking:small_tests",
    "//third_party/libc-tests/third_party/nacl-ported-tests/libc:small_tests",
    "//third_party/libc-tests/third_party/nacl-ported-tests/longjmp:small_tests",
    "//third_party/libc-tests/third_party/nacl-ported-tests/math:small_tests",
    "//third_party/libc-tests/third_party/nacl-ported-tests/nanosleep:small_tests",
    "//third_party/libc-tests/third_party/nacl-ported-tests/pwrite:small_tests",
    "//third_party/libc-tests/third_party/nacl-ported-tests/redir:small_tests",
    "//third_party/libc-tests/third_party/nacl-ported-tests/sleep:small_tests",
    "//third_party/libc-tests/third_party/nacl-ported-tests/stdargs:small_tests",
    "//third_party/libc-tests/third_party/nacl-ported-tests/syscalls:small_tests",
    "//third_party/libc-tests/third_party/nacl-ported-tests/threads:small_tests",
    "//third_party/libc-tests/third_party/nacl-ported-tests/tls:small_tests",
  ]
}

executable("libc-tests-broken") {
  testonly = true
  sources = [
    "main.cc",
  ]
  deps = [
    "//third_party/googletest:gtest",
    "//third_party/libc-tests/third_party/nacl-ported-tests/fdopen_test:small_tests",
    "//third_party/libc-tests/third_party/nacl-ported-tests/file:small_tests",
    "//third_party/libc-tests/third_party/nacl-ported-tests/libc:small_tests_broken",
    "//third_party/libc-tests/third_party/nacl-ported-tests/syscalls:small_tests_broken",
    "//third_party/libc-tests/third_party/nacl-ported-tests/threads:large_tests_broken",
    "//third_party/libc-tests/third_party/nacl-ported-tests/threads:small_tests_broken",
  ]
}

executable("libc-large-tests") {
  testonly = true
  sources = [
    "main.cc",
  ]
  deps = [
    "//third_party/googletest:gtest",
    "//third_party/libc-tests/third_party/nacl-ported-tests/libc:large_tests",
  ]
}

package("libc-tests") {
  testonly = true
  deprecated_system_image = true

  deps = [
    ":libc-large-tests",
    ":libc-tests-broken",
    ":tests",
  ]

  tests = [
    {
      name = "libc-tests"
    },

    {
      name = "libc-large-tests"
    },
  ]

  binaries = [ {
        name = "libc-tests-broken"
      } ]

  resources = [ {
        path = rebase_path(
                "third_party/nacl-ported-tests/fdopen_test/fdopen_testdata")
        dest = "testdata/fdopen_testdata"
      } ]
}
