Skip to content

preview: track protobufs develop-SNAPSHOT + wire TINY_FAST/TINY_SLOW presets#5790

Draft
jamesarich wants to merge 3 commits into
mainfrom
claude/affectionate-ramanujan-64002e
Draft

preview: track protobufs develop-SNAPSHOT + wire TINY_FAST/TINY_SLOW presets#5790
jamesarich wants to merge 3 commits into
mainfrom
claude/affectionate-ramanujan-64002e

Conversation

@jamesarich

@jamesarich jamesarich commented Jun 13, 2026

Copy link
Copy Markdown
Collaborator

What

Preview branch that bumps org.meshtastic:protobufs 2.7.25develop-SNAPSHOT to build against the unreleased protos, and fully wires the new amateur-radio modem presets so @vidplace7 can check them out.

New presets (firmware #10597): TINY_FAST / TINY_SLOW — 15.625 kHz LoRa bandwidth, for 2 m / lower-band compliance. Surfaced as channel names "TinyFast" / "TinySlow" and dropdown labels Tiny - Fast / Tiny - Slow.

Changes

  • gradle/libs.versions.toml — protobufs → develop-SNAPSHOT.
  • core/model/.../Channel.ktTINY_* branches in the preset-name when, plus a comment documenting that this mapping is interop-critical (the name feeds the channel hash, channel number/frequency and MQTT topic), naming the firmware source of truth (DisplayFormatters::getModemPresetDisplayName) and flagging the two deliberately-abbreviated names (LongMod, VLongSlow).
  • core/model/.../ChannelOption.ktTINY_* bandwidth entries at 0.015625f (15.625 kHz), the real modem bandwidth from firmware. (The proto comment's "20 kHz" is the padded channel spacing, not the bandwidth that feeds numChannels/radioFreq.)
  • core/ui/.../ModelExtensions.kt + label_tiny_* strings — dropdown labels.
  • core/model/.../ChannelPresetNameTest.kt (new, commonTest) — pins every ModemPreset to its exact firmware channel name + asserts set-completeness; replaces the old androidDeviceTest allModemPresetsHaveValidNames, which only checked != "Invalid" (a value the no-else when can never produce) and ran only on-device. See "Brittleness follow-up" below.
  • build.gradle.ktstemporary build-wide force of protobufs* to develop-SNAPSHOT (see blocker below).

Why the resolution force is needed

takpacket-sdk-jvm:0.5.3 transitively pins protobufs:2.7.25, and Gradle ranks 2.7.25 > develop-SNAPSHOT (a numeric part outranks the develop string qualifier). Without the force, the test runtime classpath downgrades to 2.7.25 while the common-metadata compile uses the snapshot → NoSuchFieldError: TINY_FAST / NoSuchMethodError: Data.<init> at test runtime (assembleDebug/detekt pass; only test/allTests catch it). The force is safe because atak.proto is unchanged, so takpacket's own message ABI stays compatible with the newer protobufs.

Brittleness follow-up (preset when)

The preset-name when in Channel.kt is intentionally exhaustive with no else: because the derived name is interop-critical and firmware names aren't mechanically derivable (LongMod, VLongSlow are abbreviated), a new preset should break the build so a human supplies the exact firmware string. This PR keeps that tripwire but makes it friendlier — the new commonTest contract test documents the firmware source of truth, locks the mapping against accidental edits, and fails set-completeness if a preset is added but not pinned (or if someone silences the compile error with an else). The numeric on-air anchors (hash/channelNum/radioFreq) stay in ChannelTest.

Other proto deltas (no code change needed)

Additive, not yet wired into UI: new HardwareModels (HELTEC_MESH_TOWER_V2, MESHNOLOGY_W10), ITU 70 cm / 1.25 m RegionCodes, XEdDSA signing fields, lockdown additions. The deviceonly NodeInfoLite/NodeDatabase restructure is firmware-only and not referenced by this app.

Verification

spotlessCheck + detekt + assembleDebug + test + allTests + kmpSmokeCompile — all green.

⚠️ Not for merge

Both the develop-SNAPSHOT pin and the resolution force are preview-only. Revert to a released protobufs and drop the force once takpacket-sdk (and mqtt) are republished against the new protos.

🤖 Generated with Claude Code

Bump org.meshtastic:protobufs from 2.7.25 to develop-SNAPSHOT to pick
up unreleased proto changes for evaluation (sonatype snapshot repo is
already wired in settings.gradle.kts).

The only source change required to compile is in Channel.kt: the
develop protos add two new amateur-band ModemPreset values
(TINY_FAST, TINY_SLOW), which the exhaustive `when` over modem_preset
must now cover. All other deltas are additive (new HardwareModels,
ITU RegionCodes, XEdDSA signing fields, lockdown additions) and the
restructured deviceonly NodeInfoLite types are firmware-only and not
referenced by this app.

NOTE: this pins a moving snapshot — revert to a released version
before merging anywhere near a release branch.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jamesarich jamesarich requested a review from vidplace7 June 13, 2026 15:41
@github-actions github-actions Bot added the chore label Jun 13, 2026
@jamesarich jamesarich added the dependencies Dependency update label Jun 13, 2026
@codecov

codecov Bot commented Jun 13, 2026

Copy link
Copy Markdown

❌ 35 Tests Failed:

Tests completed Failed Passed Skipped
896 35 861 0
View the top 3 failed test(s) by shortest run time
org.meshtastic.feature.node.metrics.DecodePaxFromLogTest::binaryProto_validPaxcount_decoded
Stack Traces | 0s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.meshLogWithPacket(DecodePaxFromLogTest.kt:138)
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.meshLogWithPacket$default(DecodePaxFromLogTest.kt:133)
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.binaryProto_validPaxcount_decoded(DecodePaxFromLogTest.kt:57)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65)
	at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88)
	at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
