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.renderer.RenderContext
import com.jessebrault.ssg.tagbuilder.DynamicTagBuilder
import com.jessebrault.ssg.text.EmbeddableText
import com.jessebrault.ssg.text.EmbeddableTextsCollection
import com.jessebrault.ssg.text.Text
@ -57,8 +58,10 @@ final class StandardDslMap {
)
it.siteSpec = context.siteSpec
it.sourcePath = context.sourcePath
it.tagBuilder = new DynamicTagBuilder()
it.targetPath = context.targetPath
it.tasks = context.tasks
it.taskTypes = context.taskTypes
it.text = b.text ? new EmbeddableText(
b.text,
context.globals,

View File

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

View File

@ -14,10 +14,10 @@ class TaskCollection<T extends Task> {
}
def <U extends T> TaskCollection<U> findAllByType(
Class<U> taskClass
TaskType<U> taskType
) {
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()
assertTrue(tasks.size() == 1)
def t0 = tasks.findAllByType(TextToHtmlFileTask)[0]
def t0 = tasks.findAllByType(TextToHtmlFileTask.TYPE)[0]
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))
}
assertEquals('<p><strong>Hello, World!</strong></p>\n', contentResult)
@ -100,11 +100,11 @@ class SimpleStaticSiteGeneratorIntegrationTests {
def tasks = result.get()
assertTrue(tasks.size() == 1)
def t0 = tasks.findAllByType(TextToHtmlFileTask)[0]
def t0 = tasks.findAllByType(TextToHtmlFileTask.TYPE)[0]
assertEquals('nested/nested.html', t0.output.htmlPath)
def contentResult = t0.output.getContent(
tasks,
new TaskTypeContainer([TextToHtmlFileTask])
new TaskTypeContainer([TextToHtmlFileTask.TYPE])
) { Collection<Diagnostic> diagnostics ->
fail(getDiagnosticsMessageSupplier(diagnostics))
}
@ -124,9 +124,9 @@ class SimpleStaticSiteGeneratorIntegrationTests {
def tasks = result.get()
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'
}
assertNotNull(testPageTask)
@ -135,7 +135,7 @@ class SimpleStaticSiteGeneratorIntegrationTests {
}
assertEquals('2', testPageContent)
def specialPageTask = tasks.findAllByType(SpecialPageToHtmlFileTask).find {
def specialPageTask = tasks.findAllByType(SpecialPageToHtmlFileTask.TYPE).find {
it.output.htmlPath == 'special.html'
}
assertNotNull(specialPageTask)

View File

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