Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
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
29 changes: 29 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Lint project

on:
pull_request:

jobs:
lint:
runs-on: ubuntu-latest

steps:
- name: Checkout submodules
uses: actions/checkout@v4
with:
fetch-depth: 1
token: ${{ secrets.ACCESS_TOKEN }}
persist-credentials: false

- name: set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 17.0.10
distribution: "adopt"
cache: gradle

- name: Accept Android SDK licences
run: yes | "${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager" --licenses

- name: Lint - check Code Style
run: ./gradlew spotlessCheck
3 changes: 0 additions & 3 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,6 @@ jobs:
- name: Accept Android SDK licences
run: yes | "${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager" --licenses

- name: Check Code Style
run: ./gradlew spotlessCheck

- name: Build and check
run: ./gradlew assembleDebug assembleDebugAndroidTest build check

Expand Down
27 changes: 14 additions & 13 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,17 @@ repos:
language: system
stages: [pre-commit]
pass_filenames: false
## TODO: before merge - remove above and uncomment below
# - id: spotless-apply
# name: Spotless Apply
# entry: ./gradlew spotlessApply
# language: system
# stages: [pre-commit]
# pass_filenames: false
# - id: spotless-check
# name: Spotless Check
# entry: ./gradlew spotlessCheck
# language: system
# stages: [pre-commit]
# pass_filenames: false

- id: spotless-apply
name: Spotless Apply
entry: ./gradlew spotlessApply
language: system
stages: [pre-commit]
pass_filenames: false

- id: spotless-check
name: Spotless Check
entry: ./gradlew spotlessCheck
language: system
stages: [pre-commit]
pass_filenames: false
6 changes: 6 additions & 0 deletions backtrace-library/build.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import com.diffplug.gradle.spotless.SpotlessTask