org.meshtastic.feature.node.metrics.TracerouteChartTest::computesRoundTripSeconds
Stack Traces | 0s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.computesRoundTripSeconds(TracerouteChartTest.kt:182)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65)
	at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88)
	at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
org.meshtastic.feature.node.metrics.TracerouteChartTest::emptyRouteBack_yieldsNullReturnHops
Stack Traces | 0s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.emptyRouteBack_yieldsNullReturnHops(TracerouteChartTest.kt:226)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65)
	at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88)
	at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
org.meshtastic.feature.node.metrics.TracerouteChartTest::returnHops_computedWhenRouteBackAvailable
Stack Traces | 0s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.returnHops_computedWhenRouteBackAvailable(TracerouteChartTest.kt:259)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65)
	at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88)
	at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
org.meshtastic.feature.node.metrics.TracerouteChartTest::timeSeconds_truncatesSubSecondPrecision
Stack Traces | 0s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.timeSeconds_truncatesSubSecondPrecision(TracerouteChartTest.kt:248)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65)
	at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88)
	at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
org.meshtastic.feature.node.metrics.DecodePaxFromLogTest::binaryProto_allZeroValues_returnsNull
Stack Traces | 0.001s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.meshLogWithPacket(DecodePaxFromLogTest.kt:138)
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.meshLogWithPacket$default(DecodePaxFromLogTest.kt:133)
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.binaryProto_allZeroValues_returnsNull(DecodePaxFromLogTest.kt:79)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65)
	at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88)
	at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
org.meshtastic.feature.node.metrics.DecodePaxFromLogTest::binaryProto_wrongPortNum_returnsNull
Stack Traces | 0.001s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.meshLogWithPacket(DecodePaxFromLogTest.kt:138)
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.binaryProto_wrongPortNum_returnsNull(DecodePaxFromLogTest.kt:88)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65)
	at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88)
	at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
org.meshtastic.feature.node.metrics.DecodePaxFromLogTest::binaryProto_wrongPortNum_returnsNull()[jvm]
Stack Traces | 0.001s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.meshLogWithPacket(DecodePaxFromLogTest.kt:138)
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.binaryProto_wrongPortNum_returnsNull(DecodePaxFromLogTest.kt:88)
org.meshtastic.feature.node.metrics.TracerouteChartTest::computesForwardHops
Stack Traces | 0.001s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.computesForwardHops(TracerouteChartTest.kt:143)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65)
	at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88)
	at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
org.meshtastic.feature.node.metrics.TracerouteChartTest::multipleRequests_preservesOrder
Stack Traces | 0.001s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.multipleRequests_preservesOrder(TracerouteChartTest.kt:212)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65)
	at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88)
	at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
org.meshtastic.feature.node.metrics.TracerouteChartTest::noMatchingResult_yieldsNulls
Stack Traces | 0.001s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.noMatchingResult_yieldsNulls(TracerouteChartTest.kt:193)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65)
	at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88)
	at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
