Home | History | Annotate | Download | only in tests
      1 
      2 licenses(["notice"])
      3 
      4 TEST_HEADERS = [
      5    "test_macros.h",
      6    "test_common.h",
      7    "class_construction_tracker.h",
      8 ]
      9 
     10 filegroup(
     11     name = "test_headers_filegroup",
     12     srcs = TEST_HEADERS,
     13     visibility = ["//third_party/fruit/tests:__subpackages__"],
     14 )
     15 
     16 cc_library(
     17     name = "test_headers",
     18     srcs = [],
     19     hdrs = TEST_HEADERS,
     20     visibility = ["//third_party/fruit/tests:__subpackages__"],
     21     includes = ["."],
     22 )
     23 
     24 [cc_test(
     25     name = filename[:-4],
     26     srcs = [filename],
     27     deps = [
     28         ":test_headers",
     29         "//third_party/fruit",
     30     ]
     31 ) for filename in glob(
     32     ["*.cpp"],
     33     exclude = ["include_test.cpp"])]
     34 
     35 FRUIT_PUBLIC_HEADERS = [
     36     "component",
     37     "fruit",
     38     "fruit_forward_decls",
     39     "injector",
     40     "macro",
     41     "normalized_component",
     42     "provider",
     43 ]
     44 
     45 genrule(
     46     name = "fruit_test_config_genrule",
     47     srcs = [
     48         "//third_party/fruit",
     49         "//third_party/fruit:fruit_headers",
     50         ":test_headers_filegroup",
     51     ],
     52     # Here we copy libfruit.so to work around an issue with py_test where the outputs of a cc_library in the data
     53     # attribute of a py_test are not taken into account.
     54     outs = [
     55         "fruit_test_config.py",
     56         "libfruit.so"
     57     ],
     58     visibility = ["//third_party/fruit/tests:__subpackages__"],
     59     cmd = ""
     60           + "FRUIT_HEADERS_LOCATION=`for f in $(locations //third_party/fruit:fruit_headers); do echo \"$$f\"; done | fgrep configuration/bazel/ | head -n 1 | sed 's|configuration/bazel/.*|./|'`;"
     61           + "TEST_HEADERS_LOCATION=`for f in $(locations :test_headers_filegroup); do echo \"$$f\"; done | fgrep test_macros.h | sed 's|test_macros.h|./|'`;"
     62           + "LIBFRUIT_LOCATION=`for f in $(locations //third_party/fruit); do echo \"$$f\"; done | fgrep libfruit.so | head -n 1 | sed 's|libfruit.so|./|'`;"
     63           + "cp $${LIBFRUIT_LOCATION}/libfruit.so $(location libfruit.so);"
     64           # The removal of ".*/genfiles" from the location is a bit of a hack, but that's how the path will look like in the py_tests
     65           # below.
     66           + "LIBFRUIT_COPY_DIR_LOCATION=`dirname $(location libfruit.so) | sed 's|.*/genfiles/|./|'`;"
     67           + "LIBFRUIT_COPY_LOCATION=`echo $(location libfruit.so) | sed 's|.*/genfiles/|./|'`;"
     68           + "echo -e \""
     69           + "CXX='g++'\n"
     70           + "CXX_COMPILER_NAME='GNU'\n"
     71           + "CXX_COMPILER_VERSION='5.0.0'\n"
     72           + "FRUIT_COMPILE_FLAGS='$(CC_FLAGS) -std=c++0x -W -Wall -Wno-missing-braces -g -Werror'\n"
     73           + "ADDITIONAL_INCLUDE_DIRS=''\n"
     74           + "CMAKE_BUILD_TYPE=None\n"
     75           + "PATH_TO_COMPILED_FRUIT='$${LIBFRUIT_COPY_DIR_LOCATION}'\n"
     76           + "PATH_TO_COMPILED_FRUIT_LIB='$${LIBFRUIT_COPY_LOCATION}'\n"
     77           + "PATH_TO_FRUIT_STATIC_HEADERS='$${FRUIT_HEADERS_LOCATION}/include'\n"
     78           + "PATH_TO_FRUIT_GENERATED_HEADERS='$${FRUIT_HEADERS_LOCATION}/configuration/bazel'\n"
     79           + "PATH_TO_FRUIT_TEST_HEADERS='$${TEST_HEADERS_LOCATION}'\n"
     80           + "ADDITIONAL_LINKER_FLAGS=''\n"
     81           + "RUN_TESTS_UNDER_VALGRIND='0'\n"
     82           + "VALGRIND_FLAGS=''\n"
     83           + "ENABLE_COVERAGE=False\n"
     84           + "\" > $(location fruit_test_config.py)",
     85 )
     86 
     87 py_library(
     88     name = "fruit_test_common",
     89     srcs = ["fruit_test_common.py", "fruit_test_config.py"],
     90     imports = ["."],
     91     visibility = ["//third_party/fruit/tests:__subpackages__"],
     92 )
     93 
     94 load("//third_party/fruit/tests:build_defs.bzl", "fruit_py_tests")
     95 
     96 fruit_py_tests(
     97     srcs = glob(["test_*.py"]),
     98 )
     99