From 4cff2eb7149113cd7549e9c4db97a189bbd1f3f3 Mon Sep 17 00:00:00 2001 From: rnveach Date: Sat, 28 Jan 2017 13:47:16 -0500 Subject: [PATCH] Issue #3771: fixed in NPE in cache for HeaderCheck --- .../checks/header/AbstractHeaderCheck.java | 11 +++++++++- .../checks/header/HeaderCheckTest.java | 21 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/header/AbstractHeaderCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/header/AbstractHeaderCheck.java index 8f57e76f9..a42dc0d50 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/header/AbstractHeaderCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/header/AbstractHeaderCheck.java @@ -193,6 +193,15 @@ public abstract class AbstractHeaderCheck extends AbstractFileSetCheck @Override public Set getExternalResourceLocations() { - return Collections.singleton(headerFile.toString()); + final Set result; + + if (headerFile == null) { + result = Collections.emptySet(); + } + else { + result = Collections.singleton(headerFile.toString()); + } + + return result; } } diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/header/HeaderCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/header/HeaderCheckTest.java index bbc790635..e6938f43e 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/header/HeaderCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/header/HeaderCheckTest.java @@ -268,4 +268,25 @@ public class HeaderCheckTest extends BaseFileSetCheckTestSupport { verify(checker, getPath("InputHeader.java"), expected); } + + @Test + public void testCacheHeaderWithoutFile() throws Exception { + final DefaultConfiguration checkConfig = createCheckConfig(HeaderCheck.class); + checkConfig.addAttribute("header", "Test"); + + final DefaultConfiguration checkerConfig = new DefaultConfiguration("checkstyle_checks"); + checkerConfig.addChild(checkConfig); + checkerConfig.addAttribute("cacheFile", temporaryFolder.newFile().getPath()); + + final Checker checker = new Checker(); + checker.setModuleClassLoader(Thread.currentThread().getContextClassLoader()); + checker.configure(checkerConfig); + checker.addListener(new BriefUtLogger(stream)); + + final String[] expected = { + "1: " + getCheckMessage(MSG_MISMATCH, "Test"), + }; + + verify(checker, getPath("InputHeader.java"), expected); + } }