org.meshtastic.feature.node.metrics.TracerouteChartTest::noMatchingResult_yieldsNulls()[jvm]
Stack Traces | 0.001s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.noMatchingResult_yieldsNulls(TracerouteChartTest.kt:193)
org.meshtastic.feature.node.metrics.TracerouteChartTest::timeSeconds_truncatesSubSecondPrecision()[jvm]
Stack Traces | 0.002s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.timeSeconds_truncatesSubSecondPrecision(TracerouteChartTest.kt:248)
org.meshtastic.feature.node.metrics.DecodePaxFromLogTest::binaryProto_allZeroValues_returnsNull()[jvm]
Stack Traces | 0.007s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.meshLogWithPacket(DecodePaxFromLogTest.kt:138)
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.meshLogWithPacket$default(DecodePaxFromLogTest.kt:133)
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.binaryProto_allZeroValues_returnsNull(DecodePaxFromLogTest.kt:79)
org.meshtastic.feature.node.metrics.TracerouteChartTest::directRoute_yieldsZeroHops()[jvm]
Stack Traces | 0.007s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.directRoute_yieldsZeroHops(TracerouteChartTest.kt:157)
org.meshtastic.feature.node.metrics.DecodePaxFromLogTest::binaryProto_validPaxcount_decoded()[jvm]
Stack Traces | 0.008s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.meshLogWithPacket(DecodePaxFromLogTest.kt:138)
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.meshLogWithPacket$default(DecodePaxFromLogTest.kt:133)
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.binaryProto_validPaxcount_decoded(DecodePaxFromLogTest.kt:57)
org.meshtastic.feature.node.metrics.TracerouteChartTest::computesRoundTripSeconds()[jvm]
Stack Traces | 0.008s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.computesRoundTripSeconds(TracerouteChartTest.kt:182)
org.meshtastic.feature.node.metrics.TracerouteChartTest::directRoute_yieldsZeroHops
Stack Traces | 0.009s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.directRoute_yieldsZeroHops(TracerouteChartTest.kt:157)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65)
	at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88)
	at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
org.meshtastic.feature.node.metrics.TracerouteChartTest::multipleRequests_preservesOrder()[jvm]
Stack Traces | 0.012s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.multipleRequests_preservesOrder(TracerouteChartTest.kt:212)
org.meshtastic.feature.settings.radio.RadioConfigViewModelTest::setResponseStateLoading for FACTORY_RESET calls useCase after config response()[jvm]
Stack Traces | 0.012s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.MeshPacket.<init>(int, int, int, org.meshtastic.proto.Data, okio.ByteString, int, int, float, int, boolean, org.meshtastic.proto.MeshPacket$Priority, int, org.meshtastic.proto.MeshPacket$Delayed, boolean, int, okio.ByteString, boolean, int, int, int, org.meshtastic.proto.MeshPacket$TransportMechanism, boolean, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest$setResponseStateLoading for FACTORY_RESET calls useCase after config response$1.invokeSuspend(RadioConfigViewModelTest.kt:348)
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest$setResponseStateLoading for FACTORY_RESET calls useCase after config response$1.invoke(RadioConfigViewModelTest.kt)
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest$setResponseStateLoading for FACTORY_RESET calls useCase after config response$1.invoke(RadioConfigViewModelTest.kt)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$2$1$1.invokeSuspend(TestBuilders.kt:317)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.test.TestDispatcher.processEvent$kotlinx_coroutines_test(TestDispatcher.kt:24)
	at kotlinx.coroutines.test.TestCoroutineScheduler.tryRunNextTaskUnless$kotlinx_coroutines_test(TestCoroutineScheduler.kt:98)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$2$1$workRunner$1.invokeSuspend(TestBuilders.kt:326)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:256)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:54)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlockingImpl(Builders.kt:30)
	at kotlinx.coroutines.BuildersKt.runBlockingImpl(Unknown Source)
	at kotlinx.coroutines.BuildersKt__Builders_concurrentKt.runBlockingK(Builders.concurrent.kt:172)
	at kotlinx.coroutines.BuildersKt.runBlockingK(Unknown Source)
	at kotlinx.coroutines.BuildersKt__Builders_concurrentKt.runBlockingK$default(Builders.concurrent.kt:157)
	at kotlinx.coroutines.BuildersKt.runBlockingK$default(Unknown Source)
	at kotlinx.coroutines.test.TestBuildersJvmKt.createTestResult(TestBuildersJvm.kt:10)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:309)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:1)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:167)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:1)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0$default(TestBuilders.kt:159)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0$default(TestBuilders.kt:1)
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest.setResponseStateLoading for FACTORY_RESET calls useCase after config response(RadioConfigViewModelTest.kt:331)
org.meshtastic.feature.node.metrics.TracerouteChartTest::emptyRouteBack_yieldsNullReturnHops()[jvm]
Stack Traces | 0.013s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.emptyRouteBack_yieldsNullReturnHops(TracerouteChartTest.kt:226)
org.meshtastic.feature.node.metrics.TracerouteChartTest::returnHops_computedWhenRouteBackAvailable()[jvm]
Stack Traces | 0.013s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.returnHops_computedWhenRouteBackAvailable(TracerouteChartTest.kt:259)
org.meshtastic.feature.node.metrics.TracerouteChartTest::computesForwardHops()[jvm]
Stack Traces | 0.015s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.computesForwardHops(TracerouteChartTest.kt:143)
org.meshtastic.feature.settings.radio.RadioConfigViewModelTest::processPacketResponse updates state on metadata result()[jvm]
Stack Traces | 0.019s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.MeshPacket.<init>(int, int, int, org.meshtastic.proto.Data, okio.ByteString, int, int, float, int, boolean, org.meshtastic.proto.MeshPacket$Priority, int, org.meshtastic.proto.MeshPacket$Delayed, boolean, int, okio.ByteString, boolean, int, int, int, org.meshtastic.proto.MeshPacket$TransportMechanism, boolean, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest$processPacketResponse updates state on metadata result$1.invokeSuspend(RadioConfigViewModelTest.kt:210)
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest$processPacketResponse updates state on metadata result$1.invoke(RadioConfigViewModelTest.kt)
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest$processPacketResponse updates state on metadata result$1.invoke(RadioConfigViewModelTest.kt)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$2$1$1.invokeSuspend(TestBuilders.kt:317)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.test.TestDispatcher.processEvent$kotlinx_coroutines_test(TestDispatcher.kt:24)
	at kotlinx.coroutines.test.TestCoroutineScheduler.tryRunNextTaskUnless$kotlinx_coroutines_test(TestCoroutineScheduler.kt:98)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$2$1$workRunner$1.invokeSuspend(TestBuilders.kt:326)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:256)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:54)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlockingImpl(Builders.kt:30)
	at kotlinx.coroutines.BuildersKt.runBlockingImpl(Unknown Source)
	at kotlinx.coroutines.BuildersKt__Builders_concurrentKt.runBlockingK(Builders.concurrent.kt:172)
	at kotlinx.coroutines.BuildersKt.runBlockingK(Unknown Source)
	at kotlinx.coroutines.BuildersKt__Builders_concurrentKt.runBlockingK$default(Builders.concurrent.kt:157)
	at kotlinx.coroutines.BuildersKt.runBlockingK$default(Unknown Source)
	at kotlinx.coroutines.test.TestBuildersJvmKt.createTestResult(TestBuildersJvm.kt:10)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:309)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:1)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:167)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:1)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0$default(TestBuilders.kt:159)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0$default(TestBuilders.kt:1)
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest.processPacketResponse updates state on metadata result(RadioConfigViewModelTest.kt:206)
org.meshtastic.feature.node.metrics.DecodePaxFromLogTest::binaryProto_wantResponse_returnsNull
Stack Traces | 0.041s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.meshLogWithPacket(DecodePaxFromLogTest.kt:138)
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.meshLogWithPacket$default(DecodePaxFromLogTest.kt:133)
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.binaryProto_wantResponse_returnsNull(DecodePaxFromLogTest.kt:70)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65)
	at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88)
	at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
