Skip to content

Commit

Permalink
Add semver extension
Browse files Browse the repository at this point in the history
  • Loading branch information
charphi committed Aug 28, 2024
1 parent 5525e3d commit d8ef680
Show file tree
Hide file tree
Showing 31 changed files with 494 additions and 76 deletions.
32 changes: 21 additions & 11 deletions heylogs-api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -65,17 +65,6 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.semver4j</groupId>
<artifactId>semver4j</artifactId>
<version>5.3.0</version>
<exclusions>
<exclusion>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.nbbrd.java-io-util</groupId>
<artifactId>java-io-base</artifactId>
Expand All @@ -102,4 +91,25 @@
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
<configuration>
<includes>
<include>tests/**</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
import java.util.List;
import java.util.Map;

import static _test.Sample.asHeading;
import static _test.Sample.using;
import static tests.heylogs.api.Sample.asHeading;
import static tests.heylogs.api.Sample.using;
import static internal.heylogs.ChangelogNodes.*;
import static org.assertj.core.api.Assertions.assertThat;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package internal.heylogs;

import _test.Sample;
import tests.heylogs.api.Sample;
import com.vladsch.flexmark.ast.LinkNodeBase;
import com.vladsch.flexmark.util.ast.Node;
import nbbrd.heylogs.Nodes;
Expand All @@ -12,7 +12,7 @@

import java.util.Objects;

import static _test.Sample.using;
import static tests.heylogs.api.Sample.using;
import static internal.heylogs.ExtendedRules.NO_RULE_ISSUE;
import static internal.heylogs.ExtendedRules.validateConsistentSeparator;
import static nbbrd.heylogs.Nodes.of;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

import java.util.Objects;

import static _test.Sample.using;
import static tests.heylogs.api.Sample.using;
import static internal.heylogs.GuidingPrinciples.validateForHumans;
import static internal.heylogs.GuidingPrinciples.validateLatestVersionFirst;
import static nbbrd.heylogs.Nodes.of;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import nbbrd.heylogs.spi.FormatLoader;
import org.junit.jupiter.api.Test;

import static _test.Sample.*;
import static tests.heylogs.api.Sample.*;
import static java.util.Arrays.asList;
import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import nbbrd.heylogs.spi.FormatType;
import org.junit.jupiter.api.Test;

import static _test.Sample.*;
import static tests.heylogs.api.Sample.*;
import static java.util.Arrays.asList;
import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package internal.heylogs.github;

import _test.Sample;
import tests.heylogs.api.Sample;
import com.vladsch.flexmark.ast.Link;
import com.vladsch.flexmark.util.ast.Node;
import nbbrd.heylogs.Nodes;
Expand All @@ -11,7 +11,7 @@

import java.util.Objects;

import static _test.Sample.using;
import static tests.heylogs.api.Sample.using;
import static internal.heylogs.github.GitHubRules.*;
import static java.util.stream.Collectors.toList;
import static nbbrd.heylogs.Nodes.of;
Expand Down
28 changes: 0 additions & 28 deletions heylogs-api/src/test/java/internal/heylogs/semver/SemVerTest.java

This file was deleted.

6 changes: 3 additions & 3 deletions heylogs-api/src/test/java/nbbrd/heylogs/ChangelogTest.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package nbbrd.heylogs;

import _test.Sample;
import tests.heylogs.api.Sample;
import com.vladsch.flexmark.ast.Heading;
import org.junit.jupiter.api.Test;

import static _test.Sample.using;
import static tests.heylogs.api.Sample.using;
import static nbbrd.heylogs.Changelog.parse;
import static _test.Sample.asHeading;
import static tests.heylogs.api.Sample.asHeading;
import static org.assertj.core.api.Assertions.*;

public class ChangelogTest {
Expand Down
48 changes: 42 additions & 6 deletions heylogs-api/src/test/java/nbbrd/heylogs/HeylogsTest.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,22 @@
package nbbrd.heylogs;

import _test.Sample;
import tests.heylogs.api.Sample;
import com.vladsch.flexmark.util.ast.Document;
import com.vladsch.flexmark.util.ast.Node;
import internal.heylogs.StylishFormat;
import internal.heylogs.semver.SemVerRule;
import lombok.NonNull;
import nbbrd.heylogs.spi.Rule;
import nbbrd.heylogs.spi.RuleIssue;
import nbbrd.heylogs.spi.RuleSeverity;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.junit.jupiter.api.Test;

import java.io.IOException;
import java.time.LocalDate;
import java.util.List;
import java.util.function.Function;

import static _test.Sample.using;
import static tests.heylogs.api.Sample.using;
import static internal.heylogs.URLExtractor.urlOf;
import static java.util.Collections.singletonList;
import static nbbrd.heylogs.Filter.builder;
Expand All @@ -36,11 +39,11 @@ public void testFactories() {
.map(Rule::getRuleId)
.doesNotContain("semver");

assertThat(Heylogs.ofServiceLoader().toBuilder().rule(new SemVerRule()).build())
assertThat(Heylogs.ofServiceLoader().toBuilder().rule(new MockedRule()).build())
.extracting(Heylogs::getRules, list(Rule.class))
.hasSizeGreaterThan(1)
.map(Rule::getRuleId)
.contains("semver");
.contains("mocked");
}

@Test
Expand Down Expand Up @@ -156,7 +159,7 @@ public void testScanContent() {
.valid(true)
.releaseCount(13)
.timeRange(TimeRange.of(LocalDate.of(2014, 5, 31), LocalDate.of(2019, 2, 15)))
.compatibility("Semantic Versioning")
// .compatibility("Semantic Versioning")
.unreleasedChanges(2)
.forgeName("GitHub")
.forgeURL(urlOf("https://github.com/olivierlacan/keep-a-changelog"))
Expand Down Expand Up @@ -250,4 +253,37 @@ private static String releaseChangesToString(Heylogs heylogs, Document doc, Vers
heylogs.releaseChanges(doc, version, "v");
return Sample.FORMATTER.render(doc);
}

private static final class MockedRule implements Rule {

@Override
public @NonNull String getRuleId() {
return "mocked";
}

@Override
public @NonNull String getRuleName() {
return "";
}

@Override
public @NonNull String getRuleCategory() {
return "";
}

@Override
public boolean isRuleAvailable() {
return false;
}

@Override
public @NonNull RuleSeverity getRuleSeverity() {
return RuleSeverity.OFF;
}

@Override
public @Nullable RuleIssue getRuleIssueOrNull(@NonNull Node node) {
return null;
}
}
}
2 changes: 1 addition & 1 deletion heylogs-api/src/test/java/nbbrd/heylogs/NodesTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import internal.heylogs.ChangelogNodes;
import org.junit.jupiter.api.Test;

import static _test.Sample.using;
import static tests.heylogs.api.Sample.using;
import static org.assertj.core.api.Assertions.assertThat;

class NodesTest {
Expand Down
6 changes: 3 additions & 3 deletions heylogs-api/src/test/java/nbbrd/heylogs/TypeOfChangeTest.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package nbbrd.heylogs;

import _test.Sample;
import tests.heylogs.api.Sample;
import com.vladsch.flexmark.ast.Heading;
import org.junit.jupiter.api.Test;

import static _test.Sample.asHeading;
import static _test.Sample.using;
import static tests.heylogs.api.Sample.asHeading;
import static tests.heylogs.api.Sample.using;
import static nbbrd.heylogs.TypeOfChange.parse;
import static org.assertj.core.api.Assertions.*;

Expand Down
6 changes: 3 additions & 3 deletions heylogs-api/src/test/java/nbbrd/heylogs/VersionTest.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package nbbrd.heylogs;

import _test.Sample;
import tests.heylogs.api.Sample;
import com.vladsch.flexmark.ast.Heading;
import org.junit.jupiter.api.Test;

import java.time.LocalDate;

import static _test.Sample.asHeading;
import static _test.Sample.using;
import static tests.heylogs.api.Sample.asHeading;
import static tests.heylogs.api.Sample.using;
import static nbbrd.heylogs.Version.*;
import static org.assertj.core.api.Assertions.*;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package _test;
package tests.heylogs.api;

import com.vladsch.flexmark.ast.Heading;
import com.vladsch.flexmark.formatter.Formatter;
Expand Down
37 changes: 37 additions & 0 deletions heylogs-api/src/test/java/tests/heylogs/spi/RuleAssert.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package tests.heylogs.spi;

import lombok.NonNull;
import nbbrd.heylogs.spi.Rule;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatNullPointerException;

public final class RuleAssert {

private RuleAssert() {
throw new UnsupportedOperationException("This is a utility class and cannot be instantiated");
}

@SuppressWarnings("DataFlowIssue")
public static void assertRuleCompliance(@NonNull Rule x) {
assertThat(x.getRuleId())
.matches(nbbrd.heylogs.spi.RuleLoader.ID_PATTERN);

assertThat(x.getRuleName())
.isNotEmpty()
.isNotNull();

assertThat(x.getRuleCategory())
.isNotEmpty()
.isNotNull();

assertThat(x.getRuleSeverity())
.isNotNull();

assertThatNullPointerException()
.isThrownBy(() -> x.getRuleIssueOrNull(null));

assertThat(x.getClass())
.isFinal();
}
}
30 changes: 30 additions & 0 deletions heylogs-api/src/test/java/tests/heylogs/spi/VersioningAssert.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package tests.heylogs.spi;

import lombok.NonNull;
import nbbrd.heylogs.spi.Versioning;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatNullPointerException;

public final class VersioningAssert {

private VersioningAssert() {
throw new UnsupportedOperationException("This is a utility class and cannot be instantiated");
}

@SuppressWarnings("DataFlowIssue")
public static void assertVersioningCompliance(@NonNull Versioning x) {
assertThat(x.getVersioningId())
.matches(nbbrd.heylogs.spi.VersioningLoader.ID_PATTERN);

assertThat(x.getVersioningName())
.isNotEmpty()
.isNotNull();

assertThatNullPointerException()
.isThrownBy(() -> x.isValidVersion(null));

assertThat(x.getClass())
.isFinal();
}
}
12 changes: 12 additions & 0 deletions heylogs-bom/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,23 @@
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
</dependency>
<dependency>
<artifactId>heylogs-api</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
<classifier>tests</classifier>
<type>test-jar</type>
</dependency>
<dependency>
<artifactId>heylogs-cli</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
</dependency>
<dependency>
<artifactId>heylogs-ext-semver</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
</dependency>
<dependency>
<artifactId>heylogs-maven-plugin</artifactId>
<groupId>${project.groupId}</groupId>
Expand Down
Loading

0 comments on commit d8ef680

Please sign in to comment.