From c7c68346c3d62188779077fbadce549e33845a8d Mon Sep 17 00:00:00 2001 From: Martino Luca Date: Wed, 23 May 2018 08:01:58 -0700 Subject: [PATCH] [Test determinator] Add tests Reviewed By: jvillard Differential Revision: D8057028 fbshipit-source-id: 8af9685 --- .gitignore | 1 + Makefile | 1 + .../java_test_determinator/Makefile | 47 +++++++++++++++++++ .../MyFavouriteClassTwo.java.mod1} | 4 +- .../MyFavouriteClassTwo.java.mod2} | 9 ++-- .../MyFavouriteClassTwo.java.original} | 2 + .../java_test_determinator/methods.json.mod1 | 16 +++++++ .../java_test_determinator/methods.json.mod2 | 16 +++++++ .../profiler_samples.json} | 2 +- .../test_determinator.json.mod1.exp | 1 + .../test_determinator.json.mod2.exp | 1 + .../codetoanalyze/java/test_determinator/diff | 1 - 12 files changed, 95 insertions(+), 6 deletions(-) create mode 100644 infer/tests/build_systems/java_test_determinator/Makefile rename infer/tests/{codetoanalyze/java/test_determinator/MyFavouriteClassTwo.java => build_systems/java_test_determinator/MyFavouriteClassTwo.java.mod1} (88%) rename infer/tests/{codetoanalyze/java/test_determinator/MyFavouriteClassOne.java => build_systems/java_test_determinator/MyFavouriteClassTwo.java.mod2} (72%) rename infer/tests/{codetoanalyze/java/test_determinator/tmp.java => build_systems/java_test_determinator/MyFavouriteClassTwo.java.original} (94%) create mode 100644 infer/tests/build_systems/java_test_determinator/methods.json.mod1 create mode 100644 infer/tests/build_systems/java_test_determinator/methods.json.mod2 rename infer/tests/{codetoanalyze/java/test_determinator/test_samples.json => build_systems/java_test_determinator/profiler_samples.json} (95%) create mode 100644 infer/tests/build_systems/java_test_determinator/test_determinator.json.mod1.exp create mode 100644 infer/tests/build_systems/java_test_determinator/test_determinator.json.mod2.exp delete mode 100644 infer/tests/codetoanalyze/java/test_determinator/diff diff --git a/.gitignore b/.gitignore index f1484e4f8..98306b872 100644 --- a/.gitignore +++ b/.gitignore @@ -42,6 +42,7 @@ duplicates.txt /infer/tests/build_systems/diff_*/src /infer/tests/build_systems/buck_flavors_deterministic/capture_hash-*.sha /infer/tests/build_systems/genrule/report.json +/infer/tests/build_systems/java_test_determinator/*.test /_release # generated by oUnit diff --git a/Makefile b/Makefile index d17c1617f..ca7fd8143 100644 --- a/Makefile +++ b/Makefile @@ -83,6 +83,7 @@ BUILD_SYSTEMS_TESTS += \ differential_skip_duplicated_types_on_filenames \ differential_skip_duplicated_types_on_filenames_with_renamings \ gradle \ + java_test_determinator \ javac \ resource_leak_exception_lines \ racerd_dedup diff --git a/infer/tests/build_systems/java_test_determinator/Makefile b/infer/tests/build_systems/java_test_determinator/Makefile new file mode 100644 index 000000000..43b1324cb --- /dev/null +++ b/infer/tests/build_systems/java_test_determinator/Makefile @@ -0,0 +1,47 @@ +# 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. + +# E2E test involving the test_determinator feature + +TESTS_DIR = ../.. +include $(TESTS_DIR)/base.make + +MY_FAVOURITE_CLASS_TWO = MyFavouriteClassTwo.java +TEST_DETERMINATOR_RESULT = infer-out-mod2/test_determinator.json +DIFF_OUTPUT = diff.mod2.test + +default: $(TEST_DETERMINATOR_RESULT) + +$(DIFF_OUTPUT): + $(QUIET)echo -n '$(MY_FAVOURITE_CLASS_TWO):' > diff.mod1.test + $(QUIET)(diff -N --unchanged-line-format="U" --old-line-format="O" --new-line-format="N" \ + $(MY_FAVOURITE_CLASS_TWO).original $(MY_FAVOURITE_CLASS_TWO).mod1 || [ $$? = 1 ]) >> diff.mod1.test + $(QUIET)echo -n '$(MY_FAVOURITE_CLASS_TWO):' > diff.mod2.test + $(QUIET)(diff -N --unchanged-line-format="U" --old-line-format="O" --new-line-format="N" \ + $(MY_FAVOURITE_CLASS_TWO).original $(MY_FAVOURITE_CLASS_TWO).mod2 || [ $$? = 1 ]) >> diff.mod2.test + +$(TEST_DETERMINATOR_RESULT): $(DIFF_OUTPUT) + $(QUIET)$(call silent_on_success,Testing test-determinator with set of changes in mod1,\ + $(INFER_BIN) -o infer-out-mod1 --test-determinator --profiler-samples profiler_samples.json \ + --modified-lines diff.mod1.test --method-decls-info methods.json.mod1) + $(QUIET)$(call silent_on_success,Testing test-determinator with set of changes in mod2,\ + $(INFER_BIN) -o infer-out-mod2 --test-determinator --profiler-samples profiler_samples.json \ + --modified-lines diff.mod2.test --method-decls-info methods.json.mod2) + +.PHONY: test +test: $(TEST_DETERMINATOR_RESULT) + $(QUIET)$(call check_no_diff,test_determinator.json.mod1.exp,infer-out-mod1/test_determinator.json) + $(QUIET)$(call check_no_diff,test_determinator.json.mod2.exp,infer-out-mod2/test_determinator.json) + +.PHONY: replace +replace: $(TEST_DETERMINATOR_RESULT) + $(COPY) infer-out-mod1/test_determinator.json test_determinator.json.mod1.exp + $(COPY) infer-out-mod2/test_determinator.json test_determinator.json.mod2.exp + +.PHONY: clean +clean: + $(REMOVE_DIR) *.test infer-out-mod* diff --git a/infer/tests/codetoanalyze/java/test_determinator/MyFavouriteClassTwo.java b/infer/tests/build_systems/java_test_determinator/MyFavouriteClassTwo.java.mod1 similarity index 88% rename from infer/tests/codetoanalyze/java/test_determinator/MyFavouriteClassTwo.java rename to infer/tests/build_systems/java_test_determinator/MyFavouriteClassTwo.java.mod1 index fd4ef6442..eb392a4e2 100644 --- a/infer/tests/codetoanalyze/java/test_determinator/MyFavouriteClassTwo.java +++ b/infer/tests/build_systems/java_test_determinator/MyFavouriteClassTwo.java.mod1 @@ -8,7 +8,9 @@ */ class MyFavouriteClassTwo { + void methodOne() {} + int methodTwo (int i) { - return i+2; + return i + 2; } } diff --git a/infer/tests/codetoanalyze/java/test_determinator/MyFavouriteClassOne.java b/infer/tests/build_systems/java_test_determinator/MyFavouriteClassTwo.java.mod2 similarity index 72% rename from infer/tests/codetoanalyze/java/test_determinator/MyFavouriteClassOne.java rename to infer/tests/build_systems/java_test_determinator/MyFavouriteClassTwo.java.mod2 index 2d6beda98..de5c739e2 100644 --- a/infer/tests/codetoanalyze/java/test_determinator/MyFavouriteClassOne.java +++ b/infer/tests/build_systems/java_test_determinator/MyFavouriteClassTwo.java.mod2 @@ -6,9 +6,12 @@ * 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. */ -class MyFavouriteClassOne { - void methodOne() { - } +class MyFavouriteClassTwo { + void methodOne() {} + // This is a comment + int methodTwo (int i) { + return i; + } } diff --git a/infer/tests/codetoanalyze/java/test_determinator/tmp.java b/infer/tests/build_systems/java_test_determinator/MyFavouriteClassTwo.java.original similarity index 94% rename from infer/tests/codetoanalyze/java/test_determinator/tmp.java rename to infer/tests/build_systems/java_test_determinator/MyFavouriteClassTwo.java.original index a10458440..5443442f1 100644 --- a/infer/tests/codetoanalyze/java/test_determinator/tmp.java +++ b/infer/tests/build_systems/java_test_determinator/MyFavouriteClassTwo.java.original @@ -8,6 +8,8 @@ */ class MyFavouriteClassTwo { + void methodOne() {} + int methodTwo (int i) { return i; } diff --git a/infer/tests/build_systems/java_test_determinator/methods.json.mod1 b/infer/tests/build_systems/java_test_determinator/methods.json.mod1 new file mode 100644 index 000000000..61e105ecc --- /dev/null +++ b/infer/tests/build_systems/java_test_determinator/methods.json.mod1 @@ -0,0 +1,16 @@ +[ + { + "end_line": 11, + "method_name": "MyFavouriteClassTwo.methodOne", + "signature": "()V", + "source_file": "MyFavouriteClassTwo.java", + "start_line": 11 + }, + { + "end_line": 15, + "method_name": "MyFavouriteClassTwo.methodTwo", + "signature": "(I)I", + "source_file": "MyFavouriteClassTwo.java", + "start_line": 13 + } +] \ No newline at end of file diff --git a/infer/tests/build_systems/java_test_determinator/methods.json.mod2 b/infer/tests/build_systems/java_test_determinator/methods.json.mod2 new file mode 100644 index 000000000..16391ae38 --- /dev/null +++ b/infer/tests/build_systems/java_test_determinator/methods.json.mod2 @@ -0,0 +1,16 @@ +[ + { + "end_line": 12, + "method_name": "MyFavouriteClassTwo.methodOne", + "signature": "()V", + "source_file": "MyFavouriteClassTwo.java", + "start_line": 12 + }, + { + "end_line": 16, + "method_name": "MyFavouriteClassTwo.methodTwo", + "signature": "(I)I", + "source_file": "MyFavouriteClassTwo.java", + "start_line": 14 + } +] \ No newline at end of file diff --git a/infer/tests/codetoanalyze/java/test_determinator/test_samples.json b/infer/tests/build_systems/java_test_determinator/profiler_samples.json similarity index 95% rename from infer/tests/codetoanalyze/java/test_determinator/test_samples.json rename to infer/tests/build_systems/java_test_determinator/profiler_samples.json index c0d3cb52a..2e53c7f03 100644 --- a/infer/tests/codetoanalyze/java/test_determinator/test_samples.json +++ b/infer/tests/build_systems/java_test_determinator/profiler_samples.json @@ -6,7 +6,7 @@ "field4": {}, "methods": [ { - "class": "MyFavouriteClassOne", + "class": "MyFavouriteClassTwo", "id": "", "method": "methodOne", "signature": "()V", diff --git a/infer/tests/build_systems/java_test_determinator/test_determinator.json.mod1.exp b/infer/tests/build_systems/java_test_determinator/test_determinator.json.mod1.exp new file mode 100644 index 000000000..262097c58 --- /dev/null +++ b/infer/tests/build_systems/java_test_determinator/test_determinator.json.mod1.exp @@ -0,0 +1 @@ +["label1"] \ No newline at end of file diff --git a/infer/tests/build_systems/java_test_determinator/test_determinator.json.mod2.exp b/infer/tests/build_systems/java_test_determinator/test_determinator.json.mod2.exp new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/infer/tests/build_systems/java_test_determinator/test_determinator.json.mod2.exp @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/infer/tests/codetoanalyze/java/test_determinator/diff b/infer/tests/codetoanalyze/java/test_determinator/diff deleted file mode 100644 index 4256067bb..000000000 --- a/infer/tests/codetoanalyze/java/test_determinator/diff +++ /dev/null @@ -1 +0,0 @@ -MyFavouriteClassTwo.java:UUUUUUUUUONUONUU \ No newline at end of file