[tests] tests for reporting cross-module errors with buck

Reviewed By: jeremydubreil

Differential Revision: D5015626

fbshipit-source-id: 426597a
master
Sam Blackshear 8 years ago committed by Facebook Github Bot
parent 29f7967f26
commit fe8142deb8

@ -0,0 +1,31 @@
# Copyright (c) 2017 - 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.
TESTS_DIR = ../..
ROOT_DIR = $(TESTS_DIR)/../..
ANALYZER = infer
BUCK_TARGET = //infer/tests/build_systems/buck_cross_module/module2:module2
INFERPRINT_OPTIONS = --project-root $(ROOT_DIR) --issues-tests
CLEAN_EXTRA = $(ROOT_DIR)/buck-out
include $(TESTS_DIR)/java.make
include $(TESTS_DIR)/infer.make
$(OBJECTS): $(JAVA_SOURCE_FILES)
$(QUIET)cd $(ROOT_DIR) && \
$(call silent_on_success,Compiling Buck cross module test tests,\
INFER_BIN=$(INFER_BIN) NO_BUCKD=1 \
$(BUCK) build --no-cache $(BUCK_TARGET))
infer-out/report.json: $(JAVA_DEPS) $(JAVA_SOURCE_FILES)
$(QUIET)cd $(ROOT_DIR) && \
$(REMOVE_DIR) buck-out && \
$(call silent_on_success,Testing Buck Java cross module integration,\
INFER_BIN=$(INFER_BIN) NO_BUCKD=1 \
$(INFER_BIN) -a $(ANALYZER) --results-dir $(CURDIR)/infer-out -- \
$(BUCK) build --no-cache $(BUCK_TARGET))

@ -0,0 +1,2 @@
infer/tests/build_systems/buck_cross_module/module2/Class2.java, void Class2.crossModuleNPE1(), 1, NULL_DEREFERENCE, [start of procedure crossModuleNPE1(),start of procedure returnsNull(),return from a call to String Class1.returnsNull()]
infer/tests/build_systems/buck_cross_module/module2/Class2.java, void Class2.crossModuleNPE2(Class1), 1, NULL_DEREFERENCE, [start of procedure crossModuleNPE2(...)]

@ -0,0 +1,10 @@
java_library(
name='module1',
srcs=['Class1.java'],
deps=[
'//infer/tests/build_systems/genrule/annotations:annotations',
],
visibility=[
'PUBLIC'
],
)

@ -0,0 +1,22 @@
/*
* Copyright (c) 2017 - 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.
*/
package crossmodule.module1;
import genrule.annotations.Nullable;
public class Class1 {
public static String returnsNull() {
return null;
}
@Nullable public Object nullableField;
}

@ -0,0 +1,7 @@
java_library(
name='module2',
srcs=['Class2.java'],
deps=[
'//infer/tests/build_systems/buck_cross_module/module1:module1'
]
)

@ -0,0 +1,24 @@
/*
* Copyright (c) 2017 - 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.
*/
package crossmodule.module2;
import crossmodule.module1.Class1;
public class Class2 {
void crossModuleNPE1() {
Class1.returnsNull().toString();
}
void crossModuleNPE2(Class1 c) {
c.nullableField.toString();
}
}
Loading…
Cancel
Save