travisc 69a70219ad Restructure emulator tests for better bazel support.
Bazel wants a structure where the application used for testing and the tests themselves are in separate packages (which gradle is less picky about). Android has a gradle plugin for this setup (com.android.test), although it unfortunately has seemingly worse Android Studio support at this point. In any case, this change splits the code up a bit more, into 3 parts:

- lib: the files we actually distribute as a library to end users
- testing: the test application and its custom component subclasses that are tested by the emulator tests
- tests: the actual emulator test code

The structure is a tad strange for typical gradle projects (testing in particular, which has a build.gradle file for each individual Java package, at the same level as the actual source files), but it better matches the conventions of bazel while also avoiding the need for a ton of parallel directory structures at the top level.

Known issues as of this commit:
- Android Studio doesn't think the Java files in testing/ have the right package. I tried to fix this by bumping their java srcDir up to the java/ root and changing the includes, but Android studio seems unable to properly figure that out and instead acted like the Java files didn't exist at all, so I reverted that. We can possibly modify the iml files that get generated, but I'll save this for a follow-up commit since this is already very large.

- Android Studio seems unable to run emulator tests properly (but they work from the command-line). I don't quite know why they fail, but seems like lacking support for the com.android.test plugin. Hopefully this is something we can work around for find a fix for in the near future.

PiperOrigin-RevId: 146940681
2017-02-08 12:53:34 -08:00

90 lines
2.9 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2017 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="android.support.design.testapp">
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="25"
tools:overrideLibrary="android.support.test, android.app, android.support.test.rule, android.support.test.espresso, android.support.test.espresso.idling"/>
<application
android:supportsRtl="true"
android:theme="@style/Theme.Design">
<activity android:name="android.support.v7.app.AppCompatActivity"/>
<activity
android:theme="@style/Theme.AppCompat.NoActionBar"
android:name=".BottomNavigationViewActivity"/>
<activity
android:theme="@style/Theme.AppCompat.NoActionBar"
android:name=".BottomSheetBehaviorActivity"/>
<activity
android:theme="@style/Theme.AppCompat.NoActionBar"
android:name=".BottomSheetBehaviorWithInsetsActivity"/>
<activity
android:theme="@style/Theme.AppCompat.NoActionBar"
android:name=".BottomSheetDialogActivity"/>
<activity
android:theme="@style/Theme.AppCompat.NoActionBar"
android:name=".CoordinatorLayoutActivity"/>
<activity
android:theme="@style/Theme.TranslucentStatus"
android:name=".DynamicCoordinatorLayoutActivity"/>
<activity
android:name=".FloatingActionButtonActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
<activity
android:theme="@style/Theme.AppCompat.NoActionBar"
android:name=".NavigationViewActivity"/>
<activity
android:theme="@style/Theme.AppCompat.NoActionBar"
android:name=".SnackbarActivity"/>
<activity
android:theme="@style/Theme.TranslucentNavBar"
android:name=".SnackbarWithTranslucentNavBarActivity"/>
<activity
android:theme="@style/Theme.AppCompat.NoActionBar"
android:name=".SnackbarWithFabActivity"/>
<activity
android:theme="@style/Theme.AppCompat.NoActionBar"
android:name=".TabLayoutPoolingActivity"/>
<activity
android:theme="@style/Theme.AppCompat.NoActionBar"
android:name=".TabLayoutWithViewPagerActivity"/>
<activity
android:theme="@style/Theme.AppCompat.NoActionBar"
android:name=".TextInputLayoutActivity"/>
</application>
</manifest>