blob: 038cfeeca836e2e42eaad9ad6b08d0fcf191c913 [file] [log] [blame]
# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# FuzzTest: a coverage-guided fuzzing / property-based testing framework.
load("@rules_proto//proto:defs.bzl", "proto_library")
package(default_visibility = ["//visibility:public"])
licenses(["notice"])
exports_files(["LICENSE"])
cc_library(
name = "absl_domain",
hdrs = ["internal/absl_domain.h"],
deps = [
":logging",
"@com_google_absl//absl/time",
],
)
cc_library(
name = "compatibility_mode",
srcs = ["internal/compatibility_mode.cc"],
hdrs = ["internal/compatibility_mode.h"],
deps = [
":fixture_driver",
":logging",
":runtime",
"@com_google_absl//absl/random:distributions",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/time",
],
)
cc_library(
name = "coverage",
srcs = ["internal/coverage.cc"],
hdrs = ["internal/coverage.h"],
deps = [
":logging",
":table_of_recent_compares",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/types:span",
],
)
cc_library(
name = "table_of_recent_compares",
hdrs = ["internal/table_of_recent_compares.h"],
deps = [
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/random:distributions",
],
)
cc_test(
name = "table_of_recent_compares_test",
srcs = ["internal/table_of_recent_compares_test.cc"],
deps = [
":domain",
":table_of_recent_compares",
"@com_google_absl//absl/random",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "domain",
srcs = ["internal/grammar.cc"],
hdrs = [
"domain.h",
"internal/domain.h",
"internal/grammar.h",
"internal/protobuf_domain.h",
],
deps = [
":absl_domain",
":coverage",
":logging",
":meta",
":polymorphic_value",
":regexp",
":serialization",
":table_of_recent_compares",
":type_support",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/numeric:bits",
"@com_google_absl//absl/numeric:int128",
"@com_google_absl//absl/random",
"@com_google_absl//absl/random:bit_gen_ref",
"@com_google_absl//absl/random:distributions",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/synchronization",
"@com_google_absl//absl/time",
"@com_google_absl//absl/types:span",
],
)
cc_library(
name = "fixture_driver",
hdrs = ["internal/fixture_driver.h"],
deps = [
":logging",
":registration",
":type_support",
],
)
cc_test(
name = "fixture_driver_test",
size = "small",
srcs = ["internal/fixture_driver_test.cc"],
deps = [
":domain",
":fixture_driver",
":registration",
":type_support",
"@com_google_absl//absl/types:span",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "fuzztest",
srcs = ["fuzztest.cc"],
hdrs = ["fuzztest.h"],
deps = [
":domain",
":registry",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
],
)
cc_library(
name = "fuzztest_gtest_main",
testonly = 1,
srcs = ["fuzztest_gtest_main.cc"],
deps = [
":fuzztest",
":googletest_adaptor",
":runtime",
"@com_google_absl//absl/flags:flag",
"@com_google_absl//absl/flags:parse",
"@com_google_absl//absl/time",
"@com_google_googletest//:gtest",
],
)
cc_library(
name = "googletest_adaptor",
testonly = True,
hdrs = ["googletest_adaptor.h"],
deps = [
":registry",
":runtime",
"@com_google_googletest//:gtest",
],
)
cc_library(
name = "googletest_fixture_adapter",
testonly = True,
hdrs = ["googletest_fixture_adapter.h"],
deps = [
":fixture_driver",
"@com_google_googletest//:gtest",
],
)
cc_library(
name = "io",
srcs = ["internal/io.cc"],
hdrs = ["internal/io.h"],
deps = [
":logging",
"@com_google_absl//absl/hash",
"@com_google_absl//absl/strings:str_format",
],
)
cc_test(
name = "io_test",
srcs = ["internal/io_test.cc"],
deps = [
":fuzztest",
":io",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "logging",
srcs = ["internal/logging.cc"],
hdrs = ["internal/logging.h"],
deps = [
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "meta",
hdrs = ["internal/meta.h"],
deps = ["@com_google_absl//absl/numeric:int128"],
)
cc_library(
name = "polymorphic_value",
hdrs = ["internal/polymorphic_value.h"],
deps = [
":logging",
":meta",
],
)
cc_test(
name = "polymorphic_value_test",
srcs = ["internal/polymorphic_value_test.cc"],
deps = [
":polymorphic_value",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "regexp",
srcs = ["internal/regexp.cc"],
hdrs = ["internal/regexp.h"],
deps = [
":logging",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/random:distributions",
"@com_googlesource_code_re2//:re2",
],
)
cc_library(
name = "registration",
hdrs = ["internal/registration.h"],
deps = [
":domain",
":meta",
":type_support",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/types:span",
],
)
cc_library(
name = "registry",
srcs = ["internal/registry.cc"],
hdrs = ["internal/registry.h"],
deps = [
":compatibility_mode",
":fixture_driver",
":registration",
":runtime",
"@com_google_absl//absl/container:flat_hash_map",
],
)
cc_library(
name = "runtime",
srcs = ["internal/runtime.cc"],
hdrs = ["internal/runtime.h"],
deps = [
":coverage",
":domain",
":fixture_driver",
":io",
":logging",
":meta",
":polymorphic_value",
":registration",
":seed_seq",
":serialization",
":type_support",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/functional:function_ref",
"@com_google_absl//absl/random",
"@com_google_absl//absl/random:distributions",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/time",
"@com_google_absl//absl/types:span",
],
)
cc_test(
name = "runtime_test",
srcs = ["internal/runtime_test.cc"],
deps = [
":domain",
":runtime",
":test_protobuf_cc_proto",
"@com_google_absl//absl/time",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "seed_seq",
srcs = ["internal/seed_seq.cc"],
hdrs = ["internal/seed_seq.h"],
deps = [
":logging",
"@com_google_absl//absl/random",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/types:span",
],
)
cc_test(
name = "seed_seq_test",
srcs = ["internal/seed_seq_test.cc"],
deps = [
":seed_seq",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/types:span",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "serialization",
srcs = ["internal/serialization.cc"],
hdrs = ["internal/serialization.h"],
deps = [
":logging",
":meta",
"@com_google_absl//absl/numeric:int128",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/types:span",
"@com_google_absl//absl/types:variant",
],
)
cc_test(
name = "serialization_test",
srcs = ["internal/serialization_test.cc"],
deps = [
":serialization",
":test_protobuf_cc_proto",
"@com_google_googletest//:gtest_main",
"@com_google_protobuf//:protobuf",
],
)
cc_library(
name = "subprocess",
srcs = ["internal/subprocess.cc"],
hdrs = ["internal/subprocess.h"],
deps = [
":logging",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/time",
],
)
cc_test(
name = "subprocess_test",
srcs = ["internal/subprocess_test.cc"],
deps = [
":subprocess",
"@com_google_absl//absl/time",
"@com_google_googletest//:gtest_main",
],
)
proto_library(
name = "test_protobuf",
srcs = ["internal/test_protobuf.proto"],
)
cc_proto_library(
name = "test_protobuf_cc_proto",
deps = [":test_protobuf"],
)
cc_library(
name = "type_support",
srcs = ["internal/type_support.cc"],
hdrs = ["internal/type_support.h"],
deps = [
":absl_domain",
":meta",
"@com_google_absl//absl/debugging:symbolize",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/time",
],
)
cc_test(
name = "type_support_test",
srcs = ["internal/type_support_test.cc"],
deps = [
":domain",
":test_protobuf_cc_proto",
":type_support",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/time",
"@com_google_googletest//:gtest_main",
],
)