[tests] stop sharing the root buck repo in java tests
Summary:
When multiple buck java tests use the same `buck-out` they sometimes fail. This isn't surprising, as they presumably clobber each other's output when running on the same files.
Since there is no reason to have this global, shared buck repo, create one for each test, inside the test directory. Also, clean up the Makefiles a bit -- they provide bogus compile targets, for example, and have mostly wrong source dependencies.
That done, remove the `testlock` crutch which enforces mutual exclusion between tests, from the buck/java tests.
I do not understand why the buck clang tests can share the global repo without failure, but there you go.
Reviewed By: jvillard
Differential Revision: D15579133
fbshipit-source-id: 7eff79173
6 years ago
|
|
|
/*
|
|
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
[tests] stop sharing the root buck repo in java tests
Summary:
When multiple buck java tests use the same `buck-out` they sometimes fail. This isn't surprising, as they presumably clobber each other's output when running on the same files.
Since there is no reason to have this global, shared buck repo, create one for each test, inside the test directory. Also, clean up the Makefiles a bit -- they provide bogus compile targets, for example, and have mostly wrong source dependencies.
That done, remove the `testlock` crutch which enforces mutual exclusion between tests, from the buck/java tests.
I do not understand why the buck clang tests can share the global repo without failure, but there you go.
Reviewed By: jvillard
Differential Revision: D15579133
fbshipit-source-id: 7eff79173
6 years ago
|
|
|
*
|
|
|
|
* This source code is licensed under the MIT license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree.
|
|
|
|
*/
|
|
|
|
|
|
|
|
package genrule.module2;
|
|
|
|
|
|
|
|
import genrule.annotations.Nullable;
|
|
|
|
import genrule.module1.Class1;
|
|
|
|
import genrule.module1.SkipImplementationClass1;
|
|
|
|
|
|
|
|
public class Class2 {
|
|
|
|
|
|
|
|
@Nullable Object field;
|
|
|
|
|
|
|
|
void localNPE2Bad() {
|
|
|
|
Object obj = null;
|
|
|
|
obj.toString();
|
|
|
|
}
|
|
|
|
|
|
|
|
void interTargetNPEBad() {
|
|
|
|
Object obj = Class1.returnsNull();
|
|
|
|
obj.toString();
|
|
|
|
}
|
|
|
|
|
|
|
|
void interTargetAbstractNPEBad(Class1 class1) {
|
|
|
|
Object obj = class1.abstractMayReturnNull();
|
|
|
|
obj.toString();
|
|
|
|
}
|
|
|
|
|
|
|
|
void interTargetNativeNPEBad(Class1 class1) {
|
|
|
|
Object obj = class1.nativeMayReturnNull();
|
|
|
|
obj.toString();
|
|
|
|
}
|
|
|
|
|
|
|
|
void followMethodDeclarationOnlyBad(SkipImplementationClass1 obj1) {
|
|
|
|
Object obj2 = obj1.annotatedNullable();
|
|
|
|
obj2.toString();
|
|
|
|
}
|
|
|
|
|
|
|
|
void followMethodDeclarationOnlyOk(SkipImplementationClass1 obj1) {
|
|
|
|
Object obj2 = obj1.notAnnotatedNullable();
|
|
|
|
obj2.toString();
|
|
|
|
}
|
|
|
|
|
|
|
|
void dereferenceLocalNullableFieldBad() {
|
|
|
|
field.toString();
|
|
|
|
}
|
|
|
|
|
|
|
|
void dereferenceInterTargetField1Bad(Class1 class1) {
|
|
|
|
class1.field1.toString();
|
|
|
|
}
|
|
|
|
|
|
|
|
int dereferenceInterTargetField2Bad(Class1 class1) {
|
|
|
|
return class1.field2.x;
|
|
|
|
}
|
|
|
|
|
|
|
|
void dereferenceUnannotatedMethodReturningNullBad(Class1 class1) {
|
|
|
|
class1.unannotatedReturnNull().toString();
|
|
|
|
}
|
|
|
|
|
|
|
|
static class Sub extends Class1.Sub {
|
|
|
|
@Override
|
|
|
|
public @Nullable Object subtypingInconsistency(Object object) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|