Skip to content

Commit cd2efd3

Browse files
committed
Improve LicenseHeader default regex for Java
1 parent 6789a1d commit cd2efd3

File tree

9 files changed

+44
-7
lines changed

9 files changed

+44
-7
lines changed

lib/src/main/java/com/diffplug/spotless/generic/LicenseHeaderStep.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545

4646
/** Prefixes a license header before the package statement. */
4747
public final class LicenseHeaderStep {
48+
public static final String DEFAULT_JAVA_HEADER_DELIMITER = "(package|import|public|class|module) ";
4849
private static final Logger LOGGER = LoggerFactory.getLogger(LicenseHeaderStep.class);
4950

5051
public enum YearMode {

plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,7 @@ public JavaExtension(SpotlessExtension spotless) {
5050
super(spotless);
5151
}
5252

53-
// If this constant changes, don't forget to change the similarly-named one in
54-
// testlib/src/test/java/com/diffplug/spotless/generic/LicenseHeaderStepTest.java as well
55-
static final String LICENSE_HEADER_DELIMITER = "package ";
53+
static final String LICENSE_HEADER_DELIMITER = LicenseHeaderStep.DEFAULT_JAVA_HEADER_DELIMITER;
5654

5755
@Override
5856
public LicenseHeaderConfig licenseHeader(String licenseHeader) {

plugin-maven/src/main/java/com/diffplug/spotless/maven/groovy/Groovy.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.apache.maven.project.MavenProject;
2121

2222
import com.diffplug.common.collect.ImmutableSet;
23+
import com.diffplug.spotless.generic.LicenseHeaderStep;
2324
import com.diffplug.spotless.maven.FormatterFactory;
2425
import com.diffplug.spotless.maven.generic.LicenseHeader;
2526

@@ -32,7 +33,7 @@
3233
public class Groovy extends FormatterFactory {
3334

3435
private static final Set<String> DEFAULT_INCLUDES = ImmutableSet.of("src/main/groovy/**/*.groovy", "src/test/groovy/**/*.groovy");
35-
private static final String LICENSE_HEADER_DELIMITER = "package ";
36+
private static final String LICENSE_HEADER_DELIMITER = LicenseHeaderStep.DEFAULT_JAVA_HEADER_DELIMITER;
3637

3738
@Override
3839
public Set<String> defaultIncludes(MavenProject project) {

plugin-maven/src/main/java/com/diffplug/spotless/maven/java/Java.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.apache.maven.model.Build;
2727
import org.apache.maven.project.MavenProject;
2828

29+
import com.diffplug.spotless.generic.LicenseHeaderStep;
2930
import com.diffplug.spotless.maven.FormatterFactory;
3031
import com.diffplug.spotless.maven.generic.LicenseHeader;
3132

@@ -37,7 +38,7 @@
3738
*/
3839
public class Java extends FormatterFactory {
3940

40-
private static final String LICENSE_HEADER_DELIMITER = "package ";
41+
private static final String LICENSE_HEADER_DELIMITER = LicenseHeaderStep.DEFAULT_JAVA_HEADER_DELIMITER;
4142

4243
@Override
4344
public Set<String> defaultIncludes(MavenProject project) {

plugin-maven/src/main/java/com/diffplug/spotless/maven/scala/Scala.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.apache.maven.project.MavenProject;
2121

2222
import com.diffplug.common.collect.ImmutableSet;
23+
import com.diffplug.spotless.generic.LicenseHeaderStep;
2324
import com.diffplug.spotless.maven.FormatterFactory;
2425
import com.diffplug.spotless.maven.generic.LicenseHeader;
2526

@@ -33,7 +34,7 @@ public class Scala extends FormatterFactory {
3334

3435
private static final Set<String> DEFAULT_INCLUDES = ImmutableSet.of("src/main/scala/**/*.scala",
3536
"src/test/scala/**/*.scala", "src/main/scala/**/*.sc", "src/test/scala/**/*.sc");
36-
private static final String LICENSE_HEADER_DELIMITER = "package ";
37+
private static final String LICENSE_HEADER_DELIMITER = LicenseHeaderStep.DEFAULT_JAVA_HEADER_DELIMITER;
3738

3839
@Override
3940
public Set<String> defaultIncludes(MavenProject project) {
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
public class HelloWorld {
2+
public static void main(String[] args) {
3+
System.out.print("Hello World");
4+
}
5+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import java.time.LocalDate;
2+
3+
public class HelloWorld {
4+
public static void main(String[] args) {
5+
System.out.print("Hello World. Date: " + LocalDate.now());
6+
}
7+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module java.sql {
2+
exports java.sql;
3+
exports javax.sql;
4+
exports javax.transaction.xa;
5+
}

testlib/src/test/java/com/diffplug/spotless/generic/LicenseHeaderStepTest.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
class LicenseHeaderStepTest extends ResourceHarness {
3434
private static final String FILE_NO_LICENSE = "license/FileWithoutLicenseHeader.test";
35-
private static final String package_ = "package ";
35+
private static final String package_ = LicenseHeaderStep.DEFAULT_JAVA_HEADER_DELIMITER;
3636
private static final String HEADER_WITH_$YEAR = "This is a fake license, $YEAR. ACME corp.";
3737
private static final String HEADER_WITH_RANGE_TO_$YEAR = "This is a fake license with range, 2009-$YEAR. ACME corp.";
3838

@@ -250,4 +250,22 @@ void should_preserve_year_for_license_with_address() throws Throwable {
250250
hasHeader(licenceWithAddress().replace("$YEAR", "2015").replace("FooBar Inc. All", "FooBar Inc. All")),
251251
hasHeader(licenceWithAddress().replace("$YEAR", "2015")));
252252
}
253+
254+
@Test
255+
void noPackage() throws Throwable {
256+
String header = header(getTestResource("license/TestLicense"));
257+
FormatterStep step = LicenseHeaderStep.headerDelimiter(header, package_).build();
258+
StepHarness.forStep(step)
259+
.test(ResourceHarness.getTestResource("license/HelloWorld_java.test"), header + ResourceHarness.getTestResource("license/HelloWorld_java.test"))
260+
.test(ResourceHarness.getTestResource("license/HelloWorld_withImport_java.test"), header + ResourceHarness.getTestResource("license/HelloWorld_withImport_java.test"));
261+
}
262+
263+
// The following demonstrate the use of 'module' keyword
264+
@Test
265+
void moduleInfo() throws Throwable {
266+
String header = header(getTestResource("license/TestLicense"));
267+
FormatterStep step = LicenseHeaderStep.headerDelimiter(header, package_).build();
268+
StepHarness.forStep(step)
269+
.test(ResourceHarness.getTestResource("license/module-info.test"), header + ResourceHarness.getTestResource("license/module-info.test"));
270+
}
253271
}

0 commit comments

Comments
 (0)