org.meshtastic.feature.node.metrics.DecodePaxFromLogTest::binaryProto_wantResponse_returnsNull()[jvm]
Stack Traces | 0.043s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.meshLogWithPacket(DecodePaxFromLogTest.kt:138)
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.meshLogWithPacket$default(DecodePaxFromLogTest.kt:133)
	at org.meshtastic.feature.node.metrics.DecodePaxFromLogTest.binaryProto_wantResponse_returnsNull(DecodePaxFromLogTest.kt:70)
org.meshtastic.feature.node.metrics.MetricsViewModelTest::saveSignalMetricsCSV writes correct data
Stack Traces | 0.046s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.MeshPacket.<init>(int, int, int, org.meshtastic.proto.Data, okio.ByteString, int, int, float, int, boolean, org.meshtastic.proto.MeshPacket$Priority, int, org.meshtastic.proto.MeshPacket$Delayed, boolean, int, okio.ByteString, boolean, int, int, int, org.meshtastic.proto.MeshPacket$TransportMechanism, boolean, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.MetricsViewModelTest$saveSignalMetricsCSV writes correct data$1.invokeSuspend(MetricsViewModelTest.kt:348)
	at org.meshtastic.feature.node.metrics.MetricsViewModelTest$saveSignalMetricsCSV writes correct data$1.invoke(MetricsViewModelTest.kt)
	at org.meshtastic.feature.node.metrics.MetricsViewModelTest$saveSignalMetricsCSV writes correct data$1.invoke(MetricsViewModelTest.kt)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$2$1$1.invokeSuspend(TestBuilders.kt:317)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.test.TestDispatcher.processEvent$kotlinx_coroutines_test(TestDispatcher.kt:24)
	at kotlinx.coroutines.test.TestCoroutineScheduler.tryRunNextTaskUnless$kotlinx_coroutines_test(TestCoroutineScheduler.kt:98)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$2$1$workRunner$1.invokeSuspend(TestBuilders.kt:326)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:256)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:54)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlockingImpl(Builders.kt:30)
	at kotlinx.coroutines.BuildersKt.runBlockingImpl(Unknown Source)
	at kotlinx.coroutines.BuildersKt__Builders_concurrentKt.runBlockingK(Builders.concurrent.kt:172)
	at kotlinx.coroutines.BuildersKt.runBlockingK(Unknown Source)
	at kotlinx.coroutines.BuildersKt__Builders_concurrentKt.runBlockingK$default(Builders.concurrent.kt:157)
	at kotlinx.coroutines.BuildersKt.runBlockingK$default(Unknown Source)
	at kotlinx.coroutines.test.TestBuildersJvmKt.createTestResult(TestBuildersJvm.kt:10)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:309)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:1)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:167)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:1)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0$default(TestBuilders.kt:159)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0$default(TestBuilders.kt:1)
	at org.meshtastic.feature.node.metrics.MetricsViewModelTest.saveSignalMetricsCSV writes correct data(MetricsViewModelTest.kt:347)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65)
	at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88)
	at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
