From 85645000d4124f43bf80cd7657ec69c4c8a39b5f Mon Sep 17 00:00:00 2001 From: Goooler Date: Fri, 10 Oct 2025 14:33:31 +0800 Subject: [PATCH] Remove document tests for 8.x --- .../shadow/docs/ManualCodeSnippetTests.groovy | 41 --------- .../docs/executer/GradleBuildExecuter.groovy | 87 ------------------- .../shadow/docs/executer/NoopExecuter.groovy | 18 ---- .../extractor/ManualSnippetExtractor.groovy | 68 --------------- .../docs/fixture/GroovyDslFixture.groovy | 49 ----------- .../plugins/shadow/docs/internal/Block.java | 11 --- .../internal/snippets/TestCodeSnippet.java | 41 --------- .../snippets/executer/CompileException.java | 18 ---- .../executer/ExceptionTransformer.groovy | 39 --------- .../snippets/executer/SnippetExecuter.java | 14 --- .../fixture/GroovyScriptFixture.groovy | 10 --- .../snippets/fixture/SnippetFixture.java | 27 ------ 12 files changed, 423 deletions(-) delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/ManualCodeSnippetTests.groovy delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/executer/GradleBuildExecuter.groovy delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/executer/NoopExecuter.groovy delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/extractor/ManualSnippetExtractor.groovy delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/fixture/GroovyDslFixture.groovy delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/Block.java delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/TestCodeSnippet.java delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/executer/CompileException.java delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/executer/ExceptionTransformer.groovy delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/executer/SnippetExecuter.java delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/fixture/GroovyScriptFixture.groovy delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/fixture/SnippetFixture.java diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/ManualCodeSnippetTests.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/ManualCodeSnippetTests.groovy deleted file mode 100644 index b937059aa..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/ManualCodeSnippetTests.groovy +++ /dev/null @@ -1,41 +0,0 @@ -package com.github.jengelman.gradle.plugins.shadow.docs - -import com.github.jengelman.gradle.plugins.shadow.docs.executer.GradleBuildExecuter -import com.github.jengelman.gradle.plugins.shadow.docs.executer.NoopExecuter -import com.github.jengelman.gradle.plugins.shadow.docs.extractor.ManualSnippetExtractor -import com.github.jengelman.gradle.plugins.shadow.docs.fixture.GroovyDslFixture -import com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.TestCodeSnippet -import com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.executer.SnippetExecuter -import com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.fixture.GroovyScriptFixture -import com.google.common.base.StandardSystemProperty -import org.junit.jupiter.api.Disabled -import org.junit.jupiter.api.DynamicTest -import org.junit.jupiter.api.TestFactory -import org.junit.jupiter.api.io.TempDir - -import java.nio.file.Path - -class ManualCodeSnippetTests { - public static final LinkedHashMap FIXTURES = [ - "groovy" : new GradleBuildExecuter("build.gradle", new GroovyDslFixture(), new GroovyDslFixture.ImportsExtractor()), - "groovy no-plugins": new GradleBuildExecuter("build.gradle", new GroovyScriptFixture(), new GroovyDslFixture.ImportsExtractor()), - "groovy no-run" : new NoopExecuter() - ] - - @Disabled("We have to run doc tests on main branch only") - @TestFactory - List provideDynamicTests(@TempDir Path tempDir) { - File cwd = new File(StandardSystemProperty.USER_DIR.value()) - def content = new File(cwd, "src/docs") - List snippets = [] - - FIXTURES.each { selector, executer -> - ManualSnippetExtractor.extract(tempDir, content, selector, executer).each { - snippets.add(it) - } - } - return snippets.collect { - DynamicTest.dynamicTest(it.testName, it) - } - } -} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/executer/GradleBuildExecuter.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/executer/GradleBuildExecuter.groovy deleted file mode 100644 index d727eb562..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/executer/GradleBuildExecuter.groovy +++ /dev/null @@ -1,87 +0,0 @@ -package com.github.jengelman.gradle.plugins.shadow.docs.executer - -import com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.TestCodeSnippet -import com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.executer.SnippetExecuter -import com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.fixture.SnippetFixture -import com.github.jengelman.gradle.plugins.shadow.util.PluginSpecification -import org.gradle.testkit.runner.GradleRunner - -import java.util.function.Function - -class GradleBuildExecuter implements SnippetExecuter { - - private final SnippetFixture fixture - private final String buildFile - private final Function> importExtractor - - private List arguments = ["build", "-m"] - - GradleBuildExecuter(String buildFile, SnippetFixture fixture, Function> importExtractor) { - this.buildFile = buildFile - this.fixture = fixture - this.importExtractor = importExtractor - } - - GradleBuildExecuter(String buildFile, List arguments, SnippetFixture fixture, Function> importExtractor) { - this(buildFile, fixture, importExtractor) - this.arguments = arguments - } - - @Override - SnippetFixture getFixture() { - return fixture - } - - @Override - void execute(File tempDir, TestCodeSnippet snippet) throws Exception { - addSubProject(tempDir) - File settings = new File(tempDir, "settings.gradle") - settings.text = """ -rootProject.name = 'shadowTest' -include 'api', 'main' -""" - - File mainDir = new File(tempDir, "main") - mainDir.mkdirs() - File buildFile = new File(mainDir, buildFile) - - - List importsAndSnippet = importExtractor.apply(snippet.getSnippet()) - - String imports = importsAndSnippet.get(0) - String snippetMinusImports = fixture.transform(importsAndSnippet.get(1)) - String fullSnippet = imports + fixture.pre() + snippetMinusImports + fixture.post() - - buildFile.text = replaceTokens(fullSnippet) - - GradleRunner runner = GradleRunner.create() - .withGradleVersion(PluginSpecification.TEST_GRADLE_VERSION) - .withProjectDir(tempDir) - .withPluginClasspath() - .forwardOutput() - - runner.withArguments(":main:build", "-m").build() - - } - - private static void addSubProject(File dir) { - File api = new File(dir, "api") - api.mkdirs() - File build = new File(api, "build.gradle") - build.text = """ -plugins { - id 'java' - id 'com.gradleup.shadow' -} - -repositories { - mavenLocal() - mavenCentral() -} -""" - } - - private static String replaceTokens(String snippet) { - return snippet.replaceAll("@version@", 'latest') - } -} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/executer/NoopExecuter.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/executer/NoopExecuter.groovy deleted file mode 100644 index aabd60c81..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/executer/NoopExecuter.groovy +++ /dev/null @@ -1,18 +0,0 @@ -package com.github.jengelman.gradle.plugins.shadow.docs.executer - -import com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.TestCodeSnippet -import com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.executer.SnippetExecuter -import com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.fixture.SnippetFixture - -class NoopExecuter implements SnippetExecuter { - - @Override - SnippetFixture getFixture() { - return null - } - - @Override - void execute(File tempDir, TestCodeSnippet snippet) throws Exception { - // noop - } -} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/extractor/ManualSnippetExtractor.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/extractor/ManualSnippetExtractor.groovy deleted file mode 100644 index 7f1f85aa1..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/extractor/ManualSnippetExtractor.groovy +++ /dev/null @@ -1,68 +0,0 @@ -package com.github.jengelman.gradle.plugins.shadow.docs.extractor - -import com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.TestCodeSnippet -import com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.executer.ExceptionTransformer -import com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.executer.SnippetExecuter -import groovy.ant.FileNameFinder - -import java.nio.file.Path -import java.util.regex.Pattern - -class ManualSnippetExtractor { - - static List extract(Path tempDir, File root, String cssClass, SnippetExecuter executer) { - List snippets = [] - - def snippetBlockPattern = Pattern.compile(/(?ims)```$cssClass\n(.*?)\n```/) - def filenames = new FileNameFinder().getFileNames(root.absolutePath, "**/*.md") - - filenames.each { filename -> - def file = new File(filename) - addSnippets(tempDir, snippets, file, snippetBlockPattern, executer) - } - - snippets - } - - private static void addSnippets(Path tempDir, List snippets, File file, Pattern snippetBlockPattern, SnippetExecuter executer) { - def source = file.text - String testName = file.parentFile.name + "/" + file.name - Map snippetsByLine = findSnippetsByLine(source, snippetBlockPattern) - - snippetsByLine.each { lineNumber, snippet -> - snippets << createSnippet(tempDir, testName, file, lineNumber, snippet, executer) - } - } - - private static List findSnippetBlocks(String code, Pattern snippetTagPattern) { - List tags = [] - code.eachMatch(snippetTagPattern) { matches -> - tags.add(matches[0]) - } - tags - } - - private static Map findSnippetsByLine(String source, Pattern snippetTagPattern) { - List snippetBlocks = findSnippetBlocks(source, snippetTagPattern) - Map snippetBlocksByLine = [:] - - int codeIndex = 0 - snippetBlocks.each { block -> - codeIndex = source.indexOf(block, codeIndex) - def lineNumber = source.substring(0, codeIndex).readLines().size() + 2 - snippetBlocksByLine.put(lineNumber, extractSnippetFromBlock(block)) - codeIndex += block.size() - } - - snippetBlocksByLine - } - - private static String extractSnippetFromBlock(String tag) { - tag.substring(tag.indexOf("\n") + 1, tag.lastIndexOf("\n")) - } - - private static TestCodeSnippet createSnippet(Path tempDir, String sourceClassName, File sourceFile, int lineNumber, String snippet, SnippetExecuter executer) { - new TestCodeSnippet(tempDir, snippet, sourceClassName + ":$lineNumber", executer, new ExceptionTransformer(sourceClassName, sourceFile.name, lineNumber)) - } - -} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/fixture/GroovyDslFixture.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/fixture/GroovyDslFixture.groovy deleted file mode 100644 index 0c67cf501..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/fixture/GroovyDslFixture.groovy +++ /dev/null @@ -1,49 +0,0 @@ -package com.github.jengelman.gradle.plugins.shadow.docs.fixture - -import com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.fixture.GroovyScriptFixture - -import java.util.function.Function - -class GroovyDslFixture extends GroovyScriptFixture { - - @Override - String pre() { - """ -plugins { - id 'java' - id 'com.gradleup.shadow' - id 'application' -} - -version = "1.0" -group = 'shadow' - -repositories { - mavenLocal() - mavenCentral() -} -""" - } - - static class ImportsExtractor implements Function> { - - @Override - List apply(String snippet) { - StringBuilder imports = new StringBuilder() - StringBuilder scriptMinusImports = new StringBuilder() - - for (String line : snippet.split("\\n")) { - StringBuilder target - if (line.trim().startsWith("import ")) { - target = imports - } else { - target = scriptMinusImports - } - - target.append(line).append("\n") - } - - return Arrays.asList(imports.toString(), scriptMinusImports.toString()) - } - } -} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/Block.java b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/Block.java deleted file mode 100644 index 133d8cdf4..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/Block.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.github.jengelman.gradle.plugins.shadow.docs.internal; - -public interface Block { - - /** - * Execute the action. - * - * @throws Exception any - */ - void execute() throws Exception; -} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/TestCodeSnippet.java b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/TestCodeSnippet.java deleted file mode 100644 index 50ad397ab..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/TestCodeSnippet.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets; - -import com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.executer.ExceptionTransformer; -import com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.executer.SnippetExecuter; - -import org.junit.jupiter.api.function.Executable; - -import java.nio.file.Path; - -public class TestCodeSnippet implements Executable { - - private final Path tempDir; - private final String snippet; - private final String testName; - private final SnippetExecuter executer; - private final ExceptionTransformer exceptionTransformer; - - public TestCodeSnippet(Path tempDir, String snippet, String testName, SnippetExecuter executer, ExceptionTransformer exceptionTransformer) { - this.tempDir = tempDir; - this.snippet = snippet; - this.testName = testName; - this.executer = executer; - this.exceptionTransformer = exceptionTransformer; - } - - public String getSnippet() { - return snippet; - } - - public String getTestName() { - return testName; - } - - public void execute() throws Throwable { - try { - executer.execute(tempDir.toFile(), this); - } catch (Throwable t) { - throw exceptionTransformer.transform(t, executer.getFixture().getOffset()); - } - } -} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/executer/CompileException.java b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/executer/CompileException.java deleted file mode 100644 index eeab7a2d4..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/executer/CompileException.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.executer; - -public class CompileException extends RuntimeException { - - private static final long serialVersionUID = 0; - - private final int lineNo; - - public CompileException(Throwable cause, int lineNo) { - super(cause); - this.lineNo = lineNo; - } - - public int getLineNo() { - return lineNo; - } - -} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/executer/ExceptionTransformer.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/executer/ExceptionTransformer.groovy deleted file mode 100644 index 15331d0ef..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/executer/ExceptionTransformer.groovy +++ /dev/null @@ -1,39 +0,0 @@ -package com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.executer - -class ExceptionTransformer { - - final String sourceClassName - final String sourceFileName - final Integer lineNumber - - ExceptionTransformer(String sourceClassName, String sourceFileName, Integer lineNumber) { - this.sourceClassName = sourceClassName - this.sourceFileName = sourceFileName - this.lineNumber = lineNumber - } - - Throwable transform(Throwable throwable, Integer offset) throws Exception { - def errorLine = 0 - - if (throwable instanceof CompileException) { - errorLine = throwable.lineNo - } else { - def frame = throwable.getStackTrace().find { it.fileName == sourceClassName } - if (frame) { - errorLine = frame.lineNumber - } else { - frame = throwable.getStackTrace().find { it.fileName == "Example.java" } - if (frame) { - errorLine = frame.lineNumber - } - } - } - errorLine = errorLine - offset - StackTraceElement[] stack = throwable.getStackTrace() - List newStack = new ArrayList(stack.length + 1) - newStack.add(new StackTraceElement(sourceClassName, "javadoc", sourceFileName, lineNumber + errorLine)) - newStack.addAll(stack) - throwable.setStackTrace(newStack as StackTraceElement[]) - throwable - } -} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/executer/SnippetExecuter.java b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/executer/SnippetExecuter.java deleted file mode 100644 index a78fc8ab8..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/executer/SnippetExecuter.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.executer; - -import com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.TestCodeSnippet; -import com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.fixture.SnippetFixture; - -import java.io.File; - -public interface SnippetExecuter { - - SnippetFixture getFixture(); - - void execute(File tempDir, TestCodeSnippet snippet) throws Exception; - -} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/fixture/GroovyScriptFixture.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/fixture/GroovyScriptFixture.groovy deleted file mode 100644 index 04fdccd67..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/fixture/GroovyScriptFixture.groovy +++ /dev/null @@ -1,10 +0,0 @@ -package com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.fixture - -class GroovyScriptFixture extends SnippetFixture { - - @Override - String post() { - "\n;0;" - } - -} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/fixture/SnippetFixture.java b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/fixture/SnippetFixture.java deleted file mode 100644 index cf29db97c..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/docs/internal/snippets/fixture/SnippetFixture.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.github.jengelman.gradle.plugins.shadow.docs.internal.snippets.fixture; - -import com.github.jengelman.gradle.plugins.shadow.docs.internal.Block; - -public class SnippetFixture { - - public void around(Block action) throws Exception { - action.execute(); - } - - public String transform(String text) { - return text; - } - - public String pre() { - return ""; - } - - public String post() { - return ""; - } - - public Integer getOffset() { - return pre().split("\n").length; - } - -}