Add test_build target warnings not fatal otherwise

Summary:public
Adds test_build target to toplevel Makefile, which compiles
InferAnalyze, InferPrint, InferClang, and InferJava where warnings
listed in OCAML_FATAL_WARNINGS defined in infer/src/Makefile are fatal.
Other builds do not treat warnings as fatal.  The test build is
performed in parallel with the tests by scripts/test.sh.  This makes
refactoring and debugging easier, but prevents warnings from slipping
into the repo.

Also, make test target robust wrt parallel make.

Reviewed By: jvillard

Differential Revision: D2953085

fb-gh-sync-id: 5c0282a
shipit-source-id: 5c0282a
master
Josh Berdine 9 years ago committed by facebook-github-bot-4
parent 3a7f4b9d3f
commit b54fbc2776

@ -78,26 +78,28 @@ endif
clang: clang_plugin clang: clang_plugin
endif endif
test_build:
$(MAKE) -C $(SRC_DIR) test_clean
$(MAKE) -C $(SRC_DIR) test_build
buck_test: $(INFER_ANALYZERS) buck_test: $(INFER_ANALYZERS)
NO_BUCKD=1 buck clean NO_BUCKD=1 buck clean
NO_BUCKD=1 buck test $(TARGETS_TO_TEST) NO_BUCKD=1 buck test $(TARGETS_TO_TEST)
ifeq (@BUILD_JAVA_ANALYZERS@,yes)
NO_BUCKD=1 ./scripts/build_integration_tests.py
endif
buck_test_xml: $(INFER_ANALYZERS) buck_test_xml: $(INFER_ANALYZERS)
NO_BUCKD=1 buck clean NO_BUCKD=1 buck clean
NO_BUCKD=1 buck test --xml test.xml $(TARGETS_TO_TEST) NO_BUCKD=1 buck test --xml test.xml $(TARGETS_TO_TEST)
ifeq (@BUILD_JAVA_ANALYZERS@,yes)
build_integration_tests: $(INFER_ANALYZERS)
NO_BUCKD=1 ./scripts/build_integration_tests.py NO_BUCKD=1 ./scripts/build_integration_tests.py
endif
test: buck_test test: buck_test
test_xml: buck_test_xml test_xml: buck_test_xml
ifeq (@BUILD_JAVA_ANALYZERS@,yes)
test: build_integration_tests
test_xml: build_integration_tests
endif
clean: clean:
@rm -fv test.xml @rm -fv test.xml
ifeq (@BUILD_C_ANALYZERS@,yes) ifeq (@BUILD_C_ANALYZERS@,yes)
@ -106,4 +108,4 @@ ifeq (@BUILD_C_ANALYZERS@,yes)
endif endif
$(MAKE) -C $(INFER_DIR) clean $(MAKE) -C $(INFER_DIR) clean
.PHONY: all build_integration_tests clean clang clang_plugin clang_setup java test test_xml .PHONY: all build_integration_tests clean clang clang_plugin clang_setup java test test_xml test_build

@ -39,6 +39,8 @@ ETC_DIR = $(INFER_DIR)/etc
#### ocamlbuild options #### #### ocamlbuild options ####
OCAML_FATAL_WARNINGS = +5+6+8+10+11+12+18+19+20+26+29+27+32+33+34+35+37+38+39
OCAMLBUILD_OPTIONS = \ OCAMLBUILD_OPTIONS = \
-classic-display \ -classic-display \
-cflags -short-paths \ -cflags -short-paths \
@ -46,26 +48,7 @@ OCAMLBUILD_OPTIONS = \
-cflags -principal \ -cflags -principal \
-cflags -strict-formats \ -cflags -strict-formats \
-cflags -strict-sequence \ -cflags -strict-sequence \
-cflags -w,@5 \ -cflags -w,$(OCAML_FATAL_WARNINGS)-4-9-40-41-42-45-48-50 \
-cflags -w,@6 \
-cflags -w,@8 \
-cflags -w,@10 \
-cflags -w,@11 \
-cflags -w,@12 \
-cflags -w,@18 \
-cflags -w,@19 \
-cflags -w,@20 \
-cflags -w,@26 \
-cflags -w,@29 \
-cflags -w,@27 \
-cflags -w,@32 \
-cflags -w,@33 \
-cflags -w,@34 \
-cflags -w,@35 \
-cflags -w,@37 \
-cflags -w,@38 \
-cflags -w,@39 \
-cflags -w,-40..42 \
-tag-line "<*{clang/clang_ast_*,backend/jsonbug_*}>: warn(-27-32-35-39)" \ -tag-line "<*{clang/clang_ast_*,backend/jsonbug_*}>: warn(-27-32-35-39)" \
-tag-line "not <**/{config,iList,utils}.*>: open(Utils)" \ -tag-line "not <**/{config,iList,utils}.*>: open(Utils)" \
-pkgs atdgen,extlib,str,unix,yojson,zip -pkgs atdgen,extlib,str,unix,yojson,zip
@ -199,6 +182,14 @@ byte: init $(INFERPRINT_ATDGEN_STUBS) $(CLANG_ATDGEN_STUBS) $(INFER_CLANG_FCP_MI
$(INFERJAVA_MAIN).byte \ $(INFERJAVA_MAIN).byte \
$(INFERCLANG_MAIN).byte $(INFERCLANG_MAIN).byte
test_build: init $(INFERPRINT_ATDGEN_STUBS) $(CLANG_ATDGEN_STUBS) $(INFER_CLANG_FCP_MIRRORED_FILES)
$(OCAMLBUILD) -build-dir $(TEST_BUILD_DIR) $(JAVA_OCAMLBUILD_OPTIONS) \
-cflags -warn-error,$(OCAML_FATAL_WARNINGS) \
$(INFERANALYZE_MAIN).byte \
$(INFERPRINT_MAIN).byte \
$(INFERJAVA_MAIN).byte \
$(INFERCLANG_MAIN).byte
ifeq (@ENABLE_OCAML_ANNOT@,yes) ifeq (@ENABLE_OCAML_ANNOT@,yes)
java_annotations: build_java java_annotations: build_java
rsync -a --include '*/' --include '*.annot' --exclude '*' $(JAVA_BUILD_DIR)/ $(ANNOT_DIR)/ rsync -a --include '*/' --include '*.annot' --exclude '*' $(JAVA_BUILD_DIR)/ $(ANNOT_DIR)/
@ -300,6 +291,9 @@ $(INFERLLVM_BIN): build_llvm
$(CHECKCOPYRIGHT_BIN): build_checkCopyright $(CHECKCOPYRIGHT_BIN): build_checkCopyright
$(COPY) $(SCRIPTS_BUILD_DIR)/$(CHECKCOPYRIGHT_MAIN).native $(CHECKCOPYRIGHT_BIN) $(COPY) $(SCRIPTS_BUILD_DIR)/$(CHECKCOPYRIGHT_MAIN).native $(CHECKCOPYRIGHT_BIN)
test_clean:
$(REMOVE_DIR) $(TEST_BUILD_DIR)
clean: clean:
$(REMOVE_DIR) $(BUILD_DIR) $(REMOVE_DIR) $(BUILD_DIR)
ifeq (@ENABLE_OCAML_ANNOT@,yes) ifeq (@ENABLE_OCAML_ANNOT@,yes)

@ -18,4 +18,4 @@ if [ "$1" == "--xml" ]; then
XML="_xml" XML="_xml"
fi fi
make -C "$INFER_DIR" test$XML make -j -C "$INFER_DIR" test_build test$XML

Loading…
Cancel
Save