diff --git a/Makefile b/Makefile index d2c794d95..4720d7c41 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,8 @@ ifeq ($(IS_FACEBOOK_TREE),yes) include $(ROOT_DIR)/facebook/Makefile.env endif -BUILD_SYSTEMS_TESTS = assembly ck_analytics ck_imports clang_translation linters project_root_rel +BUILD_SYSTEMS_TESTS = \ + assembly ck_analytics ck_imports clang_translation delete_results_dir linters project_root_rel ifneq ($(ANT),no) BUILD_SYSTEMS_TESTS += ant endif diff --git a/infer/tests/build_systems/build_integration_tests.py b/infer/tests/build_systems/build_integration_tests.py index dfc519216..2bfbe0302 100755 --- a/infer/tests/build_systems/build_integration_tests.py +++ b/infer/tests/build_systems/build_integration_tests.py @@ -61,7 +61,6 @@ CODETOANALYZE_DIR = os.path.join(SCRIPT_DIR, 'codetoanalyze') EXPECTED_OUTPUTS_DIR = os.path.join(SCRIPT_DIR, 'expected_outputs') ALL_TESTS = [ - 'delete', 'fail', 'gradle', 'javac', @@ -496,15 +495,6 @@ class BuildIntegrationTest(unittest.TestCase): extra_check=pmd_check, available=lambda: has_lxml) - def test_infer_deletes_infer_out(self): - # Test that two consecutive analyses do not pollute each other: - # the expected results of running infer on hello.c then on - # hello2.c is that only the bug in hello2.c is reported. - test('delete', 'infer deletes infer-out', - CODETOANALYZE_DIR, - [{'compile': ['clang', '-c', 'hello.c']}, - {'compile': ['clang', '-c', 'hello2.c']}]) - if __name__ == '__main__': # hackish capturing of the arguments after '--' diff --git a/infer/tests/build_systems/delete_results_dir/Makefile b/infer/tests/build_systems/delete_results_dir/Makefile new file mode 100644 index 000000000..2bacaa5f8 --- /dev/null +++ b/infer/tests/build_systems/delete_results_dir/Makefile @@ -0,0 +1,31 @@ +# Copyright (c) 2016 - present Facebook, Inc. +# All rights reserved. +# +# This source code is licensed under the BSD style license found in the +# LICENSE file in the root directory of this source tree. An additional grant +# of patent rights can be found in the PATENTS file in the same directory. + +# Test that two consecutive analyses do not pollute each other: the expected results of running +# infer on hello.c then on hello2.c is that only the bug in hello2.c is reported. + +TESTS_DIR = ../.. + +ANALYZER = infer + +CODETOANALYZE_DIR = ../codetoanalyze + +CLANG_OPTIONS = -c +INFER_OPTIONS = --project-root $(CODETOANALYZE_DIR) +INFERPRINT_OPTIONS = --issues-tests + +SOURCES = $(CODETOANALYZE_DIR)/hello.c $(CODETOANALYZE_DIR)/hello2.c + +include $(TESTS_DIR)/clang.make + +infer-out/report.json: $(CLANG_DEPS) $(SOURCES) + $(call silent_on_success,\ + $(INFER_BIN) --check-duplicate-symbols $(INFER_OPTIONS) -a $(ANALYZER) -- clang $(CLANG_OPTIONS) $(CODETOANALYZE_DIR)/hello.c 2>duplicates.txt) + grep "DUPLICATE_SYMBOLS" duplicates.txt; test $$? -ne 0 + $(call silent_on_success,\ + $(INFER_BIN) --check-duplicate-symbols $(INFER_OPTIONS) -a $(ANALYZER) -- clang $(CLANG_OPTIONS) $(CODETOANALYZE_DIR)/hello2.c 2>duplicates.txt) + grep "DUPLICATE_SYMBOLS" duplicates.txt; test $$? -ne 0 diff --git a/infer/tests/build_systems/delete_results_dir/issues.exp b/infer/tests/build_systems/delete_results_dir/issues.exp new file mode 100644 index 000000000..5b971aac1 --- /dev/null +++ b/infer/tests/build_systems/delete_results_dir/issues.exp @@ -0,0 +1 @@ +hello2.c, test2, 2, NULL_DEREFERENCE, [start of procedure test2()] diff --git a/infer/tests/build_systems/expected_outputs/delete_report.json b/infer/tests/build_systems/expected_outputs/delete_report.json deleted file mode 100644 index d8597895b..000000000 --- a/infer/tests/build_systems/expected_outputs/delete_report.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - { - "bug_type": "NULL_DEREFERENCE", - "file": "hello2.c", - "procedure": "test2" - } -] \ No newline at end of file