# Copyright 2019 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/test.gni")
import("//src/sys/build/fuchsia_unittest_package.gni")

static_library("parser") {
  sources = [
    "ast.cc",
    "ast.h",
    "combinators.cc",
    "combinators.h",
    "error.cc",
    "error.h",
    "parse_result.cc",
    "parse_result.h",
    "parser.cc",
    "parser.h",
    "text_match.cc",
    "text_match.h",
  ]

  deps = [
    "//sdk/lib/syslog/cpp",
    "//third_party/icu",
    "//zircon/public/lib/fit",
  ]

  public_deps = [ "//sdk/lib/syslog/cpp" ]

}

test("parser_tests_bin") {
  sources = [
    "combinator_test.cc",
    "error_test.cc",
    "parser_test.cc",
    "text_match_test.cc",
  ]

  deps = [
    ":parser",
    "//src/lib/fxl/test:gtest_main",
    "//zircon/public/lib/fit",
  ]
}

fuchsia_unittest_package("shell-parser-unittests") {
  executable_path = "test/parser_tests_bin"
  deps = [ ":parser_tests_bin" ]
}
