From 64f342a919ec8c7744ccd86703bf6435a88eb31d Mon Sep 17 00:00:00 2001 From: Jesse Brault Date: Thu, 16 Feb 2023 11:04:18 +0100 Subject: [PATCH] Added logger to dsl. --- buildSrc/src/main/groovy/ssg.common.gradle | 4 +-- .../ssg/part/GspPartRenderer.groovy | 2 ++ .../specialpage/GspSpecialPageRenderer.groovy | 2 ++ .../ssg/template/GspTemplateRenderer.groovy | 2 ++ .../ssg/part/GspPartRendererTests.groovy | 31 +++++++++++++++++++ .../GspSpecialPageRendererTests.groovy | 20 ++++++++++++ .../template/GspTemplateRendererTests.groovy | 26 ++++++++++++++++ 7 files changed, 85 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/groovy/ssg.common.gradle b/buildSrc/src/main/groovy/ssg.common.gradle index ce03827..5144520 100644 --- a/buildSrc/src/main/groovy/ssg.common.gradle +++ b/buildSrc/src/main/groovy/ssg.common.gradle @@ -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 diff --git a/lib/src/main/groovy/com/jessebrault/ssg/part/GspPartRenderer.groovy b/lib/src/main/groovy/com/jessebrault/ssg/part/GspPartRenderer.groovy index a7f5e52..79e1661 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/part/GspPartRenderer.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/part/GspPartRenderer.groovy @@ -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, diff --git a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/GspSpecialPageRenderer.groovy b/lib/src/main/groovy/com/jessebrault/ssg/specialpage/GspSpecialPageRenderer.groovy index 3060bb3..b555d5d 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/GspSpecialPageRenderer.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/specialpage/GspSpecialPageRenderer.groovy @@ -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 diagnostics = [] def result = engine.createTemplate(specialPage.text).make([ globals: globals, + logger: LoggerFactory.getLogger("SpecialPage(${ specialPage.path })"), parts: new EmbeddablePartsMap( parts, siteSpec, diff --git a/lib/src/main/groovy/com/jessebrault/ssg/template/GspTemplateRenderer.groovy b/lib/src/main/groovy/com/jessebrault/ssg/template/GspTemplateRenderer.groovy index bf0ffae..9f4f61f 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/template/GspTemplateRenderer.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/template/GspTemplateRenderer.groovy @@ -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, diff --git a/lib/src/test/groovy/com/jessebrault/ssg/part/GspPartRendererTests.groovy b/lib/src/test/groovy/com/jessebrault/ssg/part/GspPartRendererTests.groovy index 6b346d9..068a4e8 100644 --- a/lib/src/test/groovy/com/jessebrault/ssg/part/GspPartRendererTests.groovy +++ b/lib/src/test/groovy/com/jessebrault/ssg/part/GspPartRendererTests.groovy @@ -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 = 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!') + } + } + } diff --git a/lib/src/test/groovy/com/jessebrault/ssg/specialpage/GspSpecialPageRendererTests.groovy b/lib/src/test/groovy/com/jessebrault/ssg/specialpage/GspSpecialPageRendererTests.groovy index 2b684bd..993c787 100644 --- a/lib/src/test/groovy/com/jessebrault/ssg/specialpage/GspSpecialPageRendererTests.groovy +++ b/lib/src/test/groovy/com/jessebrault/ssg/specialpage/GspSpecialPageRendererTests.groovy @@ -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 = 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!') + } + } + } diff --git a/lib/src/test/groovy/com/jessebrault/ssg/template/GspTemplateRendererTests.groovy b/lib/src/test/groovy/com/jessebrault/ssg/template/GspTemplateRendererTests.groovy index 9433a7d..d24de67 100644 --- a/lib/src/test/groovy/com/jessebrault/ssg/template/GspTemplateRendererTests.groovy +++ b/lib/src/test/groovy/com/jessebrault/ssg/template/GspTemplateRendererTests.groovy @@ -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 = 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!') + } + } + }