diff --git a/nmcp/src/main/kotlin/nmcp/internal/task/metadata.kt b/nmcp/src/main/kotlin/nmcp/internal/task/metadata.kt index 06d6809..c635168 100644 --- a/nmcp/src/main/kotlin/nmcp/internal/task/metadata.kt +++ b/nmcp/src/main/kotlin/nmcp/internal/task/metadata.kt @@ -7,6 +7,9 @@ import nl.adaptivity.xmlutil.serialization.XmlChildrenName import nl.adaptivity.xmlutil.serialization.XmlElement import nl.adaptivity.xmlutil.serialization.XmlSerialName +/** + * See https://maven.apache.org/xsd/repository-metadata-1.1.0.xsd + */ @Serializable @XmlSerialName("metadata") internal data class VersionMetadata( @@ -55,6 +58,7 @@ internal data class VersionMetadata( @Serializable @XmlSerialName("metadata") internal data class ArtifactMetadata( + val modelVersion: String = "1.1.0", @XmlElement val groupId: String, @XmlElement diff --git a/nmcp/src/test/kotlin/MetadataTest.kt b/nmcp/src/test/kotlin/MetadataTest.kt index 4182bf5..a0bd9d6 100644 --- a/nmcp/src/test/kotlin/MetadataTest.kt +++ b/nmcp/src/test/kotlin/MetadataTest.kt @@ -1,3 +1,4 @@ +import java.io.File import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertNull @@ -8,27 +9,14 @@ import nmcp.transport.encodeToXml import nmcp.internal.task.xml class MetadataTest { + @Test - fun artifactMetadataIsDecodedSuccessfully() { - // language=xml - val xmlData = """ - - - com.apollographql.apollo - apollo-api-jvm - - 5.0.0-SNAPSHOT - - - 4.1.2-SNAPSHOT - 5.0.0-SNAPSHOT - - 20250618175334 - - - """.trimIndent() + fun apolloArtifactMetadataIsDecodedSuccessfully() { + val xmlData = testData("apollo-artifact-metadata.xml") xml.decodeFromString(xmlData).apply { + // The metadata doesn't have modelVersion but it is initialized to the default + assertEquals("1.1.0", modelVersion) assertEquals("com.apollographql.apollo", groupId) assertEquals("apollo-api-jvm", artifactId) versioning.apply { @@ -55,7 +43,7 @@ class MetadataTest { // language=xml val xmlData = """ - + com.apollographql.apollo apollo-api-jvm @@ -89,52 +77,8 @@ class MetadataTest { } @Test - fun versionMetadataIsDecodedSuccessfully() { - // language=xml - val metadata = """ - - - com.apollographql.apollo - apollo-api-jvm - - 20250618175232 - - 20250618.175232 - 62 - - - - jar - 5.0.0-20250618.175232-62 - 20250618175232 - - - module - 5.0.0-20250618.175232-62 - 20250618175232 - - - pom - 5.0.0-20250618.175232-62 - 20250618175232 - - - javadoc - jar - 5.0.0-20250618.175232-62 - 20250618175232 - - - sources - jar - 5.0.0-20250618.175232-62 - 20250618175232 - - - - 5.0.0-SNAPSHOT - - """.trimIndent() + fun apolloVersionMetadataIsDecodedSuccessfully() { + val metadata = testData("apollo-version-metadata.xml") xml.decodeFromString(metadata).apply { assertEquals("com.apollographql.apollo", groupId) @@ -252,4 +196,23 @@ class MetadataTest { val data = xml.decodeFromString(xmlData) assertNull(data.versioning.release) } + + @Test + fun sealedObjectInstanceArtifactMetadataIsDecodedSuccessfully() { + testData("sealed-object-instances-artifact-metadata.xml").let { + xml.decodeFromString(it) + } + } + + @Test + fun sealedObjectInstanceVersionMetadataIsDecodedSuccessfully() { + testData("sealed-object-instances-version-metadata.xml").let { + xml.decodeFromString(it) + } + } +} + + +private fun testData(name: String): String { + return File("test-data").resolve(name).readText() } diff --git a/nmcp/test-data/apollo-artifact-metadata.xml b/nmcp/test-data/apollo-artifact-metadata.xml new file mode 100644 index 0000000..b9ebd43 --- /dev/null +++ b/nmcp/test-data/apollo-artifact-metadata.xml @@ -0,0 +1,14 @@ + + + com.apollographql.apollo + apollo-api-jvm + + 5.0.0-SNAPSHOT + + + 4.1.2-SNAPSHOT + 5.0.0-SNAPSHOT + + 20250618175334 + + diff --git a/nmcp/test-data/apollo-version-metadata.xml b/nmcp/test-data/apollo-version-metadata.xml new file mode 100644 index 0000000..e3e9109 --- /dev/null +++ b/nmcp/test-data/apollo-version-metadata.xml @@ -0,0 +1,42 @@ + + + com.apollographql.apollo + apollo-api-jvm + + 20250618175232 + + 20250618.175232 + 62 + + + + jar + 5.0.0-20250618.175232-62 + 20250618175232 + + + module + 5.0.0-20250618.175232-62 + 20250618175232 + + + pom + 5.0.0-20250618.175232-62 + 20250618175232 + + + javadoc + jar + 5.0.0-20250618.175232-62 + 20250618175232 + + + sources + jar + 5.0.0-20250618.175232-62 + 20250618175232 + + + + 5.0.0-SNAPSHOT + diff --git a/nmcp/test-data/sealed-object-instances-artifact-metadata.xml b/nmcp/test-data/sealed-object-instances-artifact-metadata.xml new file mode 100644 index 0000000..b52f378 --- /dev/null +++ b/nmcp/test-data/sealed-object-instances-artifact-metadata.xml @@ -0,0 +1,13 @@ + + + fr.smarquis.sealed + sealed-object-instances + + 1.11.0-SNAPSHOT + + 1.10.0-SNAPSHOT + 1.11.0-SNAPSHOT + + 20250601220426 + + \ No newline at end of file diff --git a/nmcp/test-data/sealed-object-instances-version-metadata.xml b/nmcp/test-data/sealed-object-instances-version-metadata.xml new file mode 100644 index 0000000..a1f4547 --- /dev/null +++ b/nmcp/test-data/sealed-object-instances-version-metadata.xml @@ -0,0 +1,81 @@ + + + fr.smarquis.sealed + sealed-object-instances + + 20250706084833 + + 20250706.084833 + 4 + + + + module + 1.11.0-20250706.084833-1 + 20250706084833 + + + html-docs + jar.asc + 1.11.0-20250706.084833-1 + 20250706084833 + + + javadoc + jar.asc + 1.11.0-20250706.084833-1 + 20250706084833 + + + pom.asc + 1.11.0-20250706.084833-1 + 20250706084833 + + + sources + jar + 1.11.0-20250706.084833-1 + 20250706084833 + + + html-docs + jar + 1.11.0-20250706.084833-1 + 20250706084833 + + + javadoc + jar + 1.11.0-20250706.084833-1 + 20250706084833 + + + pom + 1.11.0-20250706.084833-1 + 20250706084833 + + + sources + jar.asc + 1.11.0-20250706.084833-1 + 20250706084833 + + + jar.asc + 1.11.0-20250706.084833-1 + 20250706084833 + + + module.asc + 1.11.0-20250706.084833-1 + 20250706084833 + + + jar + 1.11.0-20250706.084833-1 + 20250706084833 + + + + 1.11.0-SNAPSHOT + \ No newline at end of file