From 3f53ed7e2231ee404dbe4c7d9873d678bce83fff Mon Sep 17 00:00:00 2001 From: kari-ts <135075563+kari-ts@users.noreply.github.com> Date: Wed, 18 Sep 2024 12:08:21 -0700 Subject: [PATCH] go/toolchain: use ed9dc37b2b000f376a3e819cbb159e2c17a2dac6 (#514) Updates #cleanup Signed-off-by: kari-ts --- .../com/tailscale/ipn/util/ExtendedLog.kt | 44 +++++++++++++++++++ .../com/tailcale/ipn/ui/util/TimeUtilTest.kt | 30 +++++++++++++ go.toolchain.rev | 2 +- 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 android/src/main/java/com/tailscale/ipn/util/ExtendedLog.kt diff --git a/android/src/main/java/com/tailscale/ipn/util/ExtendedLog.kt b/android/src/main/java/com/tailscale/ipn/util/ExtendedLog.kt new file mode 100644 index 0000000..b6304cd --- /dev/null +++ b/android/src/main/java/com/tailscale/ipn/util/ExtendedLog.kt @@ -0,0 +1,44 @@ +// Copyright (c) Tailscale Inc & AUTHORS +// SPDX-License-Identifier: BSD-3-Clause +package com.tailscale.ipn.util + +import android.util.Log +import libtailscale.Libtailscale + +object ExtendedLog { + var libtailscaleWrapper = LibtailscaleWrapper() + + fun d(tag: String?, message: String) { + Log.d(tag, message) + libtailscaleWrapper.sendLog(tag, message) + } + + fun w(tag: String, message: String) { + Log.w(tag, message) + libtailscaleWrapper.sendLog(tag, message) + } + + // Overloaded function without Throwable because Java does not support default parameters + @JvmStatic + fun e(tag: String?, message: String) { + Log.e(tag, message) + libtailscaleWrapper.sendLog(tag, message) + } + + fun e(tag: String?, message: String, throwable: Throwable? = null) { + if (throwable == null) { + Log.e(tag, message) + libtailscaleWrapper.sendLog(tag, message) + } else { + Log.e(tag, message, throwable) + libtailscaleWrapper.sendLog(tag, "$message ${throwable?.localizedMessage}") + } + } + + class LibtailscaleWrapper { + public fun sendLog(tag: String?, message: String) { + val logTag = tag ?: "" + Libtailscale.sendLog(logTag + ": " + message) + } + } +} diff --git a/android/src/test/kotlin/com/tailcale/ipn/ui/util/TimeUtilTest.kt b/android/src/test/kotlin/com/tailcale/ipn/ui/util/TimeUtilTest.kt index ddea99e..de9e28d 100644 --- a/android/src/test/kotlin/com/tailcale/ipn/ui/util/TimeUtilTest.kt +++ b/android/src/test/kotlin/com/tailcale/ipn/ui/util/TimeUtilTest.kt @@ -4,13 +4,40 @@ package com.tailcale.ipn.ui.util import com.tailscale.ipn.ui.util.TimeUtil +import com.tailscale.ipn.util.ExtendedLog +import com.tailscale.ipn.util.ExtendedLog.LibtailscaleWrapper +import org.junit.After import org.junit.Assert.assertEquals import org.junit.Assert.assertNull +import org.junit.Before import org.junit.Test +import org.mockito.ArgumentMatchers.anyString +import org.mockito.Mockito.doNothing +import org.mockito.Mockito.mock import java.time.Duration class TimeUtilTest { + private lateinit var libtailscaleWrapperMock: LibtailscaleWrapper + private lateinit var originalWrapper: LibtailscaleWrapper + + @Before + fun setUp() { + libtailscaleWrapperMock = mock(LibtailscaleWrapper::class.java) + doNothing().`when`(libtailscaleWrapperMock).sendLog(anyString(), anyString()) + + // Store the original wrapper so we can reset it later + originalWrapper = ExtendedLog.libtailscaleWrapper + // Inject mock into ExtendedLog + ExtendedLog.libtailscaleWrapper = libtailscaleWrapperMock + } + + @After + fun tearDown() { + // Reset ExtendedLog after each test to avoid side effects + ExtendedLog.libtailscaleWrapper = originalWrapper + } + @Test fun durationInvalidMsUnits() { val input = "5s10ms" @@ -44,6 +71,9 @@ class TimeUtilTest { @Test fun testBadDInputString() { + val libtailscaleWrapperMock = mock(LibtailscaleWrapper::class.java) + doNothing().`when`(libtailscaleWrapperMock).sendLog(anyString(), anyString()) + val input = "1.0yy1.0w1.0d1.0h1.0m1.0s" val actual = TimeUtil.duration(input) assertNull("Should return null", actual) diff --git a/go.toolchain.rev b/go.toolchain.rev index bf2677c..22ed8ff 100644 --- a/go.toolchain.rev +++ b/go.toolchain.rev @@ -1 +1 @@ -4771bcafe5ca1554e13b2cb396336868e97781f3 +ed9dc37b2b000f376a3e819cbb159e2c17a2dac6 \ No newline at end of file