org.meshtastic.feature.settings.radio.RadioConfigViewModelTest::Admin actions call correct useCases()[jvm]
Stack Traces | 0.057s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.MeshPacket.<init>(int, int, int, org.meshtastic.proto.Data, okio.ByteString, int, int, float, int, boolean, org.meshtastic.proto.MeshPacket$Priority, int, org.meshtastic.proto.MeshPacket$Delayed, boolean, int, okio.ByteString, boolean, int, int, int, org.meshtastic.proto.MeshPacket$TransportMechanism, boolean, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest$Admin actions call correct useCases$1.invokeSuspend(RadioConfigViewModelTest.kt:551)
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest$Admin actions call correct useCases$1.invoke(RadioConfigViewModelTest.kt)
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest$Admin actions call correct useCases$1.invoke(RadioConfigViewModelTest.kt)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$2$1$1.invokeSuspend(TestBuilders.kt:317)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.test.TestDispatcher.processEvent$kotlinx_coroutines_test(TestDispatcher.kt:24)
	at kotlinx.coroutines.test.TestCoroutineScheduler.tryRunNextTaskUnless$kotlinx_coroutines_test(TestCoroutineScheduler.kt:98)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$2$1$workRunner$1.invokeSuspend(TestBuilders.kt:326)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:256)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:54)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlockingImpl(Builders.kt:30)
	at kotlinx.coroutines.BuildersKt.runBlockingImpl(Unknown Source)
	at kotlinx.coroutines.BuildersKt__Builders_concurrentKt.runBlockingK(Builders.concurrent.kt:172)
	at kotlinx.coroutines.BuildersKt.runBlockingK(Unknown Source)
	at kotlinx.coroutines.BuildersKt__Builders_concurrentKt.runBlockingK$default(Builders.concurrent.kt:157)
	at kotlinx.coroutines.BuildersKt.runBlockingK$default(Unknown Source)
	at kotlinx.coroutines.test.TestBuildersJvmKt.createTestResult(TestBuildersJvm.kt:10)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:309)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:1)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:167)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:1)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0$default(TestBuilders.kt:159)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0$default(TestBuilders.kt:1)
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest.Admin actions call correct useCases(RadioConfigViewModelTest.kt:538)
org.meshtastic.feature.node.metrics.TracerouteChartTest::matchesRequestToResult
Stack Traces | 0.061s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.matchesRequestToResult(TracerouteChartTest.kt:128)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65)
	at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88)
	at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
