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
*/
// 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
testFixturesApi 'org.mockito:mockito-junit-jupiter:4.11.0'
testFixturesApi 'org.mockito:mockito-junit-jupiter:5.1.1'
/**
* Test Logging

View File

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

View File

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

View File

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

View File

@ -3,13 +3,23 @@ package com.jessebrault.ssg.part
import com.jessebrault.ssg.SiteSpec
import com.jessebrault.ssg.text.EmbeddableText
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.getDiagnosticsMessageSupplier
import static com.jessebrault.ssg.text.TextMocks.renderableText
import static org.junit.jupiter.api.Assertions.assertEquals
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 {
private final PartRenderer renderer = new GspPartRenderer()
@ -188,4 +198,25 @@ class GspPartRendererTests {
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.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 org.junit.jupiter.api.Assertions.assertEquals
import static org.mockito.ArgumentMatchers.any
import static org.mockito.ArgumentMatchers.anyString
import static org.mockito.ArgumentMatchers.argThat
import static org.mockito.Mockito.mockStatic
import static org.mockito.Mockito.verify
import static org.mockito.Mockito.when
@ExtendWith(MockitoExtension)
@ -219,4 +225,18 @@ class GspSpecialPageRendererTests {
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.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.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.assertTrue
import static org.mockito.ArgumentMatchers.any
import static org.mockito.ArgumentMatchers.anyString
import static org.mockito.ArgumentMatchers.argThat
import static org.mockito.Mockito.mockStatic
import static org.mockito.Mockito.verify
import static org.mockito.Mockito.when
@ExtendWith(MockitoExtension)
@ -245,4 +251,24 @@ class GspTemplateRendererTests {
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!')
}
}
}