Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adding support for Activity and Fragment coming from the support libr…
…aries: (#275) Adding support for: * Fragment and Activity classes that are coming from the support library and Android X * onCreateView and onAttach for the Fragment * Adding a fragment to test the changes for onCreate, onCreateView and onAttach * Adding unit tests
- Loading branch information
Showing
31 changed files
with
1,053 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
186 changes: 186 additions & 0 deletions
186
nullaway/src/test/java/com/uber/nullaway/NullAwayAndroidTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,186 @@ | ||
package com.uber.nullaway; | ||
|
||
import com.google.errorprone.CompilationTestHelper; | ||
import java.util.Arrays; | ||
import org.junit.Before; | ||
import org.junit.Rule; | ||
import org.junit.Test; | ||
import org.junit.rules.TemporaryFolder; | ||
import org.junit.runner.RunWith; | ||
import org.junit.runners.JUnit4; | ||
|
||
/** Unit tests for {@link com.uber.nullaway.NullAway}. */ | ||
@RunWith(JUnit4.class) | ||
@SuppressWarnings("CheckTestExtendsBaseClass") | ||
public class NullAwayAndroidTest { | ||
@Rule public final TemporaryFolder temporaryFolder = new TemporaryFolder(); | ||
|
||
private CompilationTestHelper compilationHelper; | ||
|
||
@Before | ||
public void setup() { | ||
compilationHelper = CompilationTestHelper.newInstance(NullAway.class, getClass()); | ||
compilationHelper.setArgs( | ||
Arrays.asList( | ||
"-d", | ||
temporaryFolder.getRoot().getAbsolutePath(), | ||
"-XepOpt:NullAway:AnnotatedPackages=com.uber,com.ubercab,io.reactivex")); | ||
} | ||
|
||
// Core Fragment tests | ||
|
||
@Test | ||
public void coreFragmentSuccess() { | ||
initialiseAndroidCoreClasses(); | ||
compilationHelper | ||
.addSourceFile("androidstubs/core/Fragment.java") | ||
.addSourceFile("android-success/CoreFragment.java") | ||
.doTest(); | ||
} | ||
|
||
@Test | ||
public void coreFragmentMissingOnAttachError() { | ||
initialiseAndroidCoreClasses(); | ||
compilationHelper | ||
.addSourceFile("androidstubs/core/Fragment.java") | ||
.addSourceFile("android-error/CoreFragmentWithoutOnAttach.java") | ||
.doTest(); | ||
} | ||
|
||
@Test | ||
public void coreFragmentMissingOnCreateError() { | ||
initialiseAndroidCoreClasses(); | ||
compilationHelper | ||
.addSourceFile("androidstubs/core/Fragment.java") | ||
.addSourceFile("android-error/CoreFragmentWithoutOnCreate.java") | ||
.doTest(); | ||
} | ||
|
||
@Test | ||
public void coreFragmentMissingOnCreateViewError() { | ||
initialiseAndroidCoreClasses(); | ||
compilationHelper | ||
.addSourceFile("androidstubs/core/Fragment.java") | ||
.addSourceFile("android-error/CoreFragmentWithoutOnCreateView.java") | ||
.doTest(); | ||
} | ||
|
||
// AndroidX Library Fragment | ||
@Test | ||
public void androidxFragmentSuccess() { | ||
initialiseAndroidCoreClasses(); | ||
compilationHelper | ||
.addSourceFile("androidstubs/androidx/Fragment.java") | ||
.addSourceFile("android-success/AndroidxFragment.java") | ||
.doTest(); | ||
} | ||
|
||
@Test | ||
public void androidxFragmentMissingOnAttachError() { | ||
initialiseAndroidCoreClasses(); | ||
compilationHelper | ||
.addSourceFile("androidstubs/androidx/Fragment.java") | ||
.addSourceFile("android-error/AndroidxFragmentWithoutOnAttach.java") | ||
.doTest(); | ||
} | ||
|
||
@Test | ||
public void androidxFragmentMissingOnCreateError() { | ||
initialiseAndroidCoreClasses(); | ||
compilationHelper | ||
.addSourceFile("androidstubs/androidx/Fragment.java") | ||
.addSourceFile("android-error/AndroidxFragmentWithoutOnCreate.java") | ||
.doTest(); | ||
} | ||
|
||
@Test | ||
public void androidxFragmentMissingOnCreateViewError() { | ||
initialiseAndroidCoreClasses(); | ||
compilationHelper | ||
.addSourceFile("androidstubs/androidx/Fragment.java") | ||
.addSourceFile("android-error/AndroidxFragmentWithoutOnCreateView.java") | ||
.doTest(); | ||
} | ||
|
||
// Android support library Fragment | ||
|
||
@Test | ||
public void supportLibFragmentSuccess() { | ||
initialiseAndroidCoreClasses(); | ||
compilationHelper | ||
.addSourceFile("androidstubs/supportlib/Fragment.java") | ||
.addSourceFile("android-success/SupportLibraryFragment.java") | ||
.doTest(); | ||
} | ||
|
||
@Test | ||
public void supportLibFragmentMissingOnAttachError() { | ||
initialiseAndroidCoreClasses(); | ||
compilationHelper | ||
.addSourceFile("androidstubs/supportlib/Fragment.java") | ||
.addSourceFile("android-error/SupportLibraryFragmentWithoutOnAttach.java") | ||
.doTest(); | ||
} | ||
|
||
@Test | ||
public void supportLibFragmentMissingOnCreateError() { | ||
initialiseAndroidCoreClasses(); | ||
compilationHelper | ||
.addSourceFile("androidstubs/supportlib/Fragment.java") | ||
.addSourceFile("android-error/SupportLibraryFragmentWithoutOnCreate.java") | ||
.doTest(); | ||
} | ||
|
||
@Test | ||
public void supportLibFragmentMissingOnCreateViewError() { | ||
initialiseAndroidCoreClasses(); | ||
compilationHelper | ||
.addSourceFile("androidstubs/supportlib/Fragment.java") | ||
.addSourceFile("android-error/SupportLibraryFragmentWithoutOnCreateView.java") | ||
.doTest(); | ||
} | ||
|
||
// Core Activity | ||
|
||
@Test | ||
public void coreActivitySuccess() { | ||
initialiseAndroidCoreClasses(); | ||
compilationHelper | ||
.addSourceFile("androidstubs/core/Activity.java") | ||
.addSourceFile("android-success/CoreActivity.java") | ||
.doTest(); | ||
} | ||
|
||
// Support Library Activity | ||
|
||
@Test | ||
public void supportLibActivitySuccess() { | ||
initialiseAndroidCoreClasses(); | ||
compilationHelper | ||
.addSourceFile("androidstubs/supportlib/ActivityCompat.java") | ||
.addSourceFile("android-success/SupportLibActivityCompat.java") | ||
.doTest(); | ||
} | ||
|
||
// AndroidX Library Activity | ||
|
||
@Test | ||
public void androidxActivitySuccess() { | ||
initialiseAndroidCoreClasses(); | ||
compilationHelper | ||
.addSourceFile("androidstubs/androidx/ActivityCompat.java") | ||
.addSourceFile("android-success/AndroidxActivityCompat.java") | ||
.doTest(); | ||
} | ||
|
||
/** Initialises the default android classes that are commonly used. */ | ||
private void initialiseAndroidCoreClasses() { | ||
compilationHelper | ||
.addSourceFile("androidstubs/core/Context.java") | ||
.addSourceFile("androidstubs/core/Bundle.java") | ||
.addSourceFile("androidstubs/core/LayoutInflater.java") | ||
.addSourceFile("androidstubs/core/PersistableBundle.java") | ||
.addSourceFile("androidstubs/core/View.java") | ||
.addSourceFile("androidstubs/core/ViewGroup.java"); | ||
} | ||
} |
28 changes: 28 additions & 0 deletions
28
...t/resources/com/uber/nullaway/testdata/android-error/AndroidxFragmentWithoutOnAttach.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
package com.uber.myapplication; | ||
|
||
import android.os.Bundle; | ||
import android.view.LayoutInflater; | ||
import android.view.View; | ||
import android.view.ViewGroup; | ||
import androidx.fragment.app.Fragment; | ||
|
||
public class AndroidxFragmentWithoutOnAttach extends Fragment { | ||
|
||
private Object mOnCreateInitialisedField; | ||
private Object mOnCreateViewInitialisedField; | ||
// BUG: Diagnostic contains: @NonNull field mOnAttachInitialisedField not initialized | ||
private Object mOnAttachInitialisedField; | ||
|
||
@Override | ||
public void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
mOnCreateInitialisedField = new Object(); | ||
} | ||
|
||
@Override | ||
public View onCreateView( | ||
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { | ||
mOnCreateViewInitialisedField = new Object(); | ||
return super.onCreateView(inflater, container, savedInstanceState); | ||
} | ||
} |
28 changes: 28 additions & 0 deletions
28
...t/resources/com/uber/nullaway/testdata/android-error/AndroidxFragmentWithoutOnCreate.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
package com.uber.myapplication; | ||
|
||
import android.content.Context; | ||
import android.os.Bundle; | ||
import android.view.LayoutInflater; | ||
import android.view.View; | ||
import android.view.ViewGroup; | ||
import androidx.fragment.app.Fragment; | ||
|
||
public class AndroidxFragmentWithoutOnCreate extends Fragment { | ||
// BUG: Diagnostic contains: @NonNull field mOnCreateInitialisedField not initialized | ||
private Object mOnCreateInitialisedField; | ||
private Object mOnCreateViewInitialisedField; | ||
private Object mOnAttachInitialisedField; | ||
|
||
@Override | ||
public View onCreateView( | ||
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { | ||
mOnCreateViewInitialisedField = new Object(); | ||
return super.onCreateView(inflater, container, savedInstanceState); | ||
} | ||
|
||
@Override | ||
public void onAttach(Context context) { | ||
super.onAttach(context); | ||
mOnAttachInitialisedField = new Object(); | ||
} | ||
} |
25 changes: 25 additions & 0 deletions
25
...sources/com/uber/nullaway/testdata/android-error/AndroidxFragmentWithoutOnCreateView.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
package com.uber.myapplication; | ||
|
||
import android.content.Context; | ||
import android.os.Bundle; | ||
import androidx.fragment.app.Fragment; | ||
|
||
public class AndroidxFragmentWithoutOnCreateView extends Fragment { | ||
|
||
private Object mOnCreateInitialisedField; | ||
// BUG: Diagnostic contains: @NonNull field mOnCreateViewInitialisedField not initialized | ||
private Object mOnCreateViewInitialisedField; | ||
private Object mOnAttachInitialisedField; | ||
|
||
@Override | ||
public void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
mOnCreateInitialisedField = new Object(); | ||
} | ||
|
||
@Override | ||
public void onAttach(Context context) { | ||
super.onAttach(context); | ||
mOnAttachInitialisedField = new Object(); | ||
} | ||
} |
28 changes: 28 additions & 0 deletions
28
.../test/resources/com/uber/nullaway/testdata/android-error/CoreFragmentWithoutOnAttach.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
package com.uber.myapplication; | ||
|
||
import android.app.Fragment; | ||
import android.os.Bundle; | ||
import android.view.LayoutInflater; | ||
import android.view.View; | ||
import android.view.ViewGroup; | ||
|
||
public class CoreFragmentWithoutOnAttach extends Fragment { | ||
|
||
private Object mOnCreateInitialisedField; | ||
private Object mOnCreateViewInitialisedField; | ||
// BUG: Diagnostic contains: @NonNull field mOnAttachInitialisedField not initialized | ||
private Object mOnAttachInitialisedField; | ||
|
||
@Override | ||
public void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
mOnCreateInitialisedField = new Object(); | ||
} | ||
|
||
@Override | ||
public View onCreateView( | ||
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { | ||
mOnCreateViewInitialisedField = new Object(); | ||
return super.onCreateView(inflater, container, savedInstanceState); | ||
} | ||
} |
28 changes: 28 additions & 0 deletions
28
.../test/resources/com/uber/nullaway/testdata/android-error/CoreFragmentWithoutOnCreate.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
package com.uber.myapplication; | ||
|
||
import android.app.Fragment; | ||
import android.content.Context; | ||
import android.os.Bundle; | ||
import android.view.LayoutInflater; | ||
import android.view.View; | ||
import android.view.ViewGroup; | ||
|
||
public class CoreFragmentWithoutOnCreate extends Fragment { | ||
// BUG: Diagnostic contains: @NonNull field mOnCreateInitialisedField not initialized | ||
private Object mOnCreateInitialisedField; | ||
private Object mOnCreateViewInitialisedField; | ||
private Object mOnAttachInitialisedField; | ||
|
||
@Override | ||
public View onCreateView( | ||
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { | ||
mOnCreateViewInitialisedField = new Object(); | ||
return super.onCreateView(inflater, container, savedInstanceState); | ||
} | ||
|
||
@Override | ||
public void onAttach(Context context) { | ||
super.onAttach(context); | ||
mOnAttachInitialisedField = new Object(); | ||
} | ||
} |
25 changes: 25 additions & 0 deletions
25
...t/resources/com/uber/nullaway/testdata/android-error/CoreFragmentWithoutOnCreateView.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
package com.uber.myapplication; | ||
|
||
import android.app.Fragment; | ||
import android.content.Context; | ||
import android.os.Bundle; | ||
|
||
public class CoreFragmentWithoutOnCreateView extends Fragment { | ||
|
||
private Object mOnCreateInitialisedField; | ||
// BUG: Diagnostic contains: @NonNull field mOnCreateViewInitialisedField not initialized | ||
private Object mOnCreateViewInitialisedField; | ||
private Object mOnAttachInitialisedField; | ||
|
||
@Override | ||
public void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
mOnCreateInitialisedField = new Object(); | ||
} | ||
|
||
@Override | ||
public void onAttach(Context context) { | ||
super.onAttach(context); | ||
mOnAttachInitialisedField = new Object(); | ||
} | ||
} |
Oops, something went wrong.