Compare commits

...

3 Commits

Author SHA1 Message Date
semantic-release-bot
9d39995f48 chore(release): 1.2.0-dev.2 [skip ci]
# [1.2.0-dev.2](https://github.com/ReVanced/revanced-library/compare/v1.2.0-dev.1...v1.2.0-dev.2) (2023-11-03)

### Features

* Log warnings when compiling resources ([1dc8e2e](1dc8e2e2eb))
2023-11-03 00:24:24 +00:00
oSumAtrIX
1dc8e2e2eb feat: Log warnings when compiling resources
The logger in class `brut.util.OS` is responsible for logging the standard error output stream from invoking AAPT. Previously,only loggers with the name starting with `app.revanced` were shown.
2023-11-03 01:22:52 +01:00
oSumAtrIX
6555fcdffe chore: Fix builds from bumping dependencies 2023-11-03 01:21:23 +01:00
5 changed files with 37 additions and 10 deletions

View File

@@ -1,3 +1,10 @@
# [1.2.0-dev.2](https://github.com/ReVanced/revanced-library/compare/v1.2.0-dev.1...v1.2.0-dev.2) (2023-11-03)
### Features
* Log warnings when compiling resources ([1dc8e2e](https://github.com/ReVanced/revanced-library/commit/1dc8e2e2eb76bcade9167be0c4b4a628ff114f63))
# [1.2.0-dev.1](https://github.com/ReVanced/revanced-library/compare/v1.1.5...v1.2.0-dev.1) (2023-10-31) # [1.2.0-dev.1](https://github.com/ReVanced/revanced-library/compare/v1.1.5...v1.2.0-dev.1) (2023-10-31)

View File

@@ -1,4 +1,4 @@
org.gradle.parallel = true org.gradle.parallel = true
org.gradle.caching = true org.gradle.caching = true
kotlin.code.style = official kotlin.code.style = official
version = 1.2.0-dev.1 version = 1.2.0-dev.2

View File

@@ -7,6 +7,14 @@ import java.util.logging.SimpleFormatter
@Suppress("MemberVisibilityCanBePrivate") @Suppress("MemberVisibilityCanBePrivate")
object Logger { object Logger {
/**
* Rules for allowed loggers.
*/
private val allowedLoggersRules = arrayOf<String.() -> Boolean>(
{ startsWith("app.revanced") }, // ReVanced loggers.
{ this == "" } // Logs warnings when compiling resources (Logger in class brut.util.OS).
)
private val rootLogger = java.util.logging.Logger.getLogger("") private val rootLogger = java.util.logging.Logger.getLogger("")
/** /**
@@ -64,7 +72,9 @@ object Logger {
removeAllHandlers() removeAllHandlers()
val publishHandler = handler@{ log: String, level: Level, loggerName: String? -> val publishHandler = handler@{ log: String, level: Level, loggerName: String? ->
if (loggerName?.startsWith("app.revanced") != true) return@handler loggerName?.let { name ->
if (allowedLoggersRules.none { it(name) }) return@handler
}
log.toByteArray().let { log.toByteArray().let {
if (level.intValue() > Level.WARNING.intValue()) if (level.intValue() > Level.WARNING.intValue())

View File

@@ -3,8 +3,9 @@ package app.revanced.library
import app.revanced.library.Options.setOptions import app.revanced.library.Options.setOptions
import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.options.types.BooleanPatchOption.Companion.booleanPatchOption import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.patch.options.types.StringPatchOption.Companion.stringPatchOption import app.revanced.patcher.patch.options.PatchOption.PatchExtensions.booleanPatchOption
import app.revanced.patcher.patch.options.PatchOption.PatchExtensions.stringPatchOption
import org.junit.jupiter.api.MethodOrderer import org.junit.jupiter.api.MethodOrderer
import org.junit.jupiter.api.Order import org.junit.jupiter.api.Order
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
@@ -35,9 +36,10 @@ internal object PatchOptionsTest {
private const val CHANGED_JSON = private const val CHANGED_JSON =
"[{\"patchName\":\"PatchOptionsTestPatch\",\"options\":[{\"key\":\"key1\",\"value\":\"test\"},{\"key\":\"key2\",\"value\":false}]}]" "[{\"patchName\":\"PatchOptionsTestPatch\",\"options\":[{\"key\":\"key1\",\"value\":\"test\"},{\"key\":\"key2\",\"value\":false}]}]"
object PatchOptionsTestPatch : BytecodePatch(name = "PatchOptionsTestPatch") { @Patch("PatchOptionsTestPatch")
var option1 by stringPatchOption("key1", null, "title1", "description1") object PatchOptionsTestPatch : BytecodePatch() {
var option2 by booleanPatchOption("key2", true, "title2", "description2") var option1 by stringPatchOption("key1", null, null, "title1", "description1")
var option2 by booleanPatchOption("key2", true, null, "title2", "description2")
override fun execute(context: BytecodeContext) { override fun execute(context: BytecodeContext) {
// Do nothing // Do nothing

View File

@@ -3,6 +3,7 @@ package app.revanced.library
import app.revanced.patcher.PatchSet import app.revanced.patcher.PatchSet
import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.Patch
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
import kotlin.test.assertEquals import kotlin.test.assertEquals
@@ -42,9 +43,16 @@ internal object PatchUtilsTest {
expected: String?, patches: PatchSet, compatiblePackageName: String expected: String?, patches: PatchSet, compatiblePackageName: String
) = assertEquals(expected, PatchUtils.getMostCommonCompatibleVersion(patches, compatiblePackageName)) ) = assertEquals(expected, PatchUtils.getMostCommonCompatibleVersion(patches, compatiblePackageName))
private fun newPatch(packageName: String, vararg versions: String) = object : BytecodePatch( private fun newPatch(packageName: String, vararg versions: String) = object : BytecodePatch() {
compatiblePackages = setOf(CompatiblePackage(packageName, versions.toSet())) init {
) { // Set the compatible packages field to the supplied package name and versions reflectively,
// because the setter is private but needed for testing.
val compatiblePackagesField = Patch::class.java.getDeclaredField("compatiblePackages")
compatiblePackagesField.isAccessible = true
compatiblePackagesField.set(this, setOf(CompatiblePackage(packageName, versions.toSet())))
}
override fun execute(context: BytecodeContext) {} override fun execute(context: BytecodeContext) {}
} }
} }