Fixing more task-related bugs.

This commit is contained in:
JesseBrault0709 2023-02-21 19:08:09 +01:00
parent ee98482e7e
commit 6cd1a68644
5 changed files with 29 additions and 14 deletions

View File

@ -2,6 +2,7 @@ package com.jessebrault.ssg.dsl
import com.jessebrault.ssg.part.EmbeddablePartsMap import com.jessebrault.ssg.part.EmbeddablePartsMap
import com.jessebrault.ssg.renderer.RenderContext import com.jessebrault.ssg.renderer.RenderContext
import com.jessebrault.ssg.tagbuilder.DynamicTagBuilder
import com.jessebrault.ssg.text.EmbeddableText import com.jessebrault.ssg.text.EmbeddableText
import com.jessebrault.ssg.text.EmbeddableTextsCollection import com.jessebrault.ssg.text.EmbeddableTextsCollection
import com.jessebrault.ssg.text.Text import com.jessebrault.ssg.text.Text
@ -57,8 +58,10 @@ final class StandardDslMap {
) )
it.siteSpec = context.siteSpec it.siteSpec = context.siteSpec
it.sourcePath = context.sourcePath it.sourcePath = context.sourcePath
it.tagBuilder = new DynamicTagBuilder()
it.targetPath = context.targetPath it.targetPath = context.targetPath
it.tasks = context.tasks it.tasks = context.tasks
it.taskTypes = context.taskTypes
it.text = b.text ? new EmbeddableText( it.text = b.text ? new EmbeddableText(
b.text, b.text,
context.globals, context.globals,

View File

@ -1,6 +1,7 @@
package com.jessebrault.ssg.task package com.jessebrault.ssg.task
interface Task { interface Task {
TaskType<? extends Task> getType()
String getName() String getName()
void execute(TaskExecutorContext context) void execute(TaskExecutorContext context)
} }

View File

@ -14,10 +14,10 @@ class TaskCollection<T extends Task> {
} }
def <U extends T> TaskCollection<U> findAllByType( def <U extends T> TaskCollection<U> findAllByType(
Class<U> taskClass TaskType<U> taskType
) { ) {
new TaskCollection<>(this.tasks.findResults { new TaskCollection<>(this.tasks.findResults {
taskClass.isAssignableFrom(it.class) ? taskClass.cast(it) : null it.type == taskType ? it : null
}) })
} }

View File

@ -76,9 +76,9 @@ class SimpleStaticSiteGeneratorIntegrationTests {
def tasks = result.get() def tasks = result.get()
assertTrue(tasks.size() == 1) assertTrue(tasks.size() == 1)
def t0 = tasks.findAllByType(TextToHtmlFileTask)[0] def t0 = tasks.findAllByType(TextToHtmlFileTask.TYPE)[0]
assertEquals('test.html', t0.output.htmlPath) assertEquals('test.html', t0.output.htmlPath)
def contentResult = t0.output.getContent(tasks, new TaskTypeContainer([TextToHtmlFileTask])) { Collection<Diagnostic> diagnostics -> def contentResult = t0.output.getContent(tasks, new TaskTypeContainer([TextToHtmlFileTask.TYPE])) { Collection<Diagnostic> diagnostics ->
fail(getDiagnosticsMessageSupplier(diagnostics)) fail(getDiagnosticsMessageSupplier(diagnostics))
} }
assertEquals('<p><strong>Hello, World!</strong></p>\n', contentResult) assertEquals('<p><strong>Hello, World!</strong></p>\n', contentResult)
@ -100,11 +100,11 @@ class SimpleStaticSiteGeneratorIntegrationTests {
def tasks = result.get() def tasks = result.get()
assertTrue(tasks.size() == 1) assertTrue(tasks.size() == 1)
def t0 = tasks.findAllByType(TextToHtmlFileTask)[0] def t0 = tasks.findAllByType(TextToHtmlFileTask.TYPE)[0]
assertEquals('nested/nested.html', t0.output.htmlPath) assertEquals('nested/nested.html', t0.output.htmlPath)
def contentResult = t0.output.getContent( def contentResult = t0.output.getContent(
tasks, tasks,
new TaskTypeContainer([TextToHtmlFileTask]) new TaskTypeContainer([TextToHtmlFileTask.TYPE])
) { Collection<Diagnostic> diagnostics -> ) { Collection<Diagnostic> diagnostics ->
fail(getDiagnosticsMessageSupplier(diagnostics)) fail(getDiagnosticsMessageSupplier(diagnostics))
} }
@ -124,9 +124,9 @@ class SimpleStaticSiteGeneratorIntegrationTests {
def tasks = result.get() def tasks = result.get()
assertEquals(2, tasks.size()) assertEquals(2, tasks.size())
def taskTypes = new TaskTypeContainer([TextToHtmlFileTask, SpecialPageToHtmlFileTask]) def taskTypes = new TaskTypeContainer([TextToHtmlFileTask.TYPE, SpecialPageToHtmlFileTask.TYPE])
def testPageTask = tasks.findAllByType(TextToHtmlFileTask).find { def testPageTask = tasks.findAllByType(TextToHtmlFileTask.TYPE).find {
it.output.htmlPath == 'test.html' it.output.htmlPath == 'test.html'
} }
assertNotNull(testPageTask) assertNotNull(testPageTask)
@ -135,7 +135,7 @@ class SimpleStaticSiteGeneratorIntegrationTests {
} }
assertEquals('2', testPageContent) assertEquals('2', testPageContent)
def specialPageTask = tasks.findAllByType(SpecialPageToHtmlFileTask).find { def specialPageTask = tasks.findAllByType(SpecialPageToHtmlFileTask.TYPE).find {
it.output.htmlPath == 'special.html' it.output.htmlPath == 'special.html'
} }
assertNotNull(specialPageTask) assertNotNull(specialPageTask)

View File

@ -9,11 +9,14 @@ import com.jessebrault.ssg.part.PartType
import com.jessebrault.ssg.renderer.RenderContext import com.jessebrault.ssg.renderer.RenderContext
import com.jessebrault.ssg.tagbuilder.TagBuilder import com.jessebrault.ssg.tagbuilder.TagBuilder
import com.jessebrault.ssg.task.HtmlFileOutput import com.jessebrault.ssg.task.HtmlFileOutput
import com.jessebrault.ssg.task.SpecialPageToHtmlFileTask
import com.jessebrault.ssg.task.TaskContainer import com.jessebrault.ssg.task.TaskContainer
import com.jessebrault.ssg.task.TaskTypeContainer import com.jessebrault.ssg.task.TaskTypeContainer
import com.jessebrault.ssg.task.TextToHtmlFileTask import com.jessebrault.ssg.task.TextToHtmlFileTask
import com.jessebrault.ssg.task.TextToHtmlFileTaskFactory
import com.jessebrault.ssg.text.EmbeddableTextsCollection import com.jessebrault.ssg.text.EmbeddableTextsCollection
import com.jessebrault.ssg.url.UrlBuilder import com.jessebrault.ssg.url.UrlBuilder
import net.bytebuddy.implementation.bytecode.Throw
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith import org.junit.jupiter.api.extension.ExtendWith
import org.mockito.Mock import org.mockito.Mock
@ -49,11 +52,13 @@ interface StandardDslConsumerTests {
} }
default void doDslAssertionTest(String scriptlet, RenderContext context = null) { default void doDslAssertionTest(String scriptlet, RenderContext context = null) {
Tuple2<Collection<Diagnostic>, String> result = null
try { try {
this.render(scriptlet, context ?: getRenderContext()) result = this.render(scriptlet, context ?: getRenderContext())
} catch (AssertionError e) { } catch (Throwable e) {
fail(e) fail(e)
} }
assertEmptyDiagnostics(result)
} }
@Test @Test
@ -133,7 +138,7 @@ interface StandardDslConsumerTests {
@Test @Test
default void tagBuilderAvailable() { default void tagBuilderAvailable() {
this.doDslAssertionTest("<% assert tagBuider && tagBuilder instanceof ${ TagBuilder.name } %>") this.doDslAssertionTest("<% assert tagBuilder && tagBuilder instanceof ${ TagBuilder.name } %>")
} }
@Test @Test
@ -172,7 +177,10 @@ interface StandardDslConsumerTests {
this.doDslRenderTest( this.doDslRenderTest(
'test.html', 'test.html',
'<%= tasks.find { it.name == "testTask" }.output.htmlPath %>', '<%= tasks.find { it.name == "testTask" }.output.htmlPath %>',
getRenderContext(tasks: new TaskContainer([task])) getRenderContext(
tasks: new TaskContainer([task]),
taskTypes: new TaskTypeContainer([TextToHtmlFileTask.TYPE])
)
) )
} }
@ -191,7 +199,10 @@ interface StandardDslConsumerTests {
'<% assert tasks.size() == 2 && ' + '<% assert tasks.size() == 2 && ' +
'tasks.findAllByType(taskTypes.textToHtmlFile).size() == 1 &&' + 'tasks.findAllByType(taskTypes.textToHtmlFile).size() == 1 &&' +
'tasks.findAllByType(taskTypes.specialPageToHtmlFile).size() == 1 %>', 'tasks.findAllByType(taskTypes.specialPageToHtmlFile).size() == 1 %>',
getRenderContext(tasks: new TaskContainer([t0, t1])) getRenderContext(
tasks: new TaskContainer([t0, t1]),
taskTypes: new TaskTypeContainer([TextToHtmlFileTask.TYPE, SpecialPageToHtmlFileTask.TYPE])
)
) )
} }