Fixing more task-related bugs.
This commit is contained in:
parent
ee98482e7e
commit
6cd1a68644
@ -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,
|
||||||
|
@ -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)
|
||||||
}
|
}
|
@ -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
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
@ -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])
|
||||||
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user