Skip to content
This repository was archived by the owner on Oct 3, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ android:
- tools

before_script: echo y | ${ANDROID_HOME}tools/bin/sdkmanager --channel=3 "tools" "platform-tools" "platforms;android-27"
script: ./gradlew build
script: ./gradlew build jacocoTestReport

after_failure:
- cat app/build/reports/tests/testDebugUnitTest/index.html
after_success:
- bash <(curl -s https://codecov.io/bash)
8 changes: 5 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# EasyPermissions [![Build Status][1]][2] [![Android Weekly][3]][4]
# EasyPermissions [![Build Status][1]][2] [![Code Coverage][3]][4] [![Android Weekly][5]][6]

EasyPermissions is a wrapper library to simplify basic system permissions logic when targeting
Android M or higher.
Expand Down Expand Up @@ -199,5 +199,7 @@ Rationale callbacks don't necessarily imply permission changes. To check for tho

[1]: https://travis-ci.org/googlesamples/easypermissions.svg?branch=master
[2]: https://travis-ci.org/googlesamples/easypermissions
[3]: https://img.shields.io/badge/Android%20Weekly-%23185-2CB3E5.svg?style=flat
[4]: http://androidweekly.net/issues/issue-185
[3]: https://codecov.io/gh/googlesamples/easypermissions/branch/master/graph/badge.sv
[4]: https://codecov.io/gh/googlesamples/easypermissions
[5]: https://img.shields.io/badge/Android%20Weekly-%23185-2CB3E5.svg?style=flat
[6]: http://androidweekly.net/issues/issue-185
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
classpath 'com.dicedmelon.gradle:jacoco-android:0.1.3'
}
}

Expand Down
18 changes: 17 additions & 1 deletion easypermissions/build.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
apply plugin: 'com.android.library'
apply plugin: 'jacoco-android'

android {
compileSdkVersion compileSdk
Expand All @@ -11,11 +12,20 @@ android {
}

buildTypes {
debug {
testCoverageEnabled true
}
release {
minifyEnabled false
consumerProguardFiles 'proguard-rules.pro'
}
}

testOptions {
unitTests {
includeAndroidResources = true
}
}
}

dependencies {
Expand All @@ -24,7 +34,13 @@ dependencies {
api "com.android.support:support-fragment:$support_library_version"

testImplementation 'junit:junit:4.12'
testImplementation 'org.robolectric:robolectric:3.5.1'
testImplementation 'com.google.truth:truth:0.42'
testImplementation 'org.robolectric:robolectric:3.8'
}

// Needed in order to process Robolectric tests when running JaCoCo
tasks.withType(Test) {
jacoco.includeNoLocationClasses = true
}

apply from: 'bintray.gradle'
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,19 @@
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;

import static junit.framework.Assert.assertTrue;
import static com.google.common.truth.Truth.assertThat;

/**
* Low-API (SDK = 19) tests for {@link pub.devrel.easypermissions.EasyPermissions}.
*/
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 19)
@Config(sdk = 19)
public class EasyPermissionsLowApiTest {

@Test
public void testHasPermissions() {
public void shouldHavePermission_whenHasPermissionsBeforeMarshmallow() {
// On low-API devices, we should always get 'true' when we call 'hasPermissions'
assertTrue(EasyPermissions.hasPermissions(RuntimeEnvironment.application,
Manifest.permission.ACCESS_COARSE_LOCATION));
assertThat(EasyPermissions.hasPermissions(RuntimeEnvironment.application,
Manifest.permission.ACCESS_COARSE_LOCATION)).isTrue();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,40 +3,50 @@
import android.Manifest;
import android.app.Application;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;

import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
import static com.google.common.truth.Truth.assertThat;

/**
* Basic Robolectric tests for {@link pub.devrel.easypermissions.EasyPermissions}.
*/
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 23)
@Config(sdk = 23)
public class EasyPermissionsTest {
@Test
public void testHasPermissions() {
Application app = RuntimeEnvironment.application;

String[] perms = new String[]{
private Application app;
private String[] perms;

@Before
public void setUp() {
app = RuntimeEnvironment.application;
perms = new String[]{
Manifest.permission.READ_SMS,
Manifest.permission.ACCESS_FINE_LOCATION
};
}

// Wes should not have permissions before any are granted
assertFalse(EasyPermissions.hasPermissions(app, perms));
@Test
public void shouldNotHavePermissions_whenNoPermissionsGranted() {
assertThat(EasyPermissions.hasPermissions(app, perms)).isFalse();
}

// Granting one permission should not make the whole set appear granted

@Test
public void shouldNotHavePermissions_whenNotAllPermissionsGranted() {
ShadowApplication.getInstance().grantPermissions(perms[0]);
assertFalse(EasyPermissions.hasPermissions(app, perms));
assertThat(EasyPermissions.hasPermissions(app, perms)).isFalse();
}

// Granting all permissions should make the whole set granted
@Test
public void shouldHavePermissions_whenAllPermissionsGranted() {
ShadowApplication.getInstance().grantPermissions(perms);
assertTrue(EasyPermissions.hasPermissions(app, perms));
assertThat(EasyPermissions.hasPermissions(app, perms)).isTrue();
}
}