Added logger to dsl.

This commit is contained in:
Jesse Brault 2023-02-16 11:04:18 +01:00
parent d252d504db
commit 64f342a919
7 changed files with 85 additions and 2 deletions

View File

@ -38,10 +38,10 @@ dependencies {
* Mockito * Mockito
*/ */
// https://mvnrepository.com/artifact/org.mockito/mockito-core // https://mvnrepository.com/artifact/org.mockito/mockito-core
testFixturesApi 'org.mockito:mockito-core:4.11.0' testFixturesApi 'org.mockito:mockito-core:5.1.1'
// https://mvnrepository.com/artifact/org.mockito/mockito-junit-jupiter // https://mvnrepository.com/artifact/org.mockito/mockito-junit-jupiter
testFixturesApi 'org.mockito:mockito-junit-jupiter:4.11.0' testFixturesApi 'org.mockito:mockito-junit-jupiter:5.1.1'
/** /**
* Test Logging * Test Logging

View File

@ -9,6 +9,7 @@ import groovy.text.GStringTemplateEngine
import groovy.text.TemplateEngine import groovy.text.TemplateEngine
import groovy.transform.EqualsAndHashCode import groovy.transform.EqualsAndHashCode
import org.jetbrains.annotations.Nullable import org.jetbrains.annotations.Nullable
import org.slf4j.LoggerFactory
@EqualsAndHashCode @EqualsAndHashCode
class GspPartRenderer implements PartRenderer { class GspPartRenderer implements PartRenderer {
@ -38,6 +39,7 @@ class GspPartRenderer implements PartRenderer {
def result = engine.createTemplate(part.text).make([ def result = engine.createTemplate(part.text).make([
binding: binding, binding: binding,
globals: globals, globals: globals,
logger: LoggerFactory.getLogger("Part(${ part.path })"),
parts: new EmbeddablePartsMap( parts: new EmbeddablePartsMap(
allParts, allParts,
siteSpec, siteSpec,

View File

@ -12,6 +12,7 @@ import groovy.text.GStringTemplateEngine
import groovy.text.TemplateEngine import groovy.text.TemplateEngine
import groovy.transform.EqualsAndHashCode import groovy.transform.EqualsAndHashCode
import groovy.transform.NullCheck import groovy.transform.NullCheck
import org.slf4j.LoggerFactory
@NullCheck @NullCheck
@EqualsAndHashCode @EqualsAndHashCode
@ -32,6 +33,7 @@ class GspSpecialPageRenderer implements SpecialPageRenderer {
Collection<Diagnostic> diagnostics = [] Collection<Diagnostic> diagnostics = []
def result = engine.createTemplate(specialPage.text).make([ def result = engine.createTemplate(specialPage.text).make([
globals: globals, globals: globals,
logger: LoggerFactory.getLogger("SpecialPage(${ specialPage.path })"),
parts: new EmbeddablePartsMap( parts: new EmbeddablePartsMap(
parts, parts,
siteSpec, siteSpec,

View File

@ -13,6 +13,7 @@ import groovy.text.GStringTemplateEngine
import groovy.text.TemplateEngine import groovy.text.TemplateEngine
import groovy.transform.EqualsAndHashCode import groovy.transform.EqualsAndHashCode
import groovy.transform.NullCheck import groovy.transform.NullCheck
import org.slf4j.LoggerFactory
@NullCheck @NullCheck
@EqualsAndHashCode @EqualsAndHashCode
@ -40,6 +41,7 @@ class GspTemplateRenderer implements TemplateRenderer {
def result = engine.createTemplate(template.text).make([ def result = engine.createTemplate(template.text).make([
frontMatter: frontMatter, frontMatter: frontMatter,
globals: globals, globals: globals,
logger: LoggerFactory.getLogger("Template(${ template.path })"),
parts: new EmbeddablePartsMap(parts, siteSpec, globals, onDiagnostics, embeddableText, text.path, targetPath), parts: new EmbeddablePartsMap(parts, siteSpec, globals, onDiagnostics, embeddableText, text.path, targetPath),
path: text.path, path: text.path,
siteSpec: siteSpec, siteSpec: siteSpec,

View File

@ -3,13 +3,23 @@ package com.jessebrault.ssg.part
import com.jessebrault.ssg.SiteSpec import com.jessebrault.ssg.SiteSpec
import com.jessebrault.ssg.text.EmbeddableText import com.jessebrault.ssg.text.EmbeddableText
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.mockito.Mock
import org.mockito.MockedStatic
import org.mockito.junit.jupiter.MockitoExtension
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import static com.jessebrault.ssg.testutil.DiagnosticsUtil.assertEmptyDiagnostics import static com.jessebrault.ssg.testutil.DiagnosticsUtil.assertEmptyDiagnostics
import static com.jessebrault.ssg.testutil.DiagnosticsUtil.getDiagnosticsMessageSupplier import static com.jessebrault.ssg.testutil.DiagnosticsUtil.getDiagnosticsMessageSupplier
import static com.jessebrault.ssg.text.TextMocks.renderableText import static com.jessebrault.ssg.text.TextMocks.renderableText
import static org.junit.jupiter.api.Assertions.assertEquals import static org.junit.jupiter.api.Assertions.assertEquals
import static org.junit.jupiter.api.Assertions.assertTrue import static org.junit.jupiter.api.Assertions.assertTrue
import static org.mockito.ArgumentMatchers.anyString
import static org.mockito.Mockito.mockStatic
import static org.mockito.Mockito.verify
@ExtendWith(MockitoExtension)
class GspPartRendererTests { class GspPartRendererTests {
private final PartRenderer renderer = new GspPartRenderer() private final PartRenderer renderer = new GspPartRenderer()
@ -188,4 +198,25 @@ class GspPartRendererTests {
assertEquals('https://test.com', r.v2) assertEquals('https://test.com', r.v2)
} }
@Test
void loggerAvailable(@Mock Logger logger) {
try (MockedStatic<LoggerFactory> loggerFactory = mockStatic(LoggerFactory)) {
loggerFactory.when { LoggerFactory.getLogger(anyString()) }
.thenReturn(logger)
def part = new Part('', null, '<% logger.info "Hello, World!" %>')
def r = this.renderer.render(
part,
[:],
new SiteSpec('', ''),
[:],
null,
[part],
'',
''
)
assertEmptyDiagnostics(r)
verify(logger).info('Hello, World!')
}
}
} }

View File

@ -8,12 +8,18 @@ import com.jessebrault.ssg.text.*
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
import org.mockito.MockedStatic
import org.mockito.junit.jupiter.MockitoExtension import org.mockito.junit.jupiter.MockitoExtension
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import static com.jessebrault.ssg.testutil.DiagnosticsUtil.assertEmptyDiagnostics import static com.jessebrault.ssg.testutil.DiagnosticsUtil.assertEmptyDiagnostics
import static org.junit.jupiter.api.Assertions.assertEquals import static org.junit.jupiter.api.Assertions.assertEquals
import static org.mockito.ArgumentMatchers.any import static org.mockito.ArgumentMatchers.any
import static org.mockito.ArgumentMatchers.anyString
import static org.mockito.ArgumentMatchers.argThat import static org.mockito.ArgumentMatchers.argThat
import static org.mockito.Mockito.mockStatic
import static org.mockito.Mockito.verify
import static org.mockito.Mockito.when import static org.mockito.Mockito.when
@ExtendWith(MockitoExtension) @ExtendWith(MockitoExtension)
@ -219,4 +225,18 @@ class GspSpecialPageRendererTests {
assertEquals('https://test.com', r.v2) assertEquals('https://test.com', r.v2)
} }
@Test
void loggerAvailable(@Mock Logger logger) {
try (MockedStatic<LoggerFactory> loggerFactory = mockStatic(LoggerFactory)) {
loggerFactory.when { LoggerFactory.getLogger(anyString()) }
.thenReturn(logger)
def specialPage = new SpecialPage('<% logger.info "Hello, World!" %>', '', null)
def r = this.renderer.render(
specialPage, [], [], new SiteSpec('', ''), [:], ''
)
assertEmptyDiagnostics(r)
verify(logger).info('Hello, World!')
}
}
} }

View File

@ -8,7 +8,10 @@ import com.jessebrault.ssg.text.FrontMatter
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
import org.mockito.MockedStatic
import org.mockito.junit.jupiter.MockitoExtension import org.mockito.junit.jupiter.MockitoExtension
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import static com.jessebrault.ssg.testutil.DiagnosticsUtil.assertEmptyDiagnostics import static com.jessebrault.ssg.testutil.DiagnosticsUtil.assertEmptyDiagnostics
import static com.jessebrault.ssg.testutil.DiagnosticsUtil.getDiagnosticsMessageSupplier import static com.jessebrault.ssg.testutil.DiagnosticsUtil.getDiagnosticsMessageSupplier
@ -16,7 +19,10 @@ import static com.jessebrault.ssg.text.TextMocks.*
import static org.junit.jupiter.api.Assertions.assertEquals import static org.junit.jupiter.api.Assertions.assertEquals
import static org.junit.jupiter.api.Assertions.assertTrue import static org.junit.jupiter.api.Assertions.assertTrue
import static org.mockito.ArgumentMatchers.any import static org.mockito.ArgumentMatchers.any
import static org.mockito.ArgumentMatchers.anyString
import static org.mockito.ArgumentMatchers.argThat import static org.mockito.ArgumentMatchers.argThat
import static org.mockito.Mockito.mockStatic
import static org.mockito.Mockito.verify
import static org.mockito.Mockito.when import static org.mockito.Mockito.when
@ExtendWith(MockitoExtension) @ExtendWith(MockitoExtension)
@ -245,4 +251,24 @@ class GspTemplateRendererTests {
assertEquals('https://test.com', r.v2) assertEquals('https://test.com', r.v2)
} }
@Test
void loggerAvailable(@Mock Logger logger) {
try (MockedStatic<LoggerFactory> loggerFactory = mockStatic(LoggerFactory)) {
loggerFactory.when(() -> LoggerFactory.getLogger(anyString()))
.thenReturn(logger)
def template = new Template('<% logger.info "Hello, World!" %>', null, null)
def r = this.renderer.render(
template,
new FrontMatter(null, [:]),
blankText(),
[],
new SiteSpec('', ''),
[:],
''
)
assertEmptyDiagnostics(r)
verify(logger).info('Hello, World!')
}
}
} }