From 8166c5e3e730164165e87d0beb4d2249723687f0 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Tue, 21 Apr 2015 11:19:31 +0100 Subject: [PATCH] =?UTF-8?q?Add=20a=20task=20that=20verifies=20the=20includ?= =?UTF-8?q?es=20in=20a=20sample=E2=80=99s=20.adoc=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enhance buildSamples such that, once a sample has been built, it looks at the generated HTML files and checks that they do not contain any output that's indicative of a malformed include in a source .adoc file. This additional verification found another malformed include which this commit corrects. --- .../build/SampleBuildConfigurer.groovy | 35 ++++++++++++++++++- .../src/main/asciidoc/api-guide.adoc | 2 +- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/groovy/org/springframework/restdocs/build/SampleBuildConfigurer.groovy b/buildSrc/src/main/groovy/org/springframework/restdocs/build/SampleBuildConfigurer.groovy index 2ff80d71..7bf9293f 100644 --- a/buildSrc/src/main/groovy/org/springframework/restdocs/build/SampleBuildConfigurer.groovy +++ b/buildSrc/src/main/groovy/org/springframework/restdocs/build/SampleBuildConfigurer.groovy @@ -16,6 +16,7 @@ package org.springframework.restdocs.build +import org.gradle.api.GradleException import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.tasks.Exec @@ -38,10 +39,12 @@ public class SampleBuildConfigurer { Task createTask(Project project, Object... dependencies) { Task mavenBuild = mavenBuild(project, dependencies) Task gradleBuild = gradleBuild(project, dependencies) + Task verifyIncludes = verifyIncludes(project) + verifyIncludes.dependsOn mavenBuild, gradleBuild Task sampleBuild = project.tasks.create name sampleBuild.description = "Builds the ${name} sample" sampleBuild.group = "Build" - sampleBuild.dependsOn mavenBuild, gradleBuild + sampleBuild.dependsOn mavenBuild, gradleBuild, verifyIncludes return sampleBuild } @@ -68,4 +71,34 @@ public class SampleBuildConfigurer { return gradleBuild } + private Task verifyIncludes(Project project) { + Task verifyIncludes = project.tasks.create("${name}VerifyIncludes") + verifyIncludes.description = "Verifies the includes in the ${name} sample" + verifyIncludes << { + Map unprocessedIncludes = [:] + [new File(this.workingDir, "build/asciidoc"), + new File(this.workingDir, "target/generated-docs")].each { buildDir -> + buildDir.eachFileRecurse { file -> + if (file.name.endsWith('.html')) { + file.eachLine { line -> + if (line.contains(new File(this.workingDir).absolutePath)) { + unprocessedIncludes.get(file, []).add(line) + } + } + } + } + } + if (unprocessedIncludes) { + StringWriter message = new StringWriter() + PrintWriter writer = new PrintWriter(message) + writer.println 'Found unprocessed includes:' + unprocessedIncludes.each { file, lines -> + writer.println " ${file}:" + lines.each { line -> writer.println " ${line}" } + } + throw new GradleException(message.toString()) + } + } + return verifyIncludes + } } \ No newline at end of file diff --git a/samples/rest-notes-spring-data-rest/src/main/asciidoc/api-guide.adoc b/samples/rest-notes-spring-data-rest/src/main/asciidoc/api-guide.adoc index cffe5339..9b14b377 100644 --- a/samples/rest-notes-spring-data-rest/src/main/asciidoc/api-guide.adoc +++ b/samples/rest-notes-spring-data-rest/src/main/asciidoc/api-guide.adoc @@ -268,7 +268,7 @@ The Tag resource is used to retrieve, update, and delete individual tags [[resources-tag-links]] === Links -include:{{generated}/tag-get-example/links.adoc +include::{generated}/tag-get-example/links.adoc[]