Skip to content

Commit

Permalink
[SUREFIRE-2101] Fix 'null' phrased test names with JUnit5 (#549)
Browse files Browse the repository at this point in the history
When phrased test names are enabled, but an annotation such as DisplayName
in JUnit5 is missing from the test, the output to the console will now
fall back to using the original name rather than naming the test
'null'.
  • Loading branch information
ascopes committed Dec 27, 2022
1 parent 7815927 commit 61f03c6
Show file tree
Hide file tree
Showing 5 changed files with 125 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,14 @@ public String getNameWithGroup()
@Override
public String getReportNameWithGroup()
{
return original.getReportNameWithGroup();
String reportNameWithGroup = original.getReportNameWithGroup();

if ( isBlank ( reportNameWithGroup ) )
{
return getNameWithGroup();
}

return reportNameWithGroup;
}

@Nonnull
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,42 @@ public void testGetReportNameWithParams()
assertTrue( wr.isSkipped() );
}

public void testGetReportNameWithGroupWhenSourceTextIsNull()
{
String className = "ClassName";
String classText = null;
ReportEntry reportEntry = new SimpleReportEntry( NORMAL_RUN, 1L, className, classText, null, null );
WrappedReportEntry wr = new WrappedReportEntry( reportEntry, SKIPPED, 12, null, null );
assertEquals( className, wr.getReportNameWithGroup() );
}

public void testGetReportNameWithGroupWhenSourceTextIsEmpty()
{
String className = "ClassName";
String classText = "";
ReportEntry reportEntry = new SimpleReportEntry( NORMAL_RUN, 1L, className, classText, null, null );
WrappedReportEntry wr = new WrappedReportEntry( reportEntry, SKIPPED, 12, null, null );
assertEquals( className, wr.getReportNameWithGroup() );
}

public void testGetReportNameWithGroupWhenSourceTextIsBlank()
{
String className = "ClassName";
String classText = " ";
ReportEntry reportEntry = new SimpleReportEntry( NORMAL_RUN, 1L, className, classText, null, null );
WrappedReportEntry wr = new WrappedReportEntry( reportEntry, SKIPPED, 12, null, null );
assertEquals( className, wr.getReportNameWithGroup() );
}

public void testGetReportNameWithGroupWhenSourceTextIsProvided()
{
String className = "ClassName";
String classText = "The Class Name";
ReportEntry reportEntry = new SimpleReportEntry( NORMAL_RUN, 1L, className, classText, null, null );
WrappedReportEntry wr = new WrappedReportEntry( reportEntry, SKIPPED, 12, null, null );
assertEquals( classText, wr.getReportNameWithGroup() );
}

public void testElapsed()
{
String className = "[0] 1\u002C 2\u002C 3 (testSum)";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
import java.util.Map;
import java.util.Objects;

import static org.apache.maven.surefire.shared.utils.StringUtils.isBlank;

/**
* @author Kristian Rosenvold
*/
Expand Down Expand Up @@ -97,7 +99,14 @@ public String getNameWithGroup()
@Override
public String getReportNameWithGroup()
{
return isNameWithGroup() ? getSourceText() + GROUP_PREFIX + getGroup() + GROUP_SUFIX : getSourceText();
String sourceText = getSourceText();

if ( isBlank ( sourceText ) )
{
return null;
}

return isNameWithGroup() ? sourceText + GROUP_PREFIX + getGroup() + GROUP_SUFIX : sourceText;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,8 @@ public interface ReportEntry
/**
* A source text of the test case together with the group or category (if any exists).
*
* @return A string with the test case text and group/category, or just the source text.
* @return A string with the test case text and group/category, or just the source text. If no
* source text is provided, then this will return null.
*/
String getReportNameWithGroup();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package org.apache.maven.surefire.api.report;

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http:https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

import static org.apache.maven.surefire.api.report.RunMode.NORMAL_RUN;
import static org.junit.Assert.assertEquals;

/**
* @author Ashley Scopes
*/
public class CategorizedReportEntryTest
{
public void testGetReportNameWithGroupWhenSourceTextIsNull()
{
String className = "ClassName";
String classText = null;
String groupName = "The Group Name";
ReportEntry reportEntry = new CategorizedReportEntry(
NORMAL_RUN, 1L, className, classText, groupName, null, null );
assertEquals( "ClassName (of The Group Name)", reportEntry.getReportNameWithGroup() );
}

public void testGetReportNameWithGroupWhenSourceTextIsEmpty()
{
String className = "ClassName";
String classText = "";
String groupName = "The Group Name";
ReportEntry reportEntry = new CategorizedReportEntry(
NORMAL_RUN, 1L, className, classText, groupName, null, null );
assertEquals( "ClassName (of The Group Name)", reportEntry.getReportNameWithGroup() );
}

public void testGetReportNameWithGroupWhenSourceTextIsBlank()
{
String className = "ClassName";
String classText = " ";
String groupName = "The Group Name";
ReportEntry reportEntry = new CategorizedReportEntry(
NORMAL_RUN, 1L, className, classText, groupName, null, null );
assertEquals( "ClassName (of The Group Name)", reportEntry.getReportNameWithGroup() );
}

public void testGetReportNameWithGroupWhenSourceTextIsProvided()
{
String className = "ClassName";
String classText = "The Class Name";
String groupName = "The Group Name";
ReportEntry reportEntry = new CategorizedReportEntry(
NORMAL_RUN, 1L, className, classText, groupName, null, null );
assertEquals( "The Class Name (of The Group Name)", reportEntry.getReportNameWithGroup() );
}
}

0 comments on commit 61f03c6

Please sign in to comment.