org.meshtastic.feature.node.metrics.MetricsViewModelTest::saveSignalMetricsCSV writes correct data()[jvm]
Stack Traces | 0.076s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.MeshPacket.<init>(int, int, int, org.meshtastic.proto.Data, okio.ByteString, int, int, float, int, boolean, org.meshtastic.proto.MeshPacket$Priority, int, org.meshtastic.proto.MeshPacket$Delayed, boolean, int, okio.ByteString, boolean, int, int, int, org.meshtastic.proto.MeshPacket$TransportMechanism, boolean, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.MetricsViewModelTest$saveSignalMetricsCSV writes correct data$1.invokeSuspend(MetricsViewModelTest.kt:348)
	at org.meshtastic.feature.node.metrics.MetricsViewModelTest$saveSignalMetricsCSV writes correct data$1.invoke(MetricsViewModelTest.kt)
	at org.meshtastic.feature.node.metrics.MetricsViewModelTest$saveSignalMetricsCSV writes correct data$1.invoke(MetricsViewModelTest.kt)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$2$1$1.invokeSuspend(TestBuilders.kt:317)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.test.TestDispatcher.processEvent$kotlinx_coroutines_test(TestDispatcher.kt:24)
	at kotlinx.coroutines.test.TestCoroutineScheduler.tryRunNextTaskUnless$kotlinx_coroutines_test(TestCoroutineScheduler.kt:98)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$2$1$workRunner$1.invokeSuspend(TestBuilders.kt:326)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:256)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:54)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlockingImpl(Builders.kt:30)
	at kotlinx.coroutines.BuildersKt.runBlockingImpl(Unknown Source)
	at kotlinx.coroutines.BuildersKt__Builders_concurrentKt.runBlockingK(Builders.concurrent.kt:172)
	at kotlinx.coroutines.BuildersKt.runBlockingK(Unknown Source)
	at kotlinx.coroutines.BuildersKt__Builders_concurrentKt.runBlockingK$default(Builders.concurrent.kt:157)
	at kotlinx.coroutines.BuildersKt.runBlockingK$default(Unknown Source)
	at kotlinx.coroutines.test.TestBuildersJvmKt.createTestResult(TestBuildersJvm.kt:10)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:309)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:1)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:167)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:1)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0$default(TestBuilders.kt:159)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0$default(TestBuilders.kt:1)
	at org.meshtastic.feature.node.metrics.MetricsViewModelTest.saveSignalMetricsCSV writes correct data(MetricsViewModelTest.kt:347)
org.meshtastic.feature.settings.debugging.DebugViewModelTest::decodePayloadFromMeshLog decodes various portnums()[jvm]
Stack Traces | 0.091s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.settings.debugging.DebugViewModelTest.decodePayloadFromMeshLog decodes various portnums(DebugViewModelTest.kt:165)
org.meshtastic.feature.node.metrics.TracerouteChartTest::matchesRequestToResult()[jvm]
Stack Traces | 0.119s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.makeRequest(TracerouteChartTest.kt:72)
	at org.meshtastic.feature.node.metrics.TracerouteChartTest.matchesRequestToResult(TracerouteChartTest.kt:128)
org.meshtastic.feature.settings.SettingsViewModelTest::saveDataCsv writes filtered export via file service()[jvm]
Stack Traces | 0.122s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.Data.<init>(org.meshtastic.proto.PortNum, okio.ByteString, boolean, int, int, int, int, int, java.lang.Integer, okio.ByteString, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.settings.SettingsViewModelTest$saveDataCsv writes filtered export via file service$1.invokeSuspend(SettingsViewModelTest.kt:297)
	at org.meshtastic.feature.settings.SettingsViewModelTest$saveDataCsv writes filtered export via file service$1.invoke(SettingsViewModelTest.kt)
	at org.meshtastic.feature.settings.SettingsViewModelTest$saveDataCsv writes filtered export via file service$1.invoke(SettingsViewModelTest.kt)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$2$1$1.invokeSuspend(TestBuilders.kt:317)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.test.TestDispatcher.processEvent$kotlinx_coroutines_test(TestDispatcher.kt:24)
	at kotlinx.coroutines.test.TestCoroutineScheduler.tryRunNextTaskUnless$kotlinx_coroutines_test(TestCoroutineScheduler.kt:98)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$2$1$workRunner$1.invokeSuspend(TestBuilders.kt:326)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:256)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:54)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlockingImpl(Builders.kt:30)
	at kotlinx.coroutines.BuildersKt.runBlockingImpl(Unknown Source)
	at kotlinx.coroutines.BuildersKt__Builders_concurrentKt.runBlockingK(Builders.concurrent.kt:172)
	at kotlinx.coroutines.BuildersKt.runBlockingK(Unknown Source)
	at kotlinx.coroutines.BuildersKt__Builders_concurrentKt.runBlockingK$default(Builders.concurrent.kt:157)
	at kotlinx.coroutines.BuildersKt.runBlockingK$default(Unknown Source)
	at kotlinx.coroutines.test.TestBuildersJvmKt.createTestResult(TestBuildersJvm.kt:10)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:309)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:1)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:167)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:1)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0$default(TestBuilders.kt:159)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0$default(TestBuilders.kt:1)
	at org.meshtastic.feature.settings.SettingsViewModelTest.saveDataCsv writes filtered export via file service(SettingsViewModelTest.kt:274)
