From ef753c8a1b9f02d9f6f026d555d628fbb207c574 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Mon, 27 Feb 2017 18:30:30 +0300 Subject: Package platforms detected based on it's members, refactored multiplatform tests layout --- core/src/test/kotlin/format/MarkdownFormatTest.kt | 25 +++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'core/src/test/kotlin/format') diff --git a/core/src/test/kotlin/format/MarkdownFormatTest.kt b/core/src/test/kotlin/format/MarkdownFormatTest.kt index 4830d760..e87811ee 100644 --- a/core/src/test/kotlin/format/MarkdownFormatTest.kt +++ b/core/src/test/kotlin/format/MarkdownFormatTest.kt @@ -255,35 +255,44 @@ class MarkdownFormatTest { } @Test fun multiplePlatforms() { - verifyMultiplatformPackage(buildMultiplePlatforms("multiplatform"), "multiplatform") + verifyMultiplatformPackage(buildMultiplePlatforms("multiplatform/simple"), "multiplatform/simple") } @Test fun multiplePlatformsMerge() { - verifyMultiplatformPackage(buildMultiplePlatforms("multiplatformMerge"), "multiplatformMerge") + verifyMultiplatformPackage(buildMultiplePlatforms("multiplatform/merge"), "multiplatform/merge") } @Test fun multiplePlatformsMergeMembers() { - val module = buildMultiplePlatforms("multiplatformMergeMembers") - verifyModelOutput(module, ".md", "testdata/format/multiplatformMergeMembers/foo.kt") { model, output -> + val module = buildMultiplePlatforms("multiplatform/mergeMembers") + verifyModelOutput(module, ".md", "testdata/format/multiplatform/mergeMembers/foo.kt") { model, output -> markdownService.createOutputBuilder(output, tempLocation).appendNodes(model.members.single().members) } } @Test fun multiplePlatformsOmitRedundant() { - val module = buildMultiplePlatforms("multiplatformOmitRedundant") - verifyModelOutput(module, ".md", "testdata/format/multiplatformOmitRedundant/foo.kt") { model, output -> + val module = buildMultiplePlatforms("multiplatform/omitRedundant") + verifyModelOutput(module, ".md", "testdata/format/multiplatform/omitRedundant/foo.kt") { model, output -> markdownService.createOutputBuilder(output, tempLocation).appendNodes(model.members.single().members) } } @Test fun multiplePlatformsImplied() { - val module = buildMultiplePlatforms("multiplatformImplied") - verifyModelOutput(module, ".md", "testdata/format/multiplatformImplied/foo.kt") { model, output -> + val module = buildMultiplePlatforms("multiplatform/implied") + verifyModelOutput(module, ".md", "testdata/format/multiplatform/implied/foo.kt") { model, output -> MarkdownFormatService(InMemoryLocationService, KotlinLanguageService(), listOf("JVM", "JS")) .createOutputBuilder(output, tempLocation).appendNodes(model.members.single().members) } } + @Test fun multiplePlatformsPackagePlatformFromMembers() { + val module = buildMultiplePlatforms("multiplatform/packagePlatformsFromMembers") + verifyModelOutput(module, ".md", "testdata/format/multiplatform/packagePlatformsFromMembers/multiplatform.index.kt") { + model, output -> + MarkdownFormatService(InMemoryLocationService, KotlinLanguageService(), listOf()) + .createOutputBuilder(output, tempLocation).appendNodes(model.members) + } + } + private fun buildMultiplePlatforms(path: String): DocumentationModule { val module = DocumentationModule("test") val options = DocumentationOptions("", "html", generateIndexPages = false) -- cgit From bc71b31be28ed558e022babcf40ec1fd3bff923a Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Mon, 27 Feb 2017 20:08:31 +0300 Subject: Platform and version requirements for packages. Fixed tests. Post review. --- .../main/kotlin/Formats/StructuredFormatService.kt | 20 +++++++++++++++----- core/src/test/kotlin/format/MarkdownFormatTest.kt | 8 ++++++-- .../multiplatform/merge/multiplatform.package.md | 2 ++ .../multiplatform.index.md | 8 ++++---- .../multiplatform.package.md | 10 ++++++++++ core/testdata/format/sinceKotlin.package.md | 2 ++ 6 files changed, 39 insertions(+), 11 deletions(-) create mode 100644 core/testdata/format/multiplatform/packagePlatformsFromMembers/multiplatform.package.md (limited to 'core/src/test/kotlin/format') diff --git a/core/src/main/kotlin/Formats/StructuredFormatService.kt b/core/src/main/kotlin/Formats/StructuredFormatService.kt index 79ebabe0..a7b696eb 100644 --- a/core/src/main/kotlin/Formats/StructuredFormatService.kt +++ b/core/src/main/kotlin/Formats/StructuredFormatService.kt @@ -263,6 +263,7 @@ abstract class StructuredOutputBuilder(val to: StringBuilder, val packageName = if (singleNode.name.isEmpty()) "" else singleNode.name appendHeader(2) { appendText("Package $packageName") } } + singleNode.appendPlatforms() appendContent(singleNode.content) } else { val breakdownByName = nodes.groupBy { node -> node.name } @@ -354,13 +355,25 @@ abstract class StructuredOutputBuilder(val to: StringBuilder, } private fun DocumentationNode.appendPlatforms() { - val platforms = platformsToShow.ifEmpty { return } + val platforms = if (isModuleOrPackage()) + platformsToShow.toSet() + platformsOfItems(members) + else + platformsToShow + + if(platforms.isEmpty()) return + appendParagraph { appendStrong { to.append("Platform and version requirements:") } to.append(" " + platforms.joinToString()) } } + protected fun platformsOfItems(items: List): Set = + items.foldRight(items.first().platformsToShow.toSet()) { + node, platforms -> + platforms.intersect(node.platformsToShow) + } + val DocumentationNode.platformsToShow: List get() = platforms.let { if (it.containsAll(impliedPlatforms)) it - impliedPlatforms else it } @@ -501,10 +514,7 @@ abstract class StructuredOutputBuilder(val to: StringBuilder, } private fun platformsOfItems(items: List, omitSamePlatforms: Boolean = true): Set { - val platforms = items.foldRight(items.first().platformsToShow.toSet()) { - node, platforms -> - platforms.intersect(node.platformsToShow) - } + val platforms = platformsOfItems(items) if (platforms.isNotEmpty() && (platforms != node.platformsToShow.toSet() || !omitSamePlatforms)) { return platforms } diff --git a/core/src/test/kotlin/format/MarkdownFormatTest.kt b/core/src/test/kotlin/format/MarkdownFormatTest.kt index e87811ee..d21528b5 100644 --- a/core/src/test/kotlin/format/MarkdownFormatTest.kt +++ b/core/src/test/kotlin/format/MarkdownFormatTest.kt @@ -284,15 +284,19 @@ class MarkdownFormatTest { } } - @Test fun multiplePlatformsPackagePlatformFromMembers() { + @Test fun multiplePlatformsPackagePlatformFromMembersIndex() { val module = buildMultiplePlatforms("multiplatform/packagePlatformsFromMembers") verifyModelOutput(module, ".md", "testdata/format/multiplatform/packagePlatformsFromMembers/multiplatform.index.kt") { model, output -> MarkdownFormatService(InMemoryLocationService, KotlinLanguageService(), listOf()) - .createOutputBuilder(output, tempLocation).appendNodes(model.members) + .createOutputBuilder(output, tempLocation).appendNodes(listOf(model)) } } + @Test fun multiplePlatformsPackagePlatformFromMembers() { + verifyMultiplatformPackage(buildMultiplePlatforms("multiplatform/packagePlatformsFromMembers"), "multiplatform/packagePlatformsFromMembers") + } + private fun buildMultiplePlatforms(path: String): DocumentationModule { val module = DocumentationModule("test") val options = DocumentationOptions("", "html", generateIndexPages = false) diff --git a/core/testdata/format/multiplatform/merge/multiplatform.package.md b/core/testdata/format/multiplatform/merge/multiplatform.package.md index a423f603..8e463327 100644 --- a/core/testdata/format/multiplatform/merge/multiplatform.package.md +++ b/core/testdata/format/multiplatform/merge/multiplatform.package.md @@ -2,6 +2,8 @@ ## Package foo +**Platform and version requirements:** JVM, JS + ### Types | [Foo](test/foo/-foo/index)
(JVM, JS) | `class Foo`
This is a foo. | diff --git a/core/testdata/format/multiplatform/packagePlatformsFromMembers/multiplatform.index.md b/core/testdata/format/multiplatform/packagePlatformsFromMembers/multiplatform.index.md index 0440bb1d..294513ed 100644 --- a/core/testdata/format/multiplatform/packagePlatformsFromMembers/multiplatform.index.md +++ b/core/testdata/format/multiplatform/packagePlatformsFromMembers/multiplatform.index.md @@ -1,8 +1,8 @@ -[test](test/index) / [foo.bar](test/foo.bar/index) +[test](test/index) -## Package foo.bar +### Packages -### Functions +| [foo.bar](test/foo.bar/index)
(JVM, JS) | | -| [buz](test/foo.bar/buz)
(JVM, JS) | `fun buz(): Unit` | +### Index diff --git a/core/testdata/format/multiplatform/packagePlatformsFromMembers/multiplatform.package.md b/core/testdata/format/multiplatform/packagePlatformsFromMembers/multiplatform.package.md new file mode 100644 index 00000000..2921cdd1 --- /dev/null +++ b/core/testdata/format/multiplatform/packagePlatformsFromMembers/multiplatform.package.md @@ -0,0 +1,10 @@ +[test](test/index) / [foo.bar](test/foo.bar/index) + +## Package foo.bar + +**Platform and version requirements:** JVM, JS + +### Functions + +| [buz](test/foo.bar/buz)
(JVM, JS) | `fun buz(): Unit` | + diff --git a/core/testdata/format/sinceKotlin.package.md b/core/testdata/format/sinceKotlin.package.md index 2af0c9ee..c811749c 100644 --- a/core/testdata/format/sinceKotlin.package.md +++ b/core/testdata/format/sinceKotlin.package.md @@ -2,6 +2,8 @@ ## Package <root> +**Platform and version requirements:** Kotlin 1.1 + ### Types | [Since1.1](test/-since1.1/index)
(Kotlin 1.1) | `class Since1.1`
Useful | -- cgit