plugins {
id 'com.android.library'
id 'com.gladed.androidgitversion' version '0.4.14'
Expand Down Expand Up @@ -129,3 +131,7 @@ dependencies {
androidTestImplementation 'androidx.test.espresso:espresso-core:3.7.0'
androidTestImplementation "org.mockito:mockito-android:5.19.0"
}

tasks.withType(SpotlessTask).configureEach {
enabled = false
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,13 @@
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;

import backtraceio.library.common.ApplicationMetadataCache;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

import backtraceio.library.common.ApplicationMetadataCache;

@RunWith(AndroidJUnit4.class)
public class ApplicationMetadataTest {
private Context context;
Expand Down Expand Up @@ -44,5 +41,4 @@ public void shouldCorrectlyRetrieveApplicationVersion() throws PackageManager.Na
PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getOpPackageName(), 0);
assertEquals(cache.getApplicationVersion(), String.valueOf(packageInfo.versionCode));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,20 @@
import static org.junit.Assert.assertNotNull;

import android.content.Context;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;

import net.jodah.concurrentunit.Waiter;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

import backtraceio.library.events.OnServerResponseEventListener;
import backtraceio.library.events.RequestHandler;
import backtraceio.library.models.BacktraceData;
import backtraceio.library.models.BacktraceResult;
import backtraceio.library.models.types.BacktraceResultStatus;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import net.jodah.concurrentunit.Waiter;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4.class)
public class BacktraceClientAttachmentsTest {
Expand All @@ -50,43 +45,44 @@ public void sendBacktraceExceptionAttachments() {
// GIVEN
final String attachment0 = "/someDir/someFile.log";
final String attachment1 = "/someDir/someOtherFile.log";
List<String> attachments = new ArrayList<String>() {{
add(attachment0);
add(attachment1);
}};
List<String> attachments = new ArrayList<String>() {
{
add(attachment0);
add(attachment1);
}
};

BacktraceClient backtraceClient = new BacktraceClient(context, credentials, database, attachments);

final Waiter waiter = new Waiter();
RequestHandler rh = new RequestHandler() {
@Override
public BacktraceResult onRequest(BacktraceData data) {
return new BacktraceResult(data.getReport(), data.getReport().exception.getMessage(),
BacktraceResultStatus.Ok);
return new BacktraceResult(
data.getReport(), data.getReport().exception.getMessage(), BacktraceResultStatus.Ok);
}
};
backtraceClient.setOnRequestHandler(rh);

// WHEN
backtraceClient.send(new Exception(resultMessage), new
OnServerResponseEventListener() {
@Override
public void onEvent(BacktraceResult backtraceResult) {
// THEN
assertEquals(resultMessage, backtraceResult.message);
assertEquals(BacktraceResultStatus.Ok, backtraceResult.status);
assertNotNull(backtraceResult.getBacktraceReport());
assertNotNull(backtraceResult.getBacktraceReport().exception);

// We should have the file attachment paths included
assertEquals(2, backtraceResult.getBacktraceReport().attachmentPaths.size());
assertTrue(backtraceResult.getBacktraceReport().attachmentPaths.contains(attachment0));
assertTrue(backtraceResult.getBacktraceReport().attachmentPaths.contains(attachment1));

waiter.resume();
}
}
);
backtraceClient.send(new Exception(resultMessage), new OnServerResponseEventListener() {
@Override
public void onEvent(BacktraceResult backtraceResult) {
// THEN
assertEquals(resultMessage, backtraceResult.message);
assertEquals(BacktraceResultStatus.Ok, backtraceResult.status);
assertNotNull(backtraceResult.getBacktraceReport());
assertNotNull(backtraceResult.getBacktraceReport().exception);

// We should have the file attachment paths included
assertEquals(
2, backtraceResult.getBacktraceReport().attachmentPaths.size());
assertTrue(backtraceResult.getBacktraceReport().attachmentPaths.contains(attachment0));
assertTrue(backtraceResult.getBacktraceReport().attachmentPaths.contains(attachment1));

waiter.resume();
}
});
// WAIT FOR THE RESULT FROM ANOTHER THREAD
try {
waiter.await(5, TimeUnit.SECONDS);
Expand All @@ -104,30 +100,29 @@ public void sendBacktraceExceptionNoAttachments() {
RequestHandler rh = new RequestHandler() {
@Override
public BacktraceResult onRequest(BacktraceData data) {
return new BacktraceResult(data.getReport(), data.getReport().exception.getMessage(),
BacktraceResultStatus.Ok);
return new BacktraceResult(
data.getReport(), data.getReport().exception.getMessage(), BacktraceResultStatus.Ok);
}
};
backtraceClient.setOnRequestHandler(rh);

// WHEN
backtraceClient.send(new Exception(resultMessage), new
OnServerResponseEventListener() {
@Override
public void onEvent(BacktraceResult backtraceResult) {
// THEN
assertEquals(resultMessage, backtraceResult.message);
assertEquals(BacktraceResultStatus.Ok, backtraceResult.status);
assertNotNull(backtraceResult.getBacktraceReport());
assertNotNull(backtraceResult.getBacktraceReport().exception);

// We should NOT have any attachment paths included by default
assertEquals(0, backtraceResult.getBacktraceReport().attachmentPaths.size());

waiter.resume();
}
}
);
backtraceClient.send(new Exception(resultMessage), new OnServerResponseEventListener() {
@Override
public void onEvent(BacktraceResult backtraceResult) {
// THEN
assertEquals(resultMessage, backtraceResult.message);
assertEquals(BacktraceResultStatus.Ok, backtraceResult.status);
assertNotNull(backtraceResult.getBacktraceReport());
assertNotNull(backtraceResult.getBacktraceReport().exception);

// We should NOT have any attachment paths included by default
assertEquals(
0, backtraceResult.getBacktraceReport().attachmentPaths.size());

waiter.resume();
}
});
// WAIT FOR THE RESULT FROM ANOTHER THREAD
try {
waiter.await(5, TimeUnit.SECONDS);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,21 @@
import static org.junit.Assert.assertNotNull;

import android.content.Context;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;

import backtraceio.library.events.RequestHandler;
import backtraceio.library.models.BacktraceResult;
import backtraceio.library.models.types.BacktraceResultStatus;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import net.jodah.concurrentunit.Waiter;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import backtraceio.library.events.RequestHandler;
import backtraceio.library.models.BacktraceResult;
import backtraceio.library.models.types.BacktraceResultStatus;

@RunWith(AndroidJUnit4.class)
public class BacktraceClientAttributeTests {
private Context context;
Expand Down Expand Up @@ -142,21 +137,19 @@ public void attributesShouldBeAvailableInReport() {
Object value = data.getAttributes().get(attributeKey);
assertNotNull(value);
assertEquals(value, attributeValue);
return new BacktraceResult(data.getReport(), data.getReport().exception.getMessage(),
BacktraceResultStatus.Ok);
return new BacktraceResult(
data.getReport(), data.getReport().exception.getMessage(), BacktraceResultStatus.Ok);
};
backtraceClient.setOnRequestHandler(rh);
final Waiter waiter = new Waiter();

// WHEN
backtraceClient.send(new Exception(errorMessage), backtraceResult -> waiter.resume()
);
backtraceClient.send(new Exception(errorMessage), backtraceResult -> waiter.resume());
// WAIT FOR THE RESULT FROM ANOTHER THREAD
try {
waiter.await(5, TimeUnit.SECONDS);
} catch (Exception ex) {
fail(ex.getMessage());
}
}

}
Loading
Loading