org.meshtastic.feature.settings.radio.RadioConfigViewModelTest::setResponseStateLoading for REBOOT calls useCase after config response()[jvm]
Stack Traces | 0.155s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.MeshPacket.<init>(int, int, int, org.meshtastic.proto.Data, okio.ByteString, int, int, float, int, boolean, org.meshtastic.proto.MeshPacket$Priority, int, org.meshtastic.proto.MeshPacket$Delayed, boolean, int, okio.ByteString, boolean, int, int, int, org.meshtastic.proto.MeshPacket$TransportMechanism, boolean, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest$setResponseStateLoading for REBOOT calls useCase after config response$1.invokeSuspend(RadioConfigViewModelTest.kt:325)
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest$setResponseStateLoading for REBOOT calls useCase after config response$1.invoke(RadioConfigViewModelTest.kt)
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest$setResponseStateLoading for REBOOT calls useCase after config response$1.invoke(RadioConfigViewModelTest.kt)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$2$1$1.invokeSuspend(TestBuilders.kt:317)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.test.TestDispatcher.processEvent$kotlinx_coroutines_test(TestDispatcher.kt:24)
	at kotlinx.coroutines.test.TestCoroutineScheduler.tryRunNextTaskUnless$kotlinx_coroutines_test(TestCoroutineScheduler.kt:98)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$2$1$workRunner$1.invokeSuspend(TestBuilders.kt:326)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:256)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:54)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlockingImpl(Builders.kt:30)
	at kotlinx.coroutines.BuildersKt.runBlockingImpl(Unknown Source)
	at kotlinx.coroutines.BuildersKt__Builders_concurrentKt.runBlockingK(Builders.concurrent.kt:172)
	at kotlinx.coroutines.BuildersKt.runBlockingK(Unknown Source)
	at kotlinx.coroutines.BuildersKt__Builders_concurrentKt.runBlockingK$default(Builders.concurrent.kt:157)
	at kotlinx.coroutines.BuildersKt.runBlockingK$default(Unknown Source)
	at kotlinx.coroutines.test.TestBuildersJvmKt.createTestResult(TestBuildersJvm.kt:10)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:309)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:1)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:167)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:1)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0$default(TestBuilders.kt:159)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0$default(TestBuilders.kt:1)
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest.setResponseStateLoading for REBOOT calls useCase after config response(RadioConfigViewModelTest.kt:308)
org.meshtastic.feature.settings.radio.RadioConfigViewModelTest::processPacketResponse updates state on various results()[jvm]
Stack Traces | 0.163s run time
java.lang.NoSuchMethodError: 'void org.meshtastic.proto.MeshPacket.<init>(int, int, int, org.meshtastic.proto.Data, okio.ByteString, int, int, float, int, boolean, org.meshtastic.proto.MeshPacket$Priority, int, org.meshtastic.proto.MeshPacket$Delayed, boolean, int, okio.ByteString, boolean, int, int, int, org.meshtastic.proto.MeshPacket$TransportMechanism, boolean, okio.ByteString, int, kotlin.jvm.internal.DefaultConstructorMarker)'
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest$processPacketResponse updates state on various results$1.invokeSuspend(RadioConfigViewModelTest.kt:506)
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest$processPacketResponse updates state on various results$1.invoke(RadioConfigViewModelTest.kt)
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest$processPacketResponse updates state on various results$1.invoke(RadioConfigViewModelTest.kt)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$2$1$1.invokeSuspend(TestBuilders.kt:317)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.test.TestDispatcher.processEvent$kotlinx_coroutines_test(TestDispatcher.kt:24)
	at kotlinx.coroutines.test.TestCoroutineScheduler.tryRunNextTaskUnless$kotlinx_coroutines_test(TestCoroutineScheduler.kt:98)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$2$1$workRunner$1.invokeSuspend(TestBuilders.kt:326)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:256)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:54)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlockingImpl(Builders.kt:30)
	at kotlinx.coroutines.BuildersKt.runBlockingImpl(Unknown Source)
	at kotlinx.coroutines.BuildersKt__Builders_concurrentKt.runBlockingK(Builders.concurrent.kt:172)
	at kotlinx.coroutines.BuildersKt.runBlockingK(Unknown Source)
	at kotlinx.coroutines.BuildersKt__Builders_concurrentKt.runBlockingK$default(Builders.concurrent.kt:157)
	at kotlinx.coroutines.BuildersKt.runBlockingK$default(Unknown Source)
	at kotlinx.coroutines.test.TestBuildersJvmKt.createTestResult(TestBuildersJvm.kt:10)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:309)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:1)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:167)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:1)
	at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0$default(TestBuilders.kt:159)
	at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0$default(TestBuilders.kt:1)
	at org.meshtastic.feature.settings.radio.RadioConfigViewModelTest.processPacketResponse updates state on various results(RadioConfigViewModelTest.kt:494)

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

… preview

Fully integrate the two new amateur-radio modem presets from the
develop-SNAPSHOT protos (firmware PR #10597):

- ChannelOption: add TINY_FAST/TINY_SLOW with the firmware-accurate
  15.625 kHz bandwidth (0.015625f). The proto comment's "20kHz" is the
  padded channel spacing, not the modem bandwidth that feeds
  numChannels/radioFreq, so using it would skew the frequency math.
- ModelExtensions.labelRes + label_tiny_fast/label_tiny_slow strings
  for the preset dropdown.
- Channel.kt: document that the preset->name `when` is interop-critical
  (the name feeds the channel hash, channel number/frequency and MQTT
  topic), name the firmware source of truth
  (DisplayFormatters::getModemPresetDisplayName), and flag the two
  deliberately-abbreviated names so nobody "fixes" the intentional
  compile tripwire with an auto-deriving else.

Also force org.meshtastic:protobufs* to develop-SNAPSHOT across the
build (root build.gradle.kts). takpacket-sdk-jvm:0.5.3 transitively
pins protobufs:2.7.25, and Gradle ranks 2.7.25 > develop-SNAPSHOT, so
the test runtime classpath was downgrading to 2.7.25 while compilation
used the snapshot -> NoSuchFieldError/NoSuchMethodError on the proto
classes (assembleDebug/detekt miss it; test/allTests catch it). The
force is safe because atak.proto is unchanged, so takpacket's message
ABI stays compatible with the newer protobufs.

NOTE: both the snapshot pin and this force are preview-only. Revert to
a released protobufs and drop the force once takpacket-sdk (and mqtt)
are republished against the new protos.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

📄 Docs staleness check — advisory

This PR modifies user-facing UI source files but does not update any page under docs/en/user/ or docs/en/developer/.

⚠️ Doc changes propagate to 3 consumers: in-app docs browser, Jekyll site (GitHub Pages), and meshtastic.org (Docusaurus sync). Updating a page in docs/en/ automatically flows to all three.

Changed source files:

core/ui/src/commonMain/kotlin/org/meshtastic/core/ui/util/ModelExtensions.kt

What to check:

Changed area Likely doc page
feature/messaging/ docs/en/user/messages-and-channels.md
feature/node/ docs/en/user/nodes.md or docs/en/user/node-metrics.md
feature/map/ docs/en/user/map-and-waypoints.md
feature/connections/ docs/en/user/connections.md
feature/settings/ docs/en/user/settings-radio-user.md or docs/en/user/settings-module-admin.md
feature/firmware/ docs/en/user/firmware.md
feature/intro/ docs/en/user/onboarding.md
feature/discovery/ docs/en/user/discovery.md
feature/docs/ Internal docs infrastructure
core/ui/ docs/en/developer/codebase.md or component-specific user pages

New page checklist (if adding a new doc page):

  1. Create the .md file in docs/en/user/ or docs/en/developer/ with last_updated frontmatter
  2. Register in DocBundleLoader.kt with string resources (in-app browser)
  3. Jekyll and Docusaurus sync pick up new pages automatically — no config change needed

If this PR does not require a doc update (e.g., internal refactor, bug fix, test change), add the skip-docs-check label to dismiss this check.

Cross-platform note: This check is advisory while doc coverage matures. Both Android and Apple repos use the same skip-docs-check label and advisory severity. See meshtastic/design standards for shared conventions.

@jamesarich jamesarich changed the title chore(deps): track protobufs develop-SNAPSHOT (new presets + proto preview) preview: track protobufs develop-SNAPSHOT + wire TINY_FAST/TINY_SLOW presets Jun 13, 2026
Add ChannelPresetNameTest (commonTest, so it gates every PR) pinning
every ModemPreset to its exact firmware-canonical channel name from
DisplayFormatters::getModemPresetDisplayName(preset, useShortName=false).
The name is interop-critical (it feeds the channel hash, channel
number/frequency and MQTT topic), so the test:
- locks the mapping against accidental edits (e.g. "LongMod" ->
  "LongModerate"),
- asserts set-completeness vs ModemPreset.entries, so a new preset that
  was added to Channel.name's `when` but not pinned here fails loudly
  (also catches someone silencing the intentional compile tripwire with
  an `else`),
- covers the deprecated VERY_LONG_SLOW, which still has a real name.

This backstops Channel.name's exhaustive `when` without weakening it.
The numeric on-air anchors (hash/channelNum/radioFreq) stay in
ChannelTest. Remove the old androidDeviceTest allModemPresetsHaveValidNames,
which only asserted name != "Invalid" — a value the no-else `when` can
never produce, so it gave the illusion of a name guard while testing
nothing, and ran only on-device rather than on every PR.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore dependencies Dependency update

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant