All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.yahoo.vespa.hosted.testrunner.PomXmlGenerator Maven / Gradle / Ivy

The newest version!
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.testrunner;

import com.yahoo.vespa.defaults.Defaults;

import java.nio.file.Path;
import java.util.List;
import java.util.stream.Collectors;

/**
 * Generates a pom.xml file that sets up build profile to test against the provided
 * jar artifacts.
 *
 * @author valerijf
 */
public class PomXmlGenerator {
    private static final String PROPERTY_TEMPLATE =
            "        <%ARTIFACT_ID%.path>%JAR_PATH%\n";
    private static final String TEST_ARTIFACT_GROUP_ID = "com.yahoo.vespa.testrunner.test";
    private static final String DEPENDENCY_TEMPLATE =
            "        \n" +
            "            " + TEST_ARTIFACT_GROUP_ID + "\n" +
            "            %ARTIFACT_ID%\n" +
            "            system\n" +
            "            test-jar\n" +
            "            test\n" +
            "            ${%ARTIFACT_ID%.path}\n" +
            "        \n";
    private static final String DEPENDENCY_TO_SCAN_TEMPLATE =
            "                        " + TEST_ARTIFACT_GROUP_ID + ":%ARTIFACT_ID%\n";
    private static final String POM_XML_TEMPLATE =
            "\n" +
            "\n" +
            "    4.0.0\n" +
            "    com.yahoo.vespa\n" +
            "    tester-application\n" +
            "    1.0.0\n" +
            "\n" +
            "    \n" +
            "        5.8.1\n" +
            "        2.22.0\n" +
            "%PROPERTIES%" +
            "    \n" +
            "\n" +
            "    \n" +
            "        \n" +
            "            org.junit.vintage\n" +
            "            junit-vintage-engine\n" +
            "            ${junit_version}\n" +
            "            test\n" +
            "        \n" +
            "        \n" +
            "            org.junit.jupiter\n" +
            "            junit-jupiter-engine\n" +
            "            ${junit_version}\n" +
            "            test\n" +
            "        \n" +
            "%DEPENDENCIES%" +
            "    \n" +
            "\n" +
            "    \n" +
            "        \n" +
            "            \n" +
            "                org.apache.maven.plugins\n" +
            "                maven-surefire-plugin\n" +
            "                ${surefire_version}\n" +
            "                \n" +
            "                    \n" +
            "%DEPENDENCIES_TO_SCAN%" +
            "                    \n" +
            "                    %GROUPS%\n" +
            "                    ${env.TEST_DIR}\n" +
            "                    false\n" +
            "                    false\n" +
            "                    \n" +
            "                        " + Defaults.getDefaults().underVespaHome("lib64") + "\n" +
            "                    \n" +
            "                \n" +
            "            \n" +
            "            \n" +
            "                org.apache.maven.plugins\n" +
            "                maven-surefire-report-plugin\n" +
            "                ${surefire_version}\n" +
            "                \n" +
            "                    ${env.TEST_DIR}\n" +
            "                \n" +
            "            \n" +
            "        \n" +
            "    \n" +
            "\n";

    static String generatePomXml(TestProfile testProfile, List artifacts, Path testArtifact) {
        String properties = artifacts.stream()
                .map(path -> PROPERTY_TEMPLATE
                        .replace("%ARTIFACT_ID%", path.getFileName().toString())
                        .replace("%JAR_PATH%", path.toString()))
                .collect(Collectors.joining());
        String dependencies = artifacts.stream()
                .map(path -> DEPENDENCY_TEMPLATE
                        .replace("%ARTIFACT_ID%", path.getFileName().toString()))
                .collect(Collectors.joining());
        String dependenciesToScan =
                DEPENDENCY_TO_SCAN_TEMPLATE
                        .replace("%ARTIFACT_ID%", testArtifact.getFileName().toString());

        return POM_XML_TEMPLATE
                .replace("%PROPERTIES%", properties)
                .replace("%DEPENDENCIES_TO_SCAN%", dependenciesToScan)
                .replace("%DEPENDENCIES%", dependencies)
                .replace("%GROUPS%", testProfile.group());
    }

    private PomXmlGenerator() {}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy