Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SUREFIRE-2041] Order test classes according to -Dtest property #495

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

aslakhellesoy
Copy link

@aslakhellesoy aslakhellesoy commented Mar 21, 2022

This is a fix for SUREFIRE-2041.

It introduces a new "test" RunOrder which orders test classes according to the tests specified by -Dtest.
I have verified the implementation with both a unit test and an integration test.


Following this checklist to help us incorporate your
contribution quickly and easily:

  • Make sure there is a JIRA issue filed
    for the change (usually before you start working on it). Trivial changes like typos do not
    require a JIRA issue. Your pull request should address just this issue, without
    pulling in other changes.
  • Each commit in the pull request should have a meaningful subject line and body.
  • Format the pull request title like [SUREFIRE-XXX] - Fixes bug in ApproximateQuantiles,
    where you replace SUREFIRE-XXX with the appropriate JIRA issue. Best practice
    is to use the JIRA issue title in the pull request title and in the first line of the
    commit message.
  • Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
  • Run mvn clean install to make sure basic checks pass. A more thorough check will
    be performed on your pull request automatically.
  • You have run the integration tests successfully (mvn -Prun-its clean install).

If your pull request is about ~20 lines of code you don't need to sign an
Individual Contributor License Agreement if you are unsure
please ask on the developers list.

To make clear that you license your contribution under
the Apache License Version 2.0, January 2004
you have to acknowledge this by using the following check-box.

@@ -115,7 +118,11 @@ private int getThreadCount()
@Override
public RunOrderCalculator getRunOrderCalculator()
{
return new DefaultRunOrderCalculator( runOrderParameters, getThreadCount() );
TestListResolver testListResolver = testRequest.getTestListResolver();
Copy link
Contributor

@Tibor17 Tibor17 Mar 24, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will try to make a proposal but currently we are before M6 release. The integration test is very good.
The MOJO class should evaluate the string, and if e.g. regex is not supported, throw MOJO failure exception. The string should take parallel path along with TestListResolver during serialization, because it becomes another information for RunOrder, but we must not use TestListResolver. The TestListResolver has nothing to do ordering and it is not a transfer object for -Dtest=.... I will try to do something but not this week.

@Tibor17
Copy link
Contributor

Tibor17 commented Mar 24, 2022

@aslakhellesoy
I want to inform you about the plan. As you may have noticed, the current format of CSV values in -Dtest= have two forms:

  1. example with JUnit-ANT style: org/apache/**/domain/*/*FactoryTest (the extension .java is not a must)
  2. example: %regex[org.apache.*.domain.*FactoryTest]

These are file system based paths which makes the patterns irregular for Java users.
These should turn to fully qualified names (FQN) of classes which is more natural for Java developers.
Due to JUnit5 uses own description of test, FQN should not be considered as the only one pattern and more should be involved.
This also means that the RunOrder feature is dependent on the refactoring where we break the backwards compatibility in this configuration parameter. Of course, we should agree on the format of these patterns in detail.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants