# 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("//packages/package.gni")

executable("tests") {
  output_name = "libc-tests"
  testonly = true
  sources = [
    "main.cc",
  ]
  deps = [
    "//third_party/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/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/gtest",
    "//third_party/libc-tests/third_party/nacl-ported-tests/libc:large_tests",
  ]
}

package("libc-tests") {
  testonly = 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"
      } ]
}
