diff --git a/.github/workflows/ui-tests.yml b/.github/workflows/ui-tests.yml new file mode 100644 index 000000000..38d494ca2 --- /dev/null +++ b/.github/workflows/ui-tests.yml @@ -0,0 +1,155 @@ +name: 'Run UI tests' + +on: + push: + branches: + - master + pull_request: + +jobs: + build-summary: + runs-on: [ubuntu-latest] + name: Build summary UI tests + + steps: + - uses: actions/checkout@v2.3.4 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: '11' + check-latest: true + cache: 'maven' + - name: Build junit plugin and download dependencies + run: mvn -V -ntp verify -Pskip --file plugin/pom.xml -Dgpg.skip + - name: Run UI tests for the tests summary on the build summary page of a job + env: + BROWSER: firefox-container + run: mvn -V -ntp test --file ui-tests/pom.xml -Dtest=BuildSummaryTest -Dgpg.skip -Dsurefire.rerunFailingTestsCount=1 + + build-results: + runs-on: [ubuntu-latest] + name: Build results UI tests + + steps: + - uses: actions/checkout@v2.3.4 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: '11' + check-latest: true + cache: 'maven' + - name: Build junit plugin and download dependencies + run: mvn -V -ntp verify -Pskip --file plugin/pom.xml -Dgpg.skip + - name: Run UI tests for the detail view of failed unit tests of a build + env: + BROWSER: firefox-container + run: mvn -V -ntp test --file ui-tests/pom.xml -Dtest=BuildTestResultsTest -Dgpg.skip -Dsurefire.rerunFailingTestsCount=1 + + details: + runs-on: [ubuntu-latest] + name: Details UI tests + + steps: + - uses: actions/checkout@v2.3.4 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: '11' + check-latest: true + cache: 'maven' + - name: Build junit plugin and download dependencies + run: mvn -V -ntp verify -Pskip --file plugin/pom.xml -Dgpg.skip + - name: Run UI tests for the detail view of a failed JUnit test + env: + BROWSER: firefox-container + run: mvn -V -ntp test --file ui-tests/pom.xml -Dtest=TestDetailTest -Dgpg.skip -Dsurefire.rerunFailingTestsCount=1 + + publisher: + runs-on: [ubuntu-latest] + name: Publisher UI tests + + steps: + - uses: actions/checkout@v2.3.4 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: '11' + check-latest: true + cache: 'maven' + - name: Cache local Maven repository + uses: actions/cache@v2.1.7 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + - name: Build junit plugin and download dependencies + run: mvn -V -ntp verify -Pskip --file plugin/pom.xml -Dgpg.skip + - name: Run UI tests for the job configuration of the JUnit test results report publisher + env: + BROWSER: firefox-container + run: mvn -V -ntp test --file ui-tests/pom.xml -Dtest=JobConfigurationTest -Dgpg.skip -Dsurefire.rerunFailingTestsCount=1 + + job-overview: + runs-on: [ubuntu-latest] + name: Job overview UI tests + + steps: + - uses: actions/checkout@v2.3.4 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: '11' + check-latest: true + cache: 'maven' + - name: Build junit plugin and download dependencies + run: mvn -V -ntp verify -Pskip --file plugin/pom.xml -Dgpg.skip + - name: Run UI tests for the the published results of JUnit tests on the job summary page + env: + BROWSER: firefox-container + run: mvn -V -ntp test --file ui-tests/pom.xml -Dtest=ProjectSummaryTest -Dgpg.skip -Dsurefire.rerunFailingTestsCount=1 + + class-filter: + runs-on: [ubuntu-latest] + name: Filtered by class UI tests + + steps: + - uses: actions/checkout@v2.3.4 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: '11' + check-latest: true + cache: 'maven' + - name: Build junit plugin and download dependencies + run: mvn -V -ntp verify -Pskip --file plugin/pom.xml -Dgpg.skip + - name: Run UI tests for the unit tests results of a build which are filtered by a class + env: + BROWSER: firefox-container + run: mvn -V -ntp test --file ui-tests/pom.xml -Dtest=BuildTestResultsByClassTest -Dgpg.skip -Dsurefire.rerunFailingTestsCount=1 + + package-filter: + runs-on: [ubuntu-latest] + name: Filtered by package UI tests + + steps: + - uses: actions/checkout@v2.3.4 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: '11' + check-latest: true + cache: 'maven' + - name: Build junit plugin and download dependencies + run: mvn -V -ntp verify -Pskip --file plugin/pom.xml -Dgpg.skip + - name: Run UI tests for the unit tests results of a build which are filtered by a package + env: + BROWSER: firefox-container + run: mvn -V -ntp test --file ui-tests/pom.xml -Dtest=BuildTestResultsByPackageTest -Dgpg.skip -Dsurefire.rerunFailingTestsCount=1 diff --git a/Jenkinsfile b/Jenkinsfile index 6b0c48487..013f20b7d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1 +1,4 @@ -buildPlugin(useContainerAgent: true, platforms: ['linux']) +def configurations = [ + [ platform: "docker", jdk: "11" ] +] +buildPlugin(configurations: configurations) diff --git a/.mvn/extensions.xml b/plugin/.mvn/extensions.xml similarity index 100% rename from .mvn/extensions.xml rename to plugin/.mvn/extensions.xml diff --git a/.mvn/maven.config b/plugin/.mvn/maven.config similarity index 100% rename from .mvn/maven.config rename to plugin/.mvn/maven.config diff --git a/plugin/pom.xml b/plugin/pom.xml new file mode 100644 index 000000000..53a184c35 --- /dev/null +++ b/plugin/pom.xml @@ -0,0 +1,207 @@ + + 4.0.0 + + org.jenkins-ci.plugins + plugin + 4.31 + + + junit + ${revision}${changelist} + hpi + JUnit Plugin + Allows JUnit-format test results to be published. + https://github.com/jenkinsci/junit-plugin + + 1.56 + -SNAPSHOT + jenkinsci/${project.artifactId}-plugin + 2.321 + 8 + false + + + + MIT + https://opensource.org/licenses/MIT + + + + scm:git:git://github.com/${gitHubRepo}.git + scm:git:git@github.com:${gitHubRepo}.git + https://github.com/${gitHubRepo} + ${scmTag} + + + + repo.jenkins-ci.org + https://repo.jenkins-ci.org/public/ + + + + + repo.jenkins-ci.org + https://repo.jenkins-ci.org/public/ + + + + + io.jenkins.plugins + echarts-api + + + io.jenkins.plugins + checks-api + + + io.jenkins.plugins + checks-api + test + tests + + + io.jenkins.plugins + plugin-util-api + + + org.jenkins-ci.plugins + display-url-api + + + io.jenkins.plugins + github-checks + 1.0.16 + test + + + io.jenkins.plugins + bootstrap4-api + + + org.jenkins-ci.plugins.workflow + workflow-step-api + + + org.jenkins-ci.plugins.workflow + workflow-api + + + org.jenkins-ci.plugins + script-security + + + org.mockito + mockito-core + test + + + org.jenkins-ci.plugins + matrix-project + test + + + org.jenkins-ci.plugins.workflow + workflow-cps + test + + + org.jenkins-ci.plugins.workflow + workflow-job + test + + + org.jenkins-ci.plugins.workflow + workflow-cps + tests + test + + + org.jenkins-ci.plugins.workflow + workflow-basic-steps + test + + + org.jenkins-ci.plugins.workflow + workflow-support + tests + test + + + org.jenkins-ci.plugins + pipeline-stage-step + test + + + org.jenkins-ci.plugins.workflow + workflow-durable-task-step + test + + + org.jenkinsci.plugins + pipeline-model-definition + test + + + joda-time + joda-time + + + + + org.jenkins-ci.plugins + database + 128.vaa83e142f7f2 + test + + + antlr + antlr + + + + + org.jenkins-ci.plugins + database-h2 + 1.2 + test + + + io.jenkins + configuration-as-code + test + + + io.jenkins.configuration-as-code + test-harness + test + + + + commons-validator + commons-validator + + + + + org.jenkins-ci.plugins + jackson2-api + + + + + + io.jenkins.tools.bom + bom-2.303.x + 1117.v62a_f6a_01de98 + import + pom + + + + net.bytebuddy + byte-buddy + 1.12.8 + + + + diff --git a/src/main/java/hudson/tasks/junit/CaseResult.java b/plugin/src/main/java/hudson/tasks/junit/CaseResult.java similarity index 100% rename from src/main/java/hudson/tasks/junit/CaseResult.java rename to plugin/src/main/java/hudson/tasks/junit/CaseResult.java diff --git a/src/main/java/hudson/tasks/junit/ClassResult.java b/plugin/src/main/java/hudson/tasks/junit/ClassResult.java similarity index 100% rename from src/main/java/hudson/tasks/junit/ClassResult.java rename to plugin/src/main/java/hudson/tasks/junit/ClassResult.java diff --git a/src/main/java/hudson/tasks/junit/History.java b/plugin/src/main/java/hudson/tasks/junit/History.java similarity index 100% rename from src/main/java/hudson/tasks/junit/History.java rename to plugin/src/main/java/hudson/tasks/junit/History.java diff --git a/src/main/java/hudson/tasks/junit/HistoryTestResultSummary.java b/plugin/src/main/java/hudson/tasks/junit/HistoryTestResultSummary.java similarity index 100% rename from src/main/java/hudson/tasks/junit/HistoryTestResultSummary.java rename to plugin/src/main/java/hudson/tasks/junit/HistoryTestResultSummary.java diff --git a/src/main/java/hudson/tasks/junit/JUnitParser.java b/plugin/src/main/java/hudson/tasks/junit/JUnitParser.java similarity index 100% rename from src/main/java/hudson/tasks/junit/JUnitParser.java rename to plugin/src/main/java/hudson/tasks/junit/JUnitParser.java diff --git a/src/main/java/hudson/tasks/junit/JUnitResultArchiver.java b/plugin/src/main/java/hudson/tasks/junit/JUnitResultArchiver.java similarity index 100% rename from src/main/java/hudson/tasks/junit/JUnitResultArchiver.java rename to plugin/src/main/java/hudson/tasks/junit/JUnitResultArchiver.java diff --git a/src/main/java/hudson/tasks/junit/JUnitTask.java b/plugin/src/main/java/hudson/tasks/junit/JUnitTask.java similarity index 100% rename from src/main/java/hudson/tasks/junit/JUnitTask.java rename to plugin/src/main/java/hudson/tasks/junit/JUnitTask.java diff --git a/src/main/java/hudson/tasks/junit/PackageResult.java b/plugin/src/main/java/hudson/tasks/junit/PackageResult.java similarity index 100% rename from src/main/java/hudson/tasks/junit/PackageResult.java rename to plugin/src/main/java/hudson/tasks/junit/PackageResult.java diff --git a/src/main/java/hudson/tasks/junit/SuiteResult.java b/plugin/src/main/java/hudson/tasks/junit/SuiteResult.java similarity index 100% rename from src/main/java/hudson/tasks/junit/SuiteResult.java rename to plugin/src/main/java/hudson/tasks/junit/SuiteResult.java diff --git a/src/main/java/hudson/tasks/junit/TestAction.java b/plugin/src/main/java/hudson/tasks/junit/TestAction.java similarity index 100% rename from src/main/java/hudson/tasks/junit/TestAction.java rename to plugin/src/main/java/hudson/tasks/junit/TestAction.java diff --git a/src/main/java/hudson/tasks/junit/TestDataPublisher.java b/plugin/src/main/java/hudson/tasks/junit/TestDataPublisher.java similarity index 100% rename from src/main/java/hudson/tasks/junit/TestDataPublisher.java rename to plugin/src/main/java/hudson/tasks/junit/TestDataPublisher.java diff --git a/src/main/java/hudson/tasks/junit/TestDurationResultSummary.java b/plugin/src/main/java/hudson/tasks/junit/TestDurationResultSummary.java similarity index 100% rename from src/main/java/hudson/tasks/junit/TestDurationResultSummary.java rename to plugin/src/main/java/hudson/tasks/junit/TestDurationResultSummary.java diff --git a/src/main/java/hudson/tasks/junit/TestNameTransformer.java b/plugin/src/main/java/hudson/tasks/junit/TestNameTransformer.java similarity index 100% rename from src/main/java/hudson/tasks/junit/TestNameTransformer.java rename to plugin/src/main/java/hudson/tasks/junit/TestNameTransformer.java diff --git a/src/main/java/hudson/tasks/junit/TestObject.java b/plugin/src/main/java/hudson/tasks/junit/TestObject.java similarity index 100% rename from src/main/java/hudson/tasks/junit/TestObject.java rename to plugin/src/main/java/hudson/tasks/junit/TestObject.java diff --git a/src/main/java/hudson/tasks/junit/TestResult.java b/plugin/src/main/java/hudson/tasks/junit/TestResult.java similarity index 100% rename from src/main/java/hudson/tasks/junit/TestResult.java rename to plugin/src/main/java/hudson/tasks/junit/TestResult.java diff --git a/src/main/java/hudson/tasks/junit/TestResultAction.java b/plugin/src/main/java/hudson/tasks/junit/TestResultAction.java similarity index 100% rename from src/main/java/hudson/tasks/junit/TestResultAction.java rename to plugin/src/main/java/hudson/tasks/junit/TestResultAction.java diff --git a/src/main/java/hudson/tasks/junit/TestResultSummary.java b/plugin/src/main/java/hudson/tasks/junit/TestResultSummary.java similarity index 100% rename from src/main/java/hudson/tasks/junit/TestResultSummary.java rename to plugin/src/main/java/hudson/tasks/junit/TestResultSummary.java diff --git a/src/main/java/hudson/tasks/junit/TimeToFloat.java b/plugin/src/main/java/hudson/tasks/junit/TimeToFloat.java similarity index 100% rename from src/main/java/hudson/tasks/junit/TimeToFloat.java rename to plugin/src/main/java/hudson/tasks/junit/TimeToFloat.java diff --git a/src/main/java/hudson/tasks/junit/TrendTestResultSummary.java b/plugin/src/main/java/hudson/tasks/junit/TrendTestResultSummary.java similarity index 100% rename from src/main/java/hudson/tasks/junit/TrendTestResultSummary.java rename to plugin/src/main/java/hudson/tasks/junit/TrendTestResultSummary.java diff --git a/src/main/java/hudson/tasks/junit/XMLEntityResolver.java b/plugin/src/main/java/hudson/tasks/junit/XMLEntityResolver.java similarity index 100% rename from src/main/java/hudson/tasks/junit/XMLEntityResolver.java rename to plugin/src/main/java/hudson/tasks/junit/XMLEntityResolver.java diff --git a/src/main/java/hudson/tasks/junit/package.html b/plugin/src/main/java/hudson/tasks/junit/package.html similarity index 100% rename from src/main/java/hudson/tasks/junit/package.html rename to plugin/src/main/java/hudson/tasks/junit/package.html diff --git a/src/main/java/hudson/tasks/junit/pipeline/JUnitResultsStep.java b/plugin/src/main/java/hudson/tasks/junit/pipeline/JUnitResultsStep.java similarity index 91% rename from src/main/java/hudson/tasks/junit/pipeline/JUnitResultsStep.java rename to plugin/src/main/java/hudson/tasks/junit/pipeline/JUnitResultsStep.java index 785e012c8..83a800245 100644 --- a/src/main/java/hudson/tasks/junit/pipeline/JUnitResultsStep.java +++ b/plugin/src/main/java/hudson/tasks/junit/pipeline/JUnitResultsStep.java @@ -8,7 +8,6 @@ import hudson.model.Saveable; import hudson.model.TaskListener; import hudson.tasks.junit.JUnitTask; -import hudson.tasks.junit.Messages; import hudson.tasks.junit.TestDataPublisher; import hudson.util.DescribableList; import hudson.util.FormValidation; @@ -190,15 +189,5 @@ public Set> getRequiredContext() { return Collections.unmodifiableSet(context); } - public FormValidation doCheckHealthScaleFactor(@QueryParameter double value) { - if (value < 1e-7) return FormValidation.warning("Test health reporting disabled"); - return FormValidation.ok(Messages.JUnitResultArchiver_HealthScaleFactorAnalysis( - 1, - (int) (100.0 - Math.max(0.0, Math.min(100.0, 1 * value))), - 5, - (int) (100.0 - Math.max(0.0, Math.min(100.0, 5 * value))) - )); - } - } } diff --git a/src/main/java/hudson/tasks/junit/pipeline/JUnitResultsStepExecution.java b/plugin/src/main/java/hudson/tasks/junit/pipeline/JUnitResultsStepExecution.java similarity index 100% rename from src/main/java/hudson/tasks/junit/pipeline/JUnitResultsStepExecution.java rename to plugin/src/main/java/hudson/tasks/junit/pipeline/JUnitResultsStepExecution.java diff --git a/src/main/java/hudson/tasks/test/AbstractTestResultAction.java b/plugin/src/main/java/hudson/tasks/test/AbstractTestResultAction.java similarity index 100% rename from src/main/java/hudson/tasks/test/AbstractTestResultAction.java rename to plugin/src/main/java/hudson/tasks/test/AbstractTestResultAction.java diff --git a/src/main/java/hudson/tasks/test/AggregatedTestResultAction.java b/plugin/src/main/java/hudson/tasks/test/AggregatedTestResultAction.java similarity index 100% rename from src/main/java/hudson/tasks/test/AggregatedTestResultAction.java rename to plugin/src/main/java/hudson/tasks/test/AggregatedTestResultAction.java diff --git a/src/main/java/hudson/tasks/test/AggregatedTestResultPublisher.java b/plugin/src/main/java/hudson/tasks/test/AggregatedTestResultPublisher.java similarity index 100% rename from src/main/java/hudson/tasks/test/AggregatedTestResultPublisher.java rename to plugin/src/main/java/hudson/tasks/test/AggregatedTestResultPublisher.java diff --git a/src/main/java/hudson/tasks/test/DefaultTestResultParserImpl.java b/plugin/src/main/java/hudson/tasks/test/DefaultTestResultParserImpl.java similarity index 100% rename from src/main/java/hudson/tasks/test/DefaultTestResultParserImpl.java rename to plugin/src/main/java/hudson/tasks/test/DefaultTestResultParserImpl.java diff --git a/src/main/java/hudson/tasks/test/MetaTabulatedResult.java b/plugin/src/main/java/hudson/tasks/test/MetaTabulatedResult.java similarity index 100% rename from src/main/java/hudson/tasks/test/MetaTabulatedResult.java rename to plugin/src/main/java/hudson/tasks/test/MetaTabulatedResult.java diff --git a/src/main/java/hudson/tasks/test/PipelineBlockWithTests.java b/plugin/src/main/java/hudson/tasks/test/PipelineBlockWithTests.java similarity index 100% rename from src/main/java/hudson/tasks/test/PipelineBlockWithTests.java rename to plugin/src/main/java/hudson/tasks/test/PipelineBlockWithTests.java diff --git a/src/main/java/hudson/tasks/test/PipelineTestDetails.java b/plugin/src/main/java/hudson/tasks/test/PipelineTestDetails.java similarity index 100% rename from src/main/java/hudson/tasks/test/PipelineTestDetails.java rename to plugin/src/main/java/hudson/tasks/test/PipelineTestDetails.java diff --git a/src/main/java/hudson/tasks/test/SimpleCaseResult.java b/plugin/src/main/java/hudson/tasks/test/SimpleCaseResult.java similarity index 100% rename from src/main/java/hudson/tasks/test/SimpleCaseResult.java rename to plugin/src/main/java/hudson/tasks/test/SimpleCaseResult.java diff --git a/src/main/java/hudson/tasks/test/TabulatedResult.java b/plugin/src/main/java/hudson/tasks/test/TabulatedResult.java similarity index 100% rename from src/main/java/hudson/tasks/test/TabulatedResult.java rename to plugin/src/main/java/hudson/tasks/test/TabulatedResult.java diff --git a/src/main/java/hudson/tasks/test/TestDurationTrendSeriesBuilder.java b/plugin/src/main/java/hudson/tasks/test/TestDurationTrendSeriesBuilder.java similarity index 100% rename from src/main/java/hudson/tasks/test/TestDurationTrendSeriesBuilder.java rename to plugin/src/main/java/hudson/tasks/test/TestDurationTrendSeriesBuilder.java diff --git a/src/main/java/hudson/tasks/test/TestObject.java b/plugin/src/main/java/hudson/tasks/test/TestObject.java similarity index 100% rename from src/main/java/hudson/tasks/test/TestObject.java rename to plugin/src/main/java/hudson/tasks/test/TestObject.java diff --git a/src/main/java/hudson/tasks/test/TestObjectIterable.java b/plugin/src/main/java/hudson/tasks/test/TestObjectIterable.java similarity index 100% rename from src/main/java/hudson/tasks/test/TestObjectIterable.java rename to plugin/src/main/java/hudson/tasks/test/TestObjectIterable.java diff --git a/src/main/java/hudson/tasks/test/TestObjectTrendSeriesBuilder.java b/plugin/src/main/java/hudson/tasks/test/TestObjectTrendSeriesBuilder.java similarity index 100% rename from src/main/java/hudson/tasks/test/TestObjectTrendSeriesBuilder.java rename to plugin/src/main/java/hudson/tasks/test/TestObjectTrendSeriesBuilder.java diff --git a/src/main/java/hudson/tasks/test/TestResult.java b/plugin/src/main/java/hudson/tasks/test/TestResult.java similarity index 100% rename from src/main/java/hudson/tasks/test/TestResult.java rename to plugin/src/main/java/hudson/tasks/test/TestResult.java diff --git a/src/main/java/hudson/tasks/test/TestResultActionIterable.java b/plugin/src/main/java/hudson/tasks/test/TestResultActionIterable.java similarity index 100% rename from src/main/java/hudson/tasks/test/TestResultActionIterable.java rename to plugin/src/main/java/hudson/tasks/test/TestResultActionIterable.java diff --git a/src/main/java/hudson/tasks/test/TestResultDurationChart.java b/plugin/src/main/java/hudson/tasks/test/TestResultDurationChart.java similarity index 100% rename from src/main/java/hudson/tasks/test/TestResultDurationChart.java rename to plugin/src/main/java/hudson/tasks/test/TestResultDurationChart.java diff --git a/src/main/java/hudson/tasks/test/TestResultParser.java b/plugin/src/main/java/hudson/tasks/test/TestResultParser.java similarity index 100% rename from src/main/java/hudson/tasks/test/TestResultParser.java rename to plugin/src/main/java/hudson/tasks/test/TestResultParser.java diff --git a/src/main/java/hudson/tasks/test/TestResultProjectAction.java b/plugin/src/main/java/hudson/tasks/test/TestResultProjectAction.java similarity index 100% rename from src/main/java/hudson/tasks/test/TestResultProjectAction.java rename to plugin/src/main/java/hudson/tasks/test/TestResultProjectAction.java diff --git a/src/main/java/hudson/tasks/test/TestResultTrendChart.java b/plugin/src/main/java/hudson/tasks/test/TestResultTrendChart.java similarity index 100% rename from src/main/java/hudson/tasks/test/TestResultTrendChart.java rename to plugin/src/main/java/hudson/tasks/test/TestResultTrendChart.java diff --git a/src/main/java/hudson/tasks/test/TestResultTrendSeriesBuilder.java b/plugin/src/main/java/hudson/tasks/test/TestResultTrendSeriesBuilder.java similarity index 100% rename from src/main/java/hudson/tasks/test/TestResultTrendSeriesBuilder.java rename to plugin/src/main/java/hudson/tasks/test/TestResultTrendSeriesBuilder.java diff --git a/src/main/java/hudson/tasks/test/package.html b/plugin/src/main/java/hudson/tasks/test/package.html similarity index 100% rename from src/main/java/hudson/tasks/test/package.html rename to plugin/src/main/java/hudson/tasks/test/package.html diff --git a/src/main/java/io/jenkins/plugins/junit/checks/JUnitChecksPublisher.java b/plugin/src/main/java/io/jenkins/plugins/junit/checks/JUnitChecksPublisher.java similarity index 100% rename from src/main/java/io/jenkins/plugins/junit/checks/JUnitChecksPublisher.java rename to plugin/src/main/java/io/jenkins/plugins/junit/checks/JUnitChecksPublisher.java diff --git a/src/main/java/io/jenkins/plugins/junit/storage/FileJunitTestResultStorage.java b/plugin/src/main/java/io/jenkins/plugins/junit/storage/FileJunitTestResultStorage.java similarity index 100% rename from src/main/java/io/jenkins/plugins/junit/storage/FileJunitTestResultStorage.java rename to plugin/src/main/java/io/jenkins/plugins/junit/storage/FileJunitTestResultStorage.java diff --git a/src/main/java/io/jenkins/plugins/junit/storage/JunitTestResultStorage.java b/plugin/src/main/java/io/jenkins/plugins/junit/storage/JunitTestResultStorage.java similarity index 100% rename from src/main/java/io/jenkins/plugins/junit/storage/JunitTestResultStorage.java rename to plugin/src/main/java/io/jenkins/plugins/junit/storage/JunitTestResultStorage.java diff --git a/src/main/java/io/jenkins/plugins/junit/storage/JunitTestResultStorageConfiguration.java b/plugin/src/main/java/io/jenkins/plugins/junit/storage/JunitTestResultStorageConfiguration.java similarity index 100% rename from src/main/java/io/jenkins/plugins/junit/storage/JunitTestResultStorageConfiguration.java rename to plugin/src/main/java/io/jenkins/plugins/junit/storage/JunitTestResultStorageConfiguration.java diff --git a/src/main/java/io/jenkins/plugins/junit/storage/JunitTestResultStorageDescriptor.java b/plugin/src/main/java/io/jenkins/plugins/junit/storage/JunitTestResultStorageDescriptor.java similarity index 100% rename from src/main/java/io/jenkins/plugins/junit/storage/JunitTestResultStorageDescriptor.java rename to plugin/src/main/java/io/jenkins/plugins/junit/storage/JunitTestResultStorageDescriptor.java diff --git a/src/main/java/io/jenkins/plugins/junit/storage/TestResultImpl.java b/plugin/src/main/java/io/jenkins/plugins/junit/storage/TestResultImpl.java similarity index 100% rename from src/main/java/io/jenkins/plugins/junit/storage/TestResultImpl.java rename to plugin/src/main/java/io/jenkins/plugins/junit/storage/TestResultImpl.java diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index.jelly b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index.jelly similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index.jelly rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index.jelly diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_da.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_da.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_da.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_de.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_de.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_de.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_de.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_es.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_es.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_es.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_fi.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_fi.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_fi.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_fi.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_fr.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_fr.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_fr.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_fr.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_he.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_he.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_he.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_he.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_hu.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_hu.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_hu.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_hu.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_ja.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_ja.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_ja.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_lt.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_lt.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_lt.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_lt.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_lv.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_lv.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_lv.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_lv.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_nl.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_nl.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_nl.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_nl.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_pl.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_pl.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_pl.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_pl.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_ru.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_ru.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_ru.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_ru.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_sv_SE.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_sv_SE.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_sv_SE.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_sv_SE.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_tr.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_tr.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_tr.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_tr.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_uk.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_uk.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_uk.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_uk.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_zh_CN.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_zh_CN.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_zh_CN.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_zh_CN.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/index_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/index_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/index_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/list.jelly b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/list.jelly similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/list.jelly rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/list.jelly diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/list_da.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/list_da.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_da.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/list_de.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_de.properties similarity index 97% rename from src/main/resources/hudson/tasks/junit/CaseResult/list_de.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_de.properties index a8dab2d2b..b52e884a0 100644 --- a/src/main/resources/hudson/tasks/junit/CaseResult/list_de.properties +++ b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_de.properties @@ -1,26 +1,26 @@ -# The MIT License -# -# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Simon Wiest -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -Build=Build -Test\ Description=Testbeschreibung -Test\ Duration=Testdauer -Test\ Result=Testergebnis +# The MIT License +# +# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Simon Wiest +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +Build=Build +Test\ Description=Testbeschreibung +Test\ Duration=Testdauer +Test\ Result=Testergebnis diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/list_es.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/list_es.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_es.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/list_fr.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_fr.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/list_fr.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_fr.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/list_ja.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/list_ja.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_ja.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/list_lv.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_lv.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/list_lv.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_lv.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/list_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/list_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/list_ru.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_ru.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/list_ru.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_ru.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/list_sv_SE.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_sv_SE.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/list_sv_SE.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_sv_SE.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/list_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/list_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/list_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/summary.jelly b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/summary.jelly similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/summary.jelly rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/summary.jelly diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/summary_da.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/summary_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/summary_da.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/summary_da.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/summary_de.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/summary_de.properties similarity index 98% rename from src/main/resources/hudson/tasks/junit/CaseResult/summary_de.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/summary_de.properties index 31f67f9db..01edf95ad 100644 --- a/src/main/resources/hudson/tasks/junit/CaseResult/summary_de.properties +++ b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/summary_de.properties @@ -1,24 +1,24 @@ -# The MIT License -# -# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Simon Wiest -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -Error\ Details=Fehlerdetails -Stack\ Trace=Stacktrace +# The MIT License +# +# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Simon Wiest +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +Error\ Details=Fehlerdetails +Stack\ Trace=Stacktrace diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/summary_es.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/summary_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/summary_es.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/summary_es.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/summary_ja.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/summary_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/summary_ja.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/summary_ja.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/summary_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/summary_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/summary_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/summary_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/junit/CaseResult/summary_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/junit/CaseResult/summary_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/CaseResult/summary_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/junit/CaseResult/summary_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/body.jelly b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/body.jelly similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/body.jelly rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/body.jelly diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/body_da.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/body_da.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_da.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/body_de.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_de.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/body_de.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_de.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/body_es.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/body_es.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_es.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/body_fi.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_fi.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/body_fi.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_fi.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/body_fr.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_fr.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/body_fr.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_fr.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/body_ja.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/body_ja.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_ja.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/body_lv.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_lv.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/body_lv.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_lv.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/body_nb_NO.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_nb_NO.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/body_nb_NO.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_nb_NO.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/body_nl.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_nl.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/body_nl.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_nl.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/body_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/body_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/body_ru.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_ru.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/body_ru.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_ru.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/body_sv_SE.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_sv_SE.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/body_sv_SE.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_sv_SE.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/body_tr.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_tr.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/body_tr.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_tr.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/body_zh_CN.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_zh_CN.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/body_zh_CN.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_zh_CN.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/body_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/body_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/body_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/list.jelly b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/list.jelly similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/list.jelly rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/list.jelly diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/list_da.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/list_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/list_da.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/list_da.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/list_de.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/list_de.properties similarity index 97% rename from src/main/resources/hudson/tasks/junit/ClassResult/list_de.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/list_de.properties index 54a28e53b..2e3c95aea 100644 --- a/src/main/resources/hudson/tasks/junit/ClassResult/list_de.properties +++ b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/list_de.properties @@ -1,28 +1,28 @@ -# The MIT License -# -# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Simon Wiest -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -Build=Build -Description=Beschreibung -Duration=Dauer -Fail=Fehlgeschlagen -Skip=Ausgelassen -Total=Summe +# The MIT License +# +# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Simon Wiest +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +Build=Build +Description=Beschreibung +Duration=Dauer +Fail=Fehlgeschlagen +Skip=Ausgelassen +Total=Summe diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/list_es.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/list_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/list_es.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/list_es.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/list_ja.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/list_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/list_ja.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/list_ja.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/list_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/list_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/list_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/list_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/list_zh_CN.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/list_zh_CN.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/list_zh_CN.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/list_zh_CN.properties diff --git a/src/main/resources/hudson/tasks/junit/ClassResult/list_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/junit/ClassResult/list_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/ClassResult/list_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/junit/ClassResult/list_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/junit/History/index.jelly b/plugin/src/main/resources/hudson/tasks/junit/History/index.jelly similarity index 100% rename from src/main/resources/hudson/tasks/junit/History/index.jelly rename to plugin/src/main/resources/hudson/tasks/junit/History/index.jelly diff --git a/src/main/resources/hudson/tasks/junit/History/index.properties b/plugin/src/main/resources/hudson/tasks/junit/History/index.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/History/index.properties rename to plugin/src/main/resources/hudson/tasks/junit/History/index.properties diff --git a/src/main/resources/hudson/tasks/junit/History/index_da.properties b/plugin/src/main/resources/hudson/tasks/junit/History/index_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/History/index_da.properties rename to plugin/src/main/resources/hudson/tasks/junit/History/index_da.properties diff --git a/src/main/resources/hudson/tasks/junit/History/index_de.properties b/plugin/src/main/resources/hudson/tasks/junit/History/index_de.properties similarity index 98% rename from src/main/resources/hudson/tasks/junit/History/index_de.properties rename to plugin/src/main/resources/hudson/tasks/junit/History/index_de.properties index 06346a41d..6a8214691 100644 --- a/src/main/resources/hudson/tasks/junit/History/index_de.properties +++ b/plugin/src/main/resources/hudson/tasks/junit/History/index_de.properties @@ -1,26 +1,26 @@ -# The MIT License -# -# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Simon Wiest -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -title=Verlauf von {0} -More\ than\ 1\ builds\ are\ needed\ for\ the\ chart.=Für ein Diagramm werden mindestens 2 Builds benötigt. -Older=Älter -Newer=Neuer +# The MIT License +# +# Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Simon Wiest +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +title=Verlauf von {0} +More\ than\ 1\ builds\ are\ needed\ for\ the\ chart.=Für ein Diagramm werden mindestens 2 Builds benötigt. +Older=Älter +Newer=Neuer diff --git a/src/main/resources/hudson/tasks/junit/History/index_es.properties b/plugin/src/main/resources/hudson/tasks/junit/History/index_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/History/index_es.properties rename to plugin/src/main/resources/hudson/tasks/junit/History/index_es.properties diff --git a/src/main/resources/hudson/tasks/junit/History/index_fr.properties b/plugin/src/main/resources/hudson/tasks/junit/History/index_fr.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/History/index_fr.properties rename to plugin/src/main/resources/hudson/tasks/junit/History/index_fr.properties diff --git a/src/main/resources/hudson/tasks/junit/History/index_ja.properties b/plugin/src/main/resources/hudson/tasks/junit/History/index_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/History/index_ja.properties rename to plugin/src/main/resources/hudson/tasks/junit/History/index_ja.properties diff --git a/src/main/resources/hudson/tasks/junit/History/index_lv.properties b/plugin/src/main/resources/hudson/tasks/junit/History/index_lv.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/History/index_lv.properties rename to plugin/src/main/resources/hudson/tasks/junit/History/index_lv.properties diff --git a/src/main/resources/hudson/tasks/junit/History/index_pl.properties b/plugin/src/main/resources/hudson/tasks/junit/History/index_pl.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/History/index_pl.properties rename to plugin/src/main/resources/hudson/tasks/junit/History/index_pl.properties diff --git a/src/main/resources/hudson/tasks/junit/History/index_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/junit/History/index_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/History/index_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/junit/History/index_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/junit/History/index_ru.properties b/plugin/src/main/resources/hudson/tasks/junit/History/index_ru.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/History/index_ru.properties rename to plugin/src/main/resources/hudson/tasks/junit/History/index_ru.properties diff --git a/src/main/resources/hudson/tasks/junit/History/index_sv_SE.properties b/plugin/src/main/resources/hudson/tasks/junit/History/index_sv_SE.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/History/index_sv_SE.properties rename to plugin/src/main/resources/hudson/tasks/junit/History/index_sv_SE.properties diff --git a/src/main/resources/hudson/tasks/junit/History/index_zh_CN.properties b/plugin/src/main/resources/hudson/tasks/junit/History/index_zh_CN.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/History/index_zh_CN.properties rename to plugin/src/main/resources/hudson/tasks/junit/History/index_zh_CN.properties diff --git a/src/main/resources/hudson/tasks/junit/History/index_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/junit/History/index_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/History/index_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/junit/History/index_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config.jelly b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config.jelly similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config.jelly rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config.jelly diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config.properties b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config.properties rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config.properties diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_da.properties b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_da.properties rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_da.properties diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_de.properties b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_de.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_de.properties rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_de.properties diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_es.properties b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_es.properties rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_es.properties diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_fr.properties b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_fr.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_fr.properties rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_fr.properties diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_ja.properties b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_ja.properties rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_ja.properties diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_nl.properties b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_nl.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_nl.properties rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_nl.properties diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_ru.properties b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_ru.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_ru.properties rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_ru.properties diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_tr.properties b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_tr.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_tr.properties rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_tr.properties diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_zh_CN.properties b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_zh_CN.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_zh_CN.properties rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_zh_CN.properties diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/config_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-allowEmptyResults.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-allowEmptyResults.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-allowEmptyResults.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-allowEmptyResults.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-checksName.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-checksName.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-checksName.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-checksName.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-healthScaleFactor.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-healthScaleFactor.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-healthScaleFactor.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-healthScaleFactor.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-healthScaleFactor_ja.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-healthScaleFactor_ja.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-healthScaleFactor_ja.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-healthScaleFactor_ja.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-keepLongStdio.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-keepLongStdio.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-keepLongStdio.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-keepLongStdio.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-keepLongStdio_de.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-keepLongStdio_de.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-keepLongStdio_de.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-keepLongStdio_de.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-keepLongStdio_ja.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-keepLongStdio_ja.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-keepLongStdio_ja.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-keepLongStdio_ja.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-keepLongStdio_zh_TW.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-keepLongStdio_zh_TW.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-keepLongStdio_zh_TW.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-keepLongStdio_zh_TW.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-skipMarkingBuildUnstable.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-skipMarkingBuildUnstable.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-skipMarkingBuildUnstable.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-skipMarkingBuildUnstable.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-skipPublishingChecks.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-skipPublishingChecks.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-skipPublishingChecks.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help-skipPublishingChecks.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_de.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_de.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_de.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_de.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_fr.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_fr.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_fr.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_fr.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_ja.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_ja.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_ja.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_ja.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_nl.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_nl.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_nl.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_nl.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_pt_BR.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_pt_BR.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_pt_BR.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_pt_BR.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_ru.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_ru.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_ru.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_ru.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_tr.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_tr.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_tr.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_tr.html diff --git a/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_zh_TW.html b/plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_zh_TW.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_zh_TW.html rename to plugin/src/main/resources/hudson/tasks/junit/JUnitResultArchiver/help_zh_TW.html diff --git a/src/main/resources/hudson/tasks/junit/Messages.properties b/plugin/src/main/resources/hudson/tasks/junit/Messages.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/Messages.properties rename to plugin/src/main/resources/hudson/tasks/junit/Messages.properties diff --git a/src/main/resources/hudson/tasks/junit/Messages_da.properties b/plugin/src/main/resources/hudson/tasks/junit/Messages_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/Messages_da.properties rename to plugin/src/main/resources/hudson/tasks/junit/Messages_da.properties diff --git a/src/main/resources/hudson/tasks/junit/Messages_de.properties b/plugin/src/main/resources/hudson/tasks/junit/Messages_de.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/Messages_de.properties rename to plugin/src/main/resources/hudson/tasks/junit/Messages_de.properties diff --git a/src/main/resources/hudson/tasks/junit/Messages_es.properties b/plugin/src/main/resources/hudson/tasks/junit/Messages_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/Messages_es.properties rename to plugin/src/main/resources/hudson/tasks/junit/Messages_es.properties diff --git a/src/main/resources/hudson/tasks/junit/Messages_fr.properties b/plugin/src/main/resources/hudson/tasks/junit/Messages_fr.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/Messages_fr.properties rename to plugin/src/main/resources/hudson/tasks/junit/Messages_fr.properties diff --git a/src/main/resources/hudson/tasks/junit/Messages_ja.properties b/plugin/src/main/resources/hudson/tasks/junit/Messages_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/Messages_ja.properties rename to plugin/src/main/resources/hudson/tasks/junit/Messages_ja.properties diff --git a/src/main/resources/hudson/tasks/junit/Messages_nl.properties b/plugin/src/main/resources/hudson/tasks/junit/Messages_nl.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/Messages_nl.properties rename to plugin/src/main/resources/hudson/tasks/junit/Messages_nl.properties diff --git a/src/main/resources/hudson/tasks/junit/Messages_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/junit/Messages_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/Messages_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/junit/Messages_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/junit/Messages_ru.properties b/plugin/src/main/resources/hudson/tasks/junit/Messages_ru.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/Messages_ru.properties rename to plugin/src/main/resources/hudson/tasks/junit/Messages_ru.properties diff --git a/src/main/resources/hudson/tasks/junit/Messages_tr.properties b/plugin/src/main/resources/hudson/tasks/junit/Messages_tr.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/Messages_tr.properties rename to plugin/src/main/resources/hudson/tasks/junit/Messages_tr.properties diff --git a/src/main/resources/hudson/tasks/junit/Messages_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/junit/Messages_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/junit/Messages_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/junit/Messages_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/config.jelly b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/config.jelly similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/config.jelly rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/config.jelly diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-allowEmptyResults.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-allowEmptyResults.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-allowEmptyResults.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-allowEmptyResults.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-checksName.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-checksName.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-checksName.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-checksName.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-healthScaleFactor.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-healthScaleFactor.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-healthScaleFactor.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-healthScaleFactor.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-healthScaleFactor_ja.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-healthScaleFactor_ja.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-healthScaleFactor_ja.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-healthScaleFactor_ja.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-keepLongStdio.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-keepLongStdio.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-keepLongStdio.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-keepLongStdio.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-keepLongStdio_de.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-keepLongStdio_de.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-keepLongStdio_de.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-keepLongStdio_de.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-keepLongStdio_ja.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-keepLongStdio_ja.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-keepLongStdio_ja.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-keepLongStdio_ja.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-keepLongStdio_zh_TW.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-keepLongStdio_zh_TW.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-keepLongStdio_zh_TW.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-keepLongStdio_zh_TW.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-skipMarkingBuildUnstable.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-skipMarkingBuildUnstable.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-skipMarkingBuildUnstable.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-skipMarkingBuildUnstable.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-skipPublishingChecks.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-skipPublishingChecks.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-skipPublishingChecks.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help-skipPublishingChecks.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_de.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_de.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_de.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_de.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_fr.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_fr.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_fr.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_fr.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_ja.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_ja.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_ja.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_ja.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_nl.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_nl.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_nl.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_nl.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_pt_BR.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_pt_BR.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_pt_BR.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_pt_BR.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_ru.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_ru.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_ru.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_ru.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_tr.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_tr.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_tr.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_tr.html diff --git a/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_zh_TW.html b/plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_zh_TW.html similarity index 100% rename from src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_zh_TW.html rename to plugin/src/main/resources/hudson/tasks/junit/pipeline/JUnitResultsStep/help_zh_TW.html diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary.jelly b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary.jelly similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary.jelly rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary.jelly diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_bg.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_bg.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_bg.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_bg.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_da.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_da.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_da.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_de.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_de.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_de.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_de.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_es.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_es.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_es.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_fr.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_fr.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_fr.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_fr.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_he.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_he.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_he.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_he.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_hi_IN.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_hi_IN.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_hi_IN.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_hi_IN.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_ja.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_ja.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_ja.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_ko.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_ko.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_ko.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_ko.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_lv.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_lv.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_lv.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_lv.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_nl.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_nl.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_nl.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_nl.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_pl.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_pl.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_pl.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_pl.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_ru.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_ru.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_ru.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_ru.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_sk.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_sk.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_sk.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_sk.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_sv_SE.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_sv_SE.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_sv_SE.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_sv_SE.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_tr.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_tr.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_tr.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_tr.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_uk.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_uk.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_uk.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_uk.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_zh_CN.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_zh_CN.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_zh_CN.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_zh_CN.properties diff --git a/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/test/AbstractTestResultAction/summary_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index.jelly b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index.jelly similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index.jelly rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index.jelly diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_da.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_da.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_da.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_de.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_de.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_de.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_de.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_es.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_es.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_es.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_fr.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_fr.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_fr.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_fr.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_ja.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_ja.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_ja.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_lv.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_lv.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_lv.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_lv.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_ru.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_ru.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_ru.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_ru.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultAction/index_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain.jelly b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain.jelly similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain.jelly rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain.jelly diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain_de.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain_de.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain_de.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain_de.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain_es.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain_es.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain_es.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain_ja.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain_ja.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain_ja.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/TestResultProjectAction/jobMain_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config.jelly b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config.jelly similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config.jelly rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config.jelly diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_da.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_da.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_da.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_de.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_de.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_de.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_de.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_es.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_es.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_es.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_fr.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_fr.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_fr.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_fr.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_ja.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_ja.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_ja.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_ru.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_ru.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_ru.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_ru.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_sv_SE.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_sv_SE.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_sv_SE.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_sv_SE.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_tr.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_tr.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_tr.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_tr.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_zh_CN.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_zh_CN.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_zh_CN.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_zh_CN.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/config_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_de.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_de.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_de.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_de.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_fr.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_fr.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_fr.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_fr.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_ja.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_ja.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_ja.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_ja.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_nl.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_nl.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_nl.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_nl.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_pt_BR.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_pt_BR.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_pt_BR.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_pt_BR.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_tr.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_tr.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_tr.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_tr.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_zh_TW.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_zh_TW.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_zh_TW.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-auto-aggregate_zh_TW.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_de.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_de.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_de.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_de.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_fr.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_fr.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_fr.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_fr.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_ja.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_ja.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_ja.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_ja.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_nl.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_nl.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_nl.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_nl.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_pt_BR.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_pt_BR.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_pt_BR.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_pt_BR.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_tr.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_tr.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_tr.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_tr.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_zh_TW.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_zh_TW.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_zh_TW.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help-manual-list_zh_TW.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_de.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_de.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_de.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_de.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_fr.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_fr.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_fr.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_fr.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_ja.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_ja.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_ja.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_ja.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_nl.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_nl.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_nl.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_nl.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_pt_BR.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_pt_BR.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_pt_BR.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_pt_BR.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_tr.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_tr.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_tr.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_tr.html diff --git a/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_zh_TW.html b/plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_zh_TW.html similarity index 100% rename from src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_zh_TW.html rename to plugin/src/main/resources/hudson/tasks/test/AggregatedTestResultPublisher/help_zh_TW.html diff --git a/src/main/resources/hudson/tasks/test/Messages.properties b/plugin/src/main/resources/hudson/tasks/test/Messages.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/Messages.properties rename to plugin/src/main/resources/hudson/tasks/test/Messages.properties diff --git a/src/main/resources/hudson/tasks/test/Messages_da.properties b/plugin/src/main/resources/hudson/tasks/test/Messages_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/Messages_da.properties rename to plugin/src/main/resources/hudson/tasks/test/Messages_da.properties diff --git a/src/main/resources/hudson/tasks/test/Messages_de.properties b/plugin/src/main/resources/hudson/tasks/test/Messages_de.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/Messages_de.properties rename to plugin/src/main/resources/hudson/tasks/test/Messages_de.properties diff --git a/src/main/resources/hudson/tasks/test/Messages_es.properties b/plugin/src/main/resources/hudson/tasks/test/Messages_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/Messages_es.properties rename to plugin/src/main/resources/hudson/tasks/test/Messages_es.properties diff --git a/src/main/resources/hudson/tasks/test/Messages_fr.properties b/plugin/src/main/resources/hudson/tasks/test/Messages_fr.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/Messages_fr.properties rename to plugin/src/main/resources/hudson/tasks/test/Messages_fr.properties diff --git a/src/main/resources/hudson/tasks/test/Messages_it.properties b/plugin/src/main/resources/hudson/tasks/test/Messages_it.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/Messages_it.properties rename to plugin/src/main/resources/hudson/tasks/test/Messages_it.properties diff --git a/src/main/resources/hudson/tasks/test/Messages_ja.properties b/plugin/src/main/resources/hudson/tasks/test/Messages_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/Messages_ja.properties rename to plugin/src/main/resources/hudson/tasks/test/Messages_ja.properties diff --git a/src/main/resources/hudson/tasks/test/Messages_nl.properties b/plugin/src/main/resources/hudson/tasks/test/Messages_nl.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/Messages_nl.properties rename to plugin/src/main/resources/hudson/tasks/test/Messages_nl.properties diff --git a/src/main/resources/hudson/tasks/test/Messages_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/test/Messages_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/Messages_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/test/Messages_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/test/Messages_ru.properties b/plugin/src/main/resources/hudson/tasks/test/Messages_ru.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/Messages_ru.properties rename to plugin/src/main/resources/hudson/tasks/test/Messages_ru.properties diff --git a/src/main/resources/hudson/tasks/test/Messages_tr.properties b/plugin/src/main/resources/hudson/tasks/test/Messages_tr.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/Messages_tr.properties rename to plugin/src/main/resources/hudson/tasks/test/Messages_tr.properties diff --git a/src/main/resources/hudson/tasks/test/Messages_zh_CN.properties b/plugin/src/main/resources/hudson/tasks/test/Messages_zh_CN.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/Messages_zh_CN.properties rename to plugin/src/main/resources/hudson/tasks/test/Messages_zh_CN.properties diff --git a/src/main/resources/hudson/tasks/test/Messages_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/test/Messages_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/Messages_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/test/Messages_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body.jelly b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body.jelly similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body.jelly rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body.jelly diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ar.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ar.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ar.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ar.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_bg.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_bg.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_bg.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_bg.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_cs.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_cs.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_cs.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_cs.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_da.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_da.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_da.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_de.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_de.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_de.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_de.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_eo.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_eo.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_eo.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_eo.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_es.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_es.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_es.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_et.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_et.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_et.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_et.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_fi.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_fi.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_fi.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_fi.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_fr.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_fr.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_fr.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_fr.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_it.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_it.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_it.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_it.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ja.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ja.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ja.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ko.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ko.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ko.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ko.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_lv.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_lv.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_lv.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_lv.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_nb_NO.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_nb_NO.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_nb_NO.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_nb_NO.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_nl.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_nl.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_nl.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_nl.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_pl.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_pl.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_pl.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_pl.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_pt_PT.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_pt_PT.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_pt_PT.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_pt_PT.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ro.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ro.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ro.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ro.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ru.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ru.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ru.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_ru.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_sl.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_sl.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_sl.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_sl.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_sv_SE.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_sv_SE.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_sv_SE.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_sv_SE.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_tr.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_tr.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_tr.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_tr.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_zh_CN.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_zh_CN.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_zh_CN.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_zh_CN.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/body_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list.jelly b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list.jelly similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/list.jelly rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list.jelly diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_da.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_da.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_da.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_de.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_de.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_de.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_de.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_es.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_es.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_es.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_fr.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_fr.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_fr.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_fr.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_ja.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_ja.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_ja.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_lv.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_lv.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_lv.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_lv.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_ru.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_ru.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_ru.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_ru.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_sv_SE.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_sv_SE.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_sv_SE.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_sv_SE.properties diff --git a/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/test/MetaTabulatedResult/list_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel.jelly b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel.jelly similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel.jelly rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel.jelly diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_ar.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_ar.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_ar.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_ar.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_bg.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_bg.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_bg.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_bg.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_cs.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_cs.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_cs.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_cs.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_da.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_da.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_da.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_de.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_de.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_de.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_de.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_eo.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_eo.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_eo.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_eo.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_es.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_es.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_es.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_et.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_et.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_et.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_et.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_fi.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_fi.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_fi.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_fi.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_fr.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_fr.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_fr.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_fr.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_he.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_he.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_he.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_he.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_hi_IN.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_hi_IN.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_hi_IN.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_hi_IN.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_hu.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_hu.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_hu.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_hu.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_it.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_it.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_it.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_it.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_ja.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_ja.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_ja.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_ko.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_ko.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_ko.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_ko.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_lt.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_lt.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_lt.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_lt.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_lv.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_lv.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_lv.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_lv.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_nb_NO.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_nb_NO.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_nb_NO.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_nb_NO.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_nl.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_nl.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_nl.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_nl.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_pl.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_pl.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_pl.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_pl.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_pt_PT.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_pt_PT.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_pt_PT.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_pt_PT.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_ro.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_ro.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_ro.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_ro.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_ru.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_ru.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_ru.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_ru.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_sl.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_sl.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_sl.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_sl.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_sv_SE.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_sv_SE.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_sv_SE.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_sv_SE.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_uk.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_uk.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_uk.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_uk.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_zh_CN.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_zh_CN.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_zh_CN.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_zh_CN.properties diff --git a/src/main/resources/hudson/tasks/test/TestObject/sidepanel_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestObject/sidepanel_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/test/TestObject/sidepanel_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index.jelly b/plugin/src/main/resources/hudson/tasks/test/TestResult/index.jelly similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index.jelly rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index.jelly diff --git a/src/main/resources/hudson/tasks/test/TestResult/index.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_ar.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_ar.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_ar.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_ar.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_bg.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_bg.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_bg.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_bg.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_cs.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_cs.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_cs.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_cs.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_da.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_da.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_da.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_de.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_de.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_de.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_de.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_eo.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_eo.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_eo.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_eo.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_es.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_es.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_es.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_et.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_et.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_et.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_et.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_fi.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_fi.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_fi.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_fi.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_fr.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_fr.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_fr.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_fr.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_it.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_it.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_it.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_it.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_ja.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_ja.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_ja.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_lv.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_lv.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_lv.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_lv.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_nb_NO.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_nb_NO.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_nb_NO.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_nb_NO.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_nl.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_nl.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_nl.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_nl.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_pl.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_pl.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_pl.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_pl.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_ro.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_ro.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_ro.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_ro.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_ru.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_ru.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_ru.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_ru.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_sl.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_sl.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_sl.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_sl.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_sv_SE.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_sv_SE.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_sv_SE.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_sv_SE.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_zh_CN.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_zh_CN.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_zh_CN.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_zh_CN.properties diff --git a/src/main/resources/hudson/tasks/test/TestResult/index_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/test/TestResult/index_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResult/index_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResult/index_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox.jelly b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox.jelly similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox.jelly rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox.jelly diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_bg.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_bg.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_bg.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_bg.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ca.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ca.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ca.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ca.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_cs.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_cs.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_cs.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_cs.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_da.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_da.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_da.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_de.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_de.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_de.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_de.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_es.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_es.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_es.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_es_AR.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_es_AR.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_es_AR.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_es_AR.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_et.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_et.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_et.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_et.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_fi.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_fi.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_fi.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_fi.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_fr.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_fr.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_fr.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_fr.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_he.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_he.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_he.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_he.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_hu.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_hu.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_hu.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_hu.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_it.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_it.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_it.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_it.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ja.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ja.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ja.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ko.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ko.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ko.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ko.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_lt.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_lt.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_lt.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_lt.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_lv.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_lv.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_lv.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_lv.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_nb_NO.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_nb_NO.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_nb_NO.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_nb_NO.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_nl.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_nl.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_nl.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_nl.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_pl.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_pl.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_pl.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_pl.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ro.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ro.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ro.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ro.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ru.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ru.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ru.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_ru.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_sl.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_sl.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_sl.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_sl.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_sv_SE.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_sv_SE.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_sv_SE.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_sv_SE.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_tr.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_tr.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_tr.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_tr.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_uk.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_uk.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_uk.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_uk.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_zh_CN.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_zh_CN.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_zh_CN.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_zh_CN.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/floatingBox_zh_TW.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/index.jelly b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/index.jelly similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/index.jelly rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/index.jelly diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain.jelly b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain.jelly similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain.jelly rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain.jelly diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ar.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ar.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ar.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ar.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ca.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ca.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ca.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ca.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_cs.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_cs.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_cs.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_cs.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_da.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_da.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_da.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_da.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_de.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_de.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_de.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_de.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_es.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_es.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_es.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_es.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_et.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_et.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_et.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_et.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_fi.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_fi.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_fi.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_fi.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_fr.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_fr.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_fr.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_fr.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_hu.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_hu.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_hu.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_hu.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_it.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_it.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_it.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_it.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ja.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ja.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ja.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ja.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ko.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ko.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ko.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ko.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_lv.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_lv.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_lv.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_lv.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_nb_NO.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_nb_NO.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_nb_NO.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_nb_NO.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_nl.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_nl.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_nl.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_nl.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_pl.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_pl.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_pl.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_pl.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_pt_BR.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_pt_BR.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_pt_BR.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_pt_BR.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ro.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ro.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ro.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ro.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ru.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ru.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ru.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_ru.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_sv_SE.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_sv_SE.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_sv_SE.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_sv_SE.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_tr.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_tr.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_tr.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_tr.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_uk.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_uk.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_uk.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_uk.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_zh_CN.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_zh_CN.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_zh_CN.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_zh_CN.properties diff --git a/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_zh_TW.properties b/plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_zh_TW.properties similarity index 100% rename from src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_zh_TW.properties rename to plugin/src/main/resources/hudson/tasks/test/TestResultProjectAction/jobMain_zh_TW.properties diff --git a/src/main/resources/index.jelly b/plugin/src/main/resources/index.jelly similarity index 100% rename from src/main/resources/index.jelly rename to plugin/src/main/resources/index.jelly diff --git a/src/main/resources/io/jenkins/plugins/junit/storage/JunitTestResultStorageConfiguration/config.jelly b/plugin/src/main/resources/io/jenkins/plugins/junit/storage/JunitTestResultStorageConfiguration/config.jelly similarity index 100% rename from src/main/resources/io/jenkins/plugins/junit/storage/JunitTestResultStorageConfiguration/config.jelly rename to plugin/src/main/resources/io/jenkins/plugins/junit/storage/JunitTestResultStorageConfiguration/config.jelly diff --git a/src/main/resources/io/jenkins/plugins/junit/storage/Messages.properties b/plugin/src/main/resources/io/jenkins/plugins/junit/storage/Messages.properties similarity index 100% rename from src/main/resources/io/jenkins/plugins/junit/storage/Messages.properties rename to plugin/src/main/resources/io/jenkins/plugins/junit/storage/Messages.properties diff --git a/src/main/resources/lib/hudson/test/aggregated-failed-tests.jelly b/plugin/src/main/resources/lib/hudson/test/aggregated-failed-tests.jelly similarity index 100% rename from src/main/resources/lib/hudson/test/aggregated-failed-tests.jelly rename to plugin/src/main/resources/lib/hudson/test/aggregated-failed-tests.jelly diff --git a/src/main/resources/lib/hudson/test/blockWrapper.jelly b/plugin/src/main/resources/lib/hudson/test/blockWrapper.jelly similarity index 100% rename from src/main/resources/lib/hudson/test/blockWrapper.jelly rename to plugin/src/main/resources/lib/hudson/test/blockWrapper.jelly diff --git a/src/main/resources/lib/hudson/test/failed-test.jelly b/plugin/src/main/resources/lib/hudson/test/failed-test.jelly similarity index 100% rename from src/main/resources/lib/hudson/test/failed-test.jelly rename to plugin/src/main/resources/lib/hudson/test/failed-test.jelly diff --git a/src/main/resources/lib/hudson/test/failed-test_ja.properties b/plugin/src/main/resources/lib/hudson/test/failed-test_ja.properties similarity index 100% rename from src/main/resources/lib/hudson/test/failed-test_ja.properties rename to plugin/src/main/resources/lib/hudson/test/failed-test_ja.properties diff --git a/src/main/resources/lib/hudson/test/failed-test_pt_BR.properties b/plugin/src/main/resources/lib/hudson/test/failed-test_pt_BR.properties similarity index 100% rename from src/main/resources/lib/hudson/test/failed-test_pt_BR.properties rename to plugin/src/main/resources/lib/hudson/test/failed-test_pt_BR.properties diff --git a/src/main/resources/lib/hudson/test/taglib b/plugin/src/main/resources/lib/hudson/test/taglib similarity index 100% rename from src/main/resources/lib/hudson/test/taglib rename to plugin/src/main/resources/lib/hudson/test/taglib diff --git a/src/main/resources/lib/hudson/test/test-result.jelly b/plugin/src/main/resources/lib/hudson/test/test-result.jelly similarity index 100% rename from src/main/resources/lib/hudson/test/test-result.jelly rename to plugin/src/main/resources/lib/hudson/test/test-result.jelly diff --git a/src/main/resources/lib/hudson/test/test-result.properties b/plugin/src/main/resources/lib/hudson/test/test-result.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result.properties rename to plugin/src/main/resources/lib/hudson/test/test-result.properties diff --git a/src/main/resources/lib/hudson/test/test-result_ar.properties b/plugin/src/main/resources/lib/hudson/test/test-result_ar.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_ar.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_ar.properties diff --git a/src/main/resources/lib/hudson/test/test-result_bg.properties b/plugin/src/main/resources/lib/hudson/test/test-result_bg.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_bg.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_bg.properties diff --git a/src/main/resources/lib/hudson/test/test-result_ca.properties b/plugin/src/main/resources/lib/hudson/test/test-result_ca.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_ca.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_ca.properties diff --git a/src/main/resources/lib/hudson/test/test-result_cs.properties b/plugin/src/main/resources/lib/hudson/test/test-result_cs.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_cs.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_cs.properties diff --git a/src/main/resources/lib/hudson/test/test-result_da.properties b/plugin/src/main/resources/lib/hudson/test/test-result_da.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_da.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_da.properties diff --git a/src/main/resources/lib/hudson/test/test-result_de.properties b/plugin/src/main/resources/lib/hudson/test/test-result_de.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_de.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_de.properties diff --git a/src/main/resources/lib/hudson/test/test-result_es.properties b/plugin/src/main/resources/lib/hudson/test/test-result_es.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_es.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_es.properties diff --git a/src/main/resources/lib/hudson/test/test-result_es_AR.properties b/plugin/src/main/resources/lib/hudson/test/test-result_es_AR.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_es_AR.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_es_AR.properties diff --git a/src/main/resources/lib/hudson/test/test-result_et.properties b/plugin/src/main/resources/lib/hudson/test/test-result_et.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_et.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_et.properties diff --git a/src/main/resources/lib/hudson/test/test-result_fi.properties b/plugin/src/main/resources/lib/hudson/test/test-result_fi.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_fi.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_fi.properties diff --git a/src/main/resources/lib/hudson/test/test-result_fr.properties b/plugin/src/main/resources/lib/hudson/test/test-result_fr.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_fr.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_fr.properties diff --git a/src/main/resources/lib/hudson/test/test-result_he.properties b/plugin/src/main/resources/lib/hudson/test/test-result_he.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_he.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_he.properties diff --git a/src/main/resources/lib/hudson/test/test-result_hi_IN.properties b/plugin/src/main/resources/lib/hudson/test/test-result_hi_IN.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_hi_IN.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_hi_IN.properties diff --git a/src/main/resources/lib/hudson/test/test-result_hu.properties b/plugin/src/main/resources/lib/hudson/test/test-result_hu.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_hu.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_hu.properties diff --git a/src/main/resources/lib/hudson/test/test-result_it.properties b/plugin/src/main/resources/lib/hudson/test/test-result_it.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_it.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_it.properties diff --git a/src/main/resources/lib/hudson/test/test-result_ja.properties b/plugin/src/main/resources/lib/hudson/test/test-result_ja.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_ja.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_ja.properties diff --git a/src/main/resources/lib/hudson/test/test-result_ko.properties b/plugin/src/main/resources/lib/hudson/test/test-result_ko.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_ko.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_ko.properties diff --git a/src/main/resources/lib/hudson/test/test-result_lv.properties b/plugin/src/main/resources/lib/hudson/test/test-result_lv.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_lv.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_lv.properties diff --git a/src/main/resources/lib/hudson/test/test-result_nb_NO.properties b/plugin/src/main/resources/lib/hudson/test/test-result_nb_NO.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_nb_NO.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_nb_NO.properties diff --git a/src/main/resources/lib/hudson/test/test-result_nl.properties b/plugin/src/main/resources/lib/hudson/test/test-result_nl.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_nl.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_nl.properties diff --git a/src/main/resources/lib/hudson/test/test-result_pl.properties b/plugin/src/main/resources/lib/hudson/test/test-result_pl.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_pl.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_pl.properties diff --git a/src/main/resources/lib/hudson/test/test-result_pt_BR.properties b/plugin/src/main/resources/lib/hudson/test/test-result_pt_BR.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_pt_BR.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_pt_BR.properties diff --git a/src/main/resources/lib/hudson/test/test-result_ro.properties b/plugin/src/main/resources/lib/hudson/test/test-result_ro.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_ro.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_ro.properties diff --git a/src/main/resources/lib/hudson/test/test-result_ru.properties b/plugin/src/main/resources/lib/hudson/test/test-result_ru.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_ru.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_ru.properties diff --git a/src/main/resources/lib/hudson/test/test-result_sk.properties b/plugin/src/main/resources/lib/hudson/test/test-result_sk.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_sk.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_sk.properties diff --git a/src/main/resources/lib/hudson/test/test-result_sv_SE.properties b/plugin/src/main/resources/lib/hudson/test/test-result_sv_SE.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_sv_SE.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_sv_SE.properties diff --git a/src/main/resources/lib/hudson/test/test-result_tr.properties b/plugin/src/main/resources/lib/hudson/test/test-result_tr.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_tr.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_tr.properties diff --git a/src/main/resources/lib/hudson/test/test-result_uk.properties b/plugin/src/main/resources/lib/hudson/test/test-result_uk.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_uk.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_uk.properties diff --git a/src/main/resources/lib/hudson/test/test-result_zh_CN.properties b/plugin/src/main/resources/lib/hudson/test/test-result_zh_CN.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_zh_CN.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_zh_CN.properties diff --git a/src/main/resources/lib/hudson/test/test-result_zh_TW.properties b/plugin/src/main/resources/lib/hudson/test/test-result_zh_TW.properties similarity index 100% rename from src/main/resources/lib/hudson/test/test-result_zh_TW.properties rename to plugin/src/main/resources/lib/hudson/test/test-result_zh_TW.properties diff --git a/src/main/webapp/history/history.css b/plugin/src/main/webapp/history/history.css similarity index 100% rename from src/main/webapp/history/history.css rename to plugin/src/main/webapp/history/history.css diff --git a/src/main/webapp/history/history.js b/plugin/src/main/webapp/history/history.js similarity index 100% rename from src/main/webapp/history/history.js rename to plugin/src/main/webapp/history/history.js diff --git a/src/test/java/hudson/tasks/junit/CaseResultTest.java b/plugin/src/test/java/hudson/tasks/junit/CaseResultTest.java similarity index 100% rename from src/test/java/hudson/tasks/junit/CaseResultTest.java rename to plugin/src/test/java/hudson/tasks/junit/CaseResultTest.java diff --git a/src/test/java/hudson/tasks/junit/CaseResultUnitTest.java b/plugin/src/test/java/hudson/tasks/junit/CaseResultUnitTest.java similarity index 100% rename from src/test/java/hudson/tasks/junit/CaseResultUnitTest.java rename to plugin/src/test/java/hudson/tasks/junit/CaseResultUnitTest.java diff --git a/src/test/java/hudson/tasks/junit/ClassResultTest.java b/plugin/src/test/java/hudson/tasks/junit/ClassResultTest.java similarity index 100% rename from src/test/java/hudson/tasks/junit/ClassResultTest.java rename to plugin/src/test/java/hudson/tasks/junit/ClassResultTest.java diff --git a/src/test/java/hudson/tasks/junit/HistoryTest.java b/plugin/src/test/java/hudson/tasks/junit/HistoryTest.java similarity index 100% rename from src/test/java/hudson/tasks/junit/HistoryTest.java rename to plugin/src/test/java/hudson/tasks/junit/HistoryTest.java diff --git a/src/test/java/hudson/tasks/junit/JUnitParserTest.java b/plugin/src/test/java/hudson/tasks/junit/JUnitParserTest.java similarity index 100% rename from src/test/java/hudson/tasks/junit/JUnitParserTest.java rename to plugin/src/test/java/hudson/tasks/junit/JUnitParserTest.java diff --git a/src/test/java/hudson/tasks/junit/JUnitResultArchiverTest.java b/plugin/src/test/java/hudson/tasks/junit/JUnitResultArchiverTest.java similarity index 100% rename from src/test/java/hudson/tasks/junit/JUnitResultArchiverTest.java rename to plugin/src/test/java/hudson/tasks/junit/JUnitResultArchiverTest.java diff --git a/src/test/java/hudson/tasks/junit/SuiteResult2Test.java b/plugin/src/test/java/hudson/tasks/junit/SuiteResult2Test.java similarity index 100% rename from src/test/java/hudson/tasks/junit/SuiteResult2Test.java rename to plugin/src/test/java/hudson/tasks/junit/SuiteResult2Test.java diff --git a/src/test/java/hudson/tasks/junit/SuiteResultTest.java b/plugin/src/test/java/hudson/tasks/junit/SuiteResultTest.java similarity index 100% rename from src/test/java/hudson/tasks/junit/SuiteResultTest.java rename to plugin/src/test/java/hudson/tasks/junit/SuiteResultTest.java diff --git a/src/test/java/hudson/tasks/junit/TestNameTransformerTest.java b/plugin/src/test/java/hudson/tasks/junit/TestNameTransformerTest.java similarity index 100% rename from src/test/java/hudson/tasks/junit/TestNameTransformerTest.java rename to plugin/src/test/java/hudson/tasks/junit/TestNameTransformerTest.java diff --git a/src/test/java/hudson/tasks/junit/TestResultLinksTest.java b/plugin/src/test/java/hudson/tasks/junit/TestResultLinksTest.java similarity index 100% rename from src/test/java/hudson/tasks/junit/TestResultLinksTest.java rename to plugin/src/test/java/hudson/tasks/junit/TestResultLinksTest.java diff --git a/src/test/java/hudson/tasks/junit/TestResultPublishingTest.java b/plugin/src/test/java/hudson/tasks/junit/TestResultPublishingTest.java similarity index 100% rename from src/test/java/hudson/tasks/junit/TestResultPublishingTest.java rename to plugin/src/test/java/hudson/tasks/junit/TestResultPublishingTest.java diff --git a/src/test/java/hudson/tasks/junit/TestResultTest.java b/plugin/src/test/java/hudson/tasks/junit/TestResultTest.java similarity index 100% rename from src/test/java/hudson/tasks/junit/TestResultTest.java rename to plugin/src/test/java/hudson/tasks/junit/TestResultTest.java diff --git a/src/test/java/hudson/tasks/junit/pipeline/JUnitResultsStepTest.java b/plugin/src/test/java/hudson/tasks/junit/pipeline/JUnitResultsStepTest.java similarity index 100% rename from src/test/java/hudson/tasks/junit/pipeline/JUnitResultsStepTest.java rename to plugin/src/test/java/hudson/tasks/junit/pipeline/JUnitResultsStepTest.java diff --git a/src/test/java/hudson/tasks/test/AggregatedTestResultPublisherTest.java b/plugin/src/test/java/hudson/tasks/test/AggregatedTestResultPublisherTest.java similarity index 100% rename from src/test/java/hudson/tasks/test/AggregatedTestResultPublisherTest.java rename to plugin/src/test/java/hudson/tasks/test/AggregatedTestResultPublisherTest.java diff --git a/src/test/java/hudson/tasks/test/BuildStatusSummaryTest.java b/plugin/src/test/java/hudson/tasks/test/BuildStatusSummaryTest.java similarity index 100% rename from src/test/java/hudson/tasks/test/BuildStatusSummaryTest.java rename to plugin/src/test/java/hudson/tasks/test/BuildStatusSummaryTest.java diff --git a/src/test/java/hudson/tasks/test/TestObjectTest.java b/plugin/src/test/java/hudson/tasks/test/TestObjectTest.java similarity index 100% rename from src/test/java/hudson/tasks/test/TestObjectTest.java rename to plugin/src/test/java/hudson/tasks/test/TestObjectTest.java diff --git a/src/test/java/hudson/tasks/test/TestReportUiTest.java b/plugin/src/test/java/hudson/tasks/test/TestReportUiTest.java similarity index 100% rename from src/test/java/hudson/tasks/test/TestReportUiTest.java rename to plugin/src/test/java/hudson/tasks/test/TestReportUiTest.java diff --git a/src/test/java/hudson/tasks/test/TestResultExtensionTest.java b/plugin/src/test/java/hudson/tasks/test/TestResultExtensionTest.java similarity index 100% rename from src/test/java/hudson/tasks/test/TestResultExtensionTest.java rename to plugin/src/test/java/hudson/tasks/test/TestResultExtensionTest.java diff --git a/src/test/java/hudson/tasks/test/TrivialTestResult.java b/plugin/src/test/java/hudson/tasks/test/TrivialTestResult.java similarity index 100% rename from src/test/java/hudson/tasks/test/TrivialTestResult.java rename to plugin/src/test/java/hudson/tasks/test/TrivialTestResult.java diff --git a/src/test/java/hudson/tasks/test/TrivialTestResultAction.java b/plugin/src/test/java/hudson/tasks/test/TrivialTestResultAction.java similarity index 100% rename from src/test/java/hudson/tasks/test/TrivialTestResultAction.java rename to plugin/src/test/java/hudson/tasks/test/TrivialTestResultAction.java diff --git a/src/test/java/hudson/tasks/test/TrivialTestResultRecorder.java b/plugin/src/test/java/hudson/tasks/test/TrivialTestResultRecorder.java similarity index 100% rename from src/test/java/hudson/tasks/test/TrivialTestResultRecorder.java rename to plugin/src/test/java/hudson/tasks/test/TrivialTestResultRecorder.java diff --git a/src/test/java/hudson/tasks/test/helper/AbstractPage.java b/plugin/src/test/java/hudson/tasks/test/helper/AbstractPage.java similarity index 100% rename from src/test/java/hudson/tasks/test/helper/AbstractPage.java rename to plugin/src/test/java/hudson/tasks/test/helper/AbstractPage.java diff --git a/src/test/java/hudson/tasks/test/helper/AbstractTestResultLink.java b/plugin/src/test/java/hudson/tasks/test/helper/AbstractTestResultLink.java similarity index 100% rename from src/test/java/hudson/tasks/test/helper/AbstractTestResultLink.java rename to plugin/src/test/java/hudson/tasks/test/helper/AbstractTestResultLink.java diff --git a/src/test/java/hudson/tasks/test/helper/BuildPage.java b/plugin/src/test/java/hudson/tasks/test/helper/BuildPage.java similarity index 100% rename from src/test/java/hudson/tasks/test/helper/BuildPage.java rename to plugin/src/test/java/hudson/tasks/test/helper/BuildPage.java diff --git a/src/test/java/hudson/tasks/test/helper/LatestTestResultLink.java b/plugin/src/test/java/hudson/tasks/test/helper/LatestTestResultLink.java similarity index 100% rename from src/test/java/hudson/tasks/test/helper/LatestTestResultLink.java rename to plugin/src/test/java/hudson/tasks/test/helper/LatestTestResultLink.java diff --git a/src/test/java/hudson/tasks/test/helper/ProjectPage.java b/plugin/src/test/java/hudson/tasks/test/helper/ProjectPage.java similarity index 100% rename from src/test/java/hudson/tasks/test/helper/ProjectPage.java rename to plugin/src/test/java/hudson/tasks/test/helper/ProjectPage.java diff --git a/src/test/java/hudson/tasks/test/helper/TestResultLink.java b/plugin/src/test/java/hudson/tasks/test/helper/TestResultLink.java similarity index 100% rename from src/test/java/hudson/tasks/test/helper/TestResultLink.java rename to plugin/src/test/java/hudson/tasks/test/helper/TestResultLink.java diff --git a/src/test/java/hudson/tasks/test/helper/TestResultsPage.java b/plugin/src/test/java/hudson/tasks/test/helper/TestResultsPage.java similarity index 100% rename from src/test/java/hudson/tasks/test/helper/TestResultsPage.java rename to plugin/src/test/java/hudson/tasks/test/helper/TestResultsPage.java diff --git a/src/test/java/io/jenkins/plugins/junit/checks/JUnitChecksPublisherTest.java b/plugin/src/test/java/io/jenkins/plugins/junit/checks/JUnitChecksPublisherTest.java similarity index 100% rename from src/test/java/io/jenkins/plugins/junit/checks/JUnitChecksPublisherTest.java rename to plugin/src/test/java/io/jenkins/plugins/junit/checks/JUnitChecksPublisherTest.java diff --git a/src/test/java/io/jenkins/plugins/junit/storage/JunitTestResultStorageConfigurationTest.java b/plugin/src/test/java/io/jenkins/plugins/junit/storage/JunitTestResultStorageConfigurationTest.java similarity index 100% rename from src/test/java/io/jenkins/plugins/junit/storage/JunitTestResultStorageConfigurationTest.java rename to plugin/src/test/java/io/jenkins/plugins/junit/storage/JunitTestResultStorageConfigurationTest.java diff --git a/src/test/java/io/jenkins/plugins/junit/storage/TestResultStorageJunitTest.java b/plugin/src/test/java/io/jenkins/plugins/junit/storage/TestResultStorageJunitTest.java similarity index 100% rename from src/test/java/io/jenkins/plugins/junit/storage/TestResultStorageJunitTest.java rename to plugin/src/test/java/io/jenkins/plugins/junit/storage/TestResultStorageJunitTest.java diff --git a/src/test/java/io/jenkins/plugins/junit/storage/benchmarks/BenchmarkRunner.java b/plugin/src/test/java/io/jenkins/plugins/junit/storage/benchmarks/BenchmarkRunner.java similarity index 100% rename from src/test/java/io/jenkins/plugins/junit/storage/benchmarks/BenchmarkRunner.java rename to plugin/src/test/java/io/jenkins/plugins/junit/storage/benchmarks/BenchmarkRunner.java diff --git a/src/test/java/io/jenkins/plugins/junit/storage/benchmarks/TrendGraphBenchmark.java b/plugin/src/test/java/io/jenkins/plugins/junit/storage/benchmarks/TrendGraphBenchmark.java similarity index 100% rename from src/test/java/io/jenkins/plugins/junit/storage/benchmarks/TrendGraphBenchmark.java rename to plugin/src/test/java/io/jenkins/plugins/junit/storage/benchmarks/TrendGraphBenchmark.java diff --git a/src/test/resources/hudson/tasks/junit/HistoryTest.zip b/plugin/src/test/resources/hudson/tasks/junit/HistoryTest.zip similarity index 100% rename from src/test/resources/hudson/tasks/junit/HistoryTest.zip rename to plugin/src/test/resources/hudson/tasks/junit/HistoryTest.zip diff --git a/src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_a1.xml b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_a1.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_a1.xml rename to plugin/src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_a1.xml diff --git a/src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_a2.xml b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_a2.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_a2.xml rename to plugin/src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_a2.xml diff --git a/src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_b.xml b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_b.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_b.xml rename to plugin/src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_b.xml diff --git a/src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_b_duplicate.xml b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_b_duplicate.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_b_duplicate.xml rename to plugin/src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_b_duplicate.xml diff --git a/src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_b_nonduplicate.xml b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_b_nonduplicate.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_b_nonduplicate.xml rename to plugin/src/test/resources/hudson/tasks/junit/JENKINS-12457/TestSuite_b_nonduplicate.xml diff --git a/src/test/resources/hudson/tasks/junit/JENKINS-13214/27449.xml b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-13214/27449.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/JENKINS-13214/27449.xml rename to plugin/src/test/resources/hudson/tasks/junit/JENKINS-13214/27449.xml diff --git a/src/test/resources/hudson/tasks/junit/JENKINS-13214/27540.xml b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-13214/27540.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/JENKINS-13214/27540.xml rename to plugin/src/test/resources/hudson/tasks/junit/JENKINS-13214/27540.xml diff --git a/src/test/resources/hudson/tasks/junit/JENKINS-13214/29734.xml b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-13214/29734.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/JENKINS-13214/29734.xml rename to plugin/src/test/resources/hudson/tasks/junit/JENKINS-13214/29734.xml diff --git a/src/test/resources/hudson/tasks/junit/JENKINS-30413.xml b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-30413.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/JENKINS-30413.xml rename to plugin/src/test/resources/hudson/tasks/junit/JENKINS-30413.xml diff --git a/src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_first.xml b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_first.xml similarity index 98% rename from src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_first.xml rename to plugin/src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_first.xml index d2bc3dc8f..899c06571 100644 --- a/src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_first.xml +++ b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_first.xml @@ -1,6 +1,6 @@ - - - - - + + + + + \ No newline at end of file diff --git a/src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_second.xml b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_second.xml similarity index 98% rename from src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_second.xml rename to plugin/src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_second.xml index 362f14e53..2776512bb 100644 --- a/src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_second.xml +++ b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_second.xml @@ -1,13 +1,13 @@ - - - - - - WARNING: Use a program name that matches the source file name - Category: COBOL Code Review – Naming Conventions - File: /project/PROGRAM.cbl - Line: 2 - - - + + + + + + WARNING: Use a program name that matches the source file name + Category: COBOL Code Review – Naming Conventions + File: /project/PROGRAM.cbl + Line: 2 + + + \ No newline at end of file diff --git a/src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_second_dup_first.xml b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_second_dup_first.xml similarity index 98% rename from src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_second_dup_first.xml rename to plugin/src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_second_dup_first.xml index 9ba54eef2..6e14a0ee9 100644 --- a/src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_second_dup_first.xml +++ b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-41134/TestSuite_second_dup_first.xml @@ -1,13 +1,13 @@ - - - - - - WARNING: Use a program name that matches the source file name - Category: COBOL Code Review – Naming Conventions - File: /project/PROGRAM.cbl - Line: 2 - - - + + + + + + WARNING: Use a program name that matches the source file name + Category: COBOL Code Review – Naming Conventions + File: /project/PROGRAM.cbl + Line: 2 + + + \ No newline at end of file diff --git a/src/test/resources/hudson/tasks/junit/JENKINS-42438/junit-report-1.xml b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-42438/junit-report-1.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/JENKINS-42438/junit-report-1.xml rename to plugin/src/test/resources/hudson/tasks/junit/JENKINS-42438/junit-report-1.xml diff --git a/src/test/resources/hudson/tasks/junit/JENKINS-48583/TEST-com.sample.test.TestMessage.xml b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-48583/TEST-com.sample.test.TestMessage.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/JENKINS-48583/TEST-com.sample.test.TestMessage.xml rename to plugin/src/test/resources/hudson/tasks/junit/JENKINS-48583/TEST-com.sample.test.TestMessage.xml diff --git a/src/test/resources/hudson/tasks/junit/JENKINS-48583/TEST-com.sample.test.TestMessage2.xml b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-48583/TEST-com.sample.test.TestMessage2.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/JENKINS-48583/TEST-com.sample.test.TestMessage2.xml rename to plugin/src/test/resources/hudson/tasks/junit/JENKINS-48583/TEST-com.sample.test.TestMessage2.xml diff --git a/src/test/resources/hudson/tasks/junit/JENKINS-48583/TESTS-TestSuites.xml b/plugin/src/test/resources/hudson/tasks/junit/JENKINS-48583/TESTS-TestSuites.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/JENKINS-48583/TESTS-TestSuites.xml rename to plugin/src/test/resources/hudson/tasks/junit/JENKINS-48583/TESTS-TestSuites.xml diff --git a/src/test/resources/hudson/tasks/junit/JUnitParserTest.zip b/plugin/src/test/resources/hudson/tasks/junit/JUnitParserTest.zip similarity index 100% rename from src/test/resources/hudson/tasks/junit/JUnitParserTest.zip rename to plugin/src/test/resources/hudson/tasks/junit/JUnitParserTest.zip diff --git a/src/test/resources/hudson/tasks/junit/JUnitResultArchiverTest/All.zip b/plugin/src/test/resources/hudson/tasks/junit/JUnitResultArchiverTest/All.zip similarity index 100% rename from src/test/resources/hudson/tasks/junit/JUnitResultArchiverTest/All.zip rename to plugin/src/test/resources/hudson/tasks/junit/JUnitResultArchiverTest/All.zip diff --git a/src/test/resources/hudson/tasks/junit/JUnitResultArchiverTest/MockTestDataPublisher/config.jelly b/plugin/src/test/resources/hudson/tasks/junit/JUnitResultArchiverTest/MockTestDataPublisher/config.jelly similarity index 100% rename from src/test/resources/hudson/tasks/junit/JUnitResultArchiverTest/MockTestDataPublisher/config.jelly rename to plugin/src/test/resources/hudson/tasks/junit/JUnitResultArchiverTest/MockTestDataPublisher/config.jelly diff --git a/src/test/resources/hudson/tasks/junit/SKIPPED_MESSAGE/afterSkippedResult.xml b/plugin/src/test/resources/hudson/tasks/junit/SKIPPED_MESSAGE/afterSkippedResult.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/SKIPPED_MESSAGE/afterSkippedResult.xml rename to plugin/src/test/resources/hudson/tasks/junit/SKIPPED_MESSAGE/afterSkippedResult.xml diff --git a/src/test/resources/hudson/tasks/junit/SKIPPED_MESSAGE/skippedTestResult.xml b/plugin/src/test/resources/hudson/tasks/junit/SKIPPED_MESSAGE/skippedTestResult.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/SKIPPED_MESSAGE/skippedTestResult.xml rename to plugin/src/test/resources/hudson/tasks/junit/SKIPPED_MESSAGE/skippedTestResult.xml diff --git a/src/test/resources/hudson/tasks/junit/TestResultLinksTest.zip b/plugin/src/test/resources/hudson/tasks/junit/TestResultLinksTest.zip similarity index 100% rename from src/test/resources/hudson/tasks/junit/TestResultLinksTest.zip rename to plugin/src/test/resources/hudson/tasks/junit/TestResultLinksTest.zip diff --git a/src/test/resources/hudson/tasks/junit/TestResultPublishingTest.zip b/plugin/src/test/resources/hudson/tasks/junit/TestResultPublishingTest.zip similarity index 100% rename from src/test/resources/hudson/tasks/junit/TestResultPublishingTest.zip rename to plugin/src/test/resources/hudson/tasks/junit/TestResultPublishingTest.zip diff --git a/src/test/resources/hudson/tasks/junit/eclipse-plugin-test-report.xml b/plugin/src/test/resources/hudson/tasks/junit/eclipse-plugin-test-report.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/eclipse-plugin-test-report.xml rename to plugin/src/test/resources/hudson/tasks/junit/eclipse-plugin-test-report.xml diff --git a/src/test/resources/hudson/tasks/junit/junit-report-1233.xml b/plugin/src/test/resources/hudson/tasks/junit/junit-report-1233.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/junit-report-1233.xml rename to plugin/src/test/resources/hudson/tasks/junit/junit-report-1233.xml diff --git a/src/test/resources/hudson/tasks/junit/junit-report-1463.xml b/plugin/src/test/resources/hudson/tasks/junit/junit-report-1463.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/junit-report-1463.xml rename to plugin/src/test/resources/hudson/tasks/junit/junit-report-1463.xml diff --git a/src/test/resources/hudson/tasks/junit/junit-report-1472.xml b/plugin/src/test/resources/hudson/tasks/junit/junit-report-1472.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/junit-report-1472.xml rename to plugin/src/test/resources/hudson/tasks/junit/junit-report-1472.xml diff --git a/src/test/resources/hudson/tasks/junit/junit-report-20090516.xml b/plugin/src/test/resources/hudson/tasks/junit/junit-report-20090516.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/junit-report-20090516.xml rename to plugin/src/test/resources/hudson/tasks/junit/junit-report-20090516.xml diff --git a/src/test/resources/hudson/tasks/junit/junit-report-2874.xml b/plugin/src/test/resources/hudson/tasks/junit/junit-report-2874.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/junit-report-2874.xml rename to plugin/src/test/resources/hudson/tasks/junit/junit-report-2874.xml diff --git a/src/test/resources/hudson/tasks/junit/junit-report-6700.xml b/plugin/src/test/resources/hudson/tasks/junit/junit-report-6700.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/junit-report-6700.xml rename to plugin/src/test/resources/hudson/tasks/junit/junit-report-6700.xml diff --git a/src/test/resources/hudson/tasks/junit/junit-report-empty-testcasename.xml b/plugin/src/test/resources/hudson/tasks/junit/junit-report-empty-testcasename.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/junit-report-empty-testcasename.xml rename to plugin/src/test/resources/hudson/tasks/junit/junit-report-empty-testcasename.xml diff --git a/src/test/resources/hudson/tasks/junit/junit-report-errror-details.xml b/plugin/src/test/resources/hudson/tasks/junit/junit-report-errror-details.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/junit-report-errror-details.xml rename to plugin/src/test/resources/hudson/tasks/junit/junit-report-errror-details.xml diff --git a/src/test/resources/hudson/tasks/junit/junit-report-nested-testsuites.xml b/plugin/src/test/resources/hudson/tasks/junit/junit-report-nested-testsuites.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/junit-report-nested-testsuites.xml rename to plugin/src/test/resources/hudson/tasks/junit/junit-report-nested-testsuites.xml diff --git a/src/test/resources/hudson/tasks/junit/junit-report-testsuite-time-attrs.xml b/plugin/src/test/resources/hudson/tasks/junit/junit-report-testsuite-time-attrs.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/junit-report-testsuite-time-attrs.xml rename to plugin/src/test/resources/hudson/tasks/junit/junit-report-testsuite-time-attrs.xml diff --git a/src/test/resources/hudson/tasks/junit/junit-report-time-aggregation.xml b/plugin/src/test/resources/hudson/tasks/junit/junit-report-time-aggregation.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/junit-report-time-aggregation.xml rename to plugin/src/test/resources/hudson/tasks/junit/junit-report-time-aggregation.xml diff --git a/src/test/resources/hudson/tasks/junit/junit-report-time-aggregation2.xml b/plugin/src/test/resources/hudson/tasks/junit/junit-report-time-aggregation2.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/junit-report-time-aggregation2.xml rename to plugin/src/test/resources/hudson/tasks/junit/junit-report-time-aggregation2.xml diff --git a/src/test/resources/hudson/tasks/junit/junitResult.xml b/plugin/src/test/resources/hudson/tasks/junit/junitResult.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/junitResult.xml rename to plugin/src/test/resources/hudson/tasks/junit/junitResult.xml diff --git a/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-first-1.xml b/plugin/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-first-1.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-first-1.xml rename to plugin/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-first-1.xml diff --git a/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-first-2.xml b/plugin/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-first-2.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-first-2.xml rename to plugin/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-first-2.xml diff --git a/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-first-3.xml b/plugin/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-first-3.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-first-3.xml rename to plugin/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-first-3.xml diff --git a/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-second-1.xml b/plugin/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-second-1.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-second-1.xml rename to plugin/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-second-1.xml diff --git a/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-second-2.xml b/plugin/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-second-2.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-second-2.xml rename to plugin/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-second-2.xml diff --git a/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-second-3.xml b/plugin/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-second-3.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-second-3.xml rename to plugin/src/test/resources/hudson/tasks/junit/pipeline/junit-report-testTrends-second-3.xml diff --git a/src/test/resources/hudson/tasks/junit/testXxe-oob.xml b/plugin/src/test/resources/hudson/tasks/junit/testXxe-oob.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/testXxe-oob.xml rename to plugin/src/test/resources/hudson/tasks/junit/testXxe-oob.xml diff --git a/src/test/resources/hudson/tasks/junit/testXxe-xxe.xml b/plugin/src/test/resources/hudson/tasks/junit/testXxe-xxe.xml similarity index 100% rename from src/test/resources/hudson/tasks/junit/testXxe-xxe.xml rename to plugin/src/test/resources/hudson/tasks/junit/testXxe-xxe.xml diff --git a/src/test/resources/hudson/tasks/test/AbstractTestResultExtensionTest.zip b/plugin/src/test/resources/hudson/tasks/test/AbstractTestResultExtensionTest.zip similarity index 100% rename from src/test/resources/hudson/tasks/test/AbstractTestResultExtensionTest.zip rename to plugin/src/test/resources/hudson/tasks/test/AbstractTestResultExtensionTest.zip diff --git a/src/test/resources/hudson/tasks/test/AggregatedTestResultPublisherTest.zip b/plugin/src/test/resources/hudson/tasks/test/AggregatedTestResultPublisherTest.zip similarity index 100% rename from src/test/resources/hudson/tasks/test/AggregatedTestResultPublisherTest.zip rename to plugin/src/test/resources/hudson/tasks/test/AggregatedTestResultPublisherTest.zip diff --git a/src/test/resources/hudson/tasks/test/TrivialTestResult/body.jelly b/plugin/src/test/resources/hudson/tasks/test/TrivialTestResult/body.jelly similarity index 100% rename from src/test/resources/hudson/tasks/test/TrivialTestResult/body.jelly rename to plugin/src/test/resources/hudson/tasks/test/TrivialTestResult/body.jelly diff --git a/src/test/resources/hudson/tasks/test/TrivialTestResult/body_es.properties b/plugin/src/test/resources/hudson/tasks/test/TrivialTestResult/body_es.properties similarity index 100% rename from src/test/resources/hudson/tasks/test/TrivialTestResult/body_es.properties rename to plugin/src/test/resources/hudson/tasks/test/TrivialTestResult/body_es.properties diff --git a/src/test/resources/io/jenkins/plugins/junit/storage/configuration-as-code-expected.yml b/plugin/src/test/resources/io/jenkins/plugins/junit/storage/configuration-as-code-expected.yml similarity index 100% rename from src/test/resources/io/jenkins/plugins/junit/storage/configuration-as-code-expected.yml rename to plugin/src/test/resources/io/jenkins/plugins/junit/storage/configuration-as-code-expected.yml diff --git a/src/test/resources/io/jenkins/plugins/junit/storage/configuration-as-code.yml b/plugin/src/test/resources/io/jenkins/plugins/junit/storage/configuration-as-code.yml similarity index 100% rename from src/test/resources/io/jenkins/plugins/junit/storage/configuration-as-code.yml rename to plugin/src/test/resources/io/jenkins/plugins/junit/storage/configuration-as-code.yml diff --git a/pom.xml b/pom.xml index 8add2733b..262451cdf 100644 --- a/pom.xml +++ b/pom.xml @@ -1,207 +1,49 @@ - - 4.0.0 - - org.jenkins-ci.plugins - plugin - 4.31 - - - junit - ${revision}${changelist} - hpi - JUnit Plugin - Allows JUnit-format test results to be published. - https://github.com/jenkinsci/junit-plugin - - 1.56 - -SNAPSHOT - jenkinsci/${project.artifactId}-plugin - 2.321 - 8 - false - - - - MIT - https://opensource.org/licenses/MIT - - - - scm:git:git://github.com/${gitHubRepo}.git - scm:git:git@github.com:${gitHubRepo}.git - https://github.com/${gitHubRepo} - ${scmTag} - - - - repo.jenkins-ci.org - https://repo.jenkins-ci.org/public/ - - - - - repo.jenkins-ci.org - https://repo.jenkins-ci.org/public/ - - - - - io.jenkins.plugins - echarts-api - - - io.jenkins.plugins - checks-api - - - io.jenkins.plugins - checks-api - test - tests - - - io.jenkins.plugins - plugin-util-api - - - org.jenkins-ci.plugins - display-url-api - - - io.jenkins.plugins - github-checks - 1.0.16 - test - - - io.jenkins.plugins - bootstrap4-api - - - org.jenkins-ci.plugins.workflow - workflow-step-api - - - org.jenkins-ci.plugins.workflow - workflow-api - - - org.jenkins-ci.plugins - script-security - - - org.mockito - mockito-core - test - - - org.jenkins-ci.plugins - matrix-project - test - - - org.jenkins-ci.plugins.workflow - workflow-cps - test - - - org.jenkins-ci.plugins.workflow - workflow-job - test - - - org.jenkins-ci.plugins.workflow - workflow-cps - tests - test - - - org.jenkins-ci.plugins.workflow - workflow-basic-steps - test - - - org.jenkins-ci.plugins.workflow - workflow-support - tests - test - - - org.jenkins-ci.plugins - pipeline-stage-step - test - - - org.jenkins-ci.plugins.workflow - workflow-durable-task-step - test - - - org.jenkinsci.plugins - pipeline-model-definition - test - - - joda-time - joda-time - - - - - org.jenkins-ci.plugins - database - 128.vaa83e142f7f2 - test - - - antlr - antlr - - - - - org.jenkins-ci.plugins - database-h2 - 1.2 - test - - - io.jenkins - configuration-as-code - test - - - io.jenkins.configuration-as-code - test-harness - test - - - - commons-validator - commons-validator - - - - - org.jenkins-ci.plugins - jackson2-api - - - - - - io.jenkins.tools.bom - bom-2.303.x - 1117.v62a_f6a_01de98 - import - pom - - - - net.bytebuddy - byte-buddy - 1.12.8 - - - + + 4.0.0 + + io.jenkins.plugins + junit-parent + pom + UNVERSIONED + + Aggregator for Junit Plugin + + + plugin + ui-tests + + + + 1.8 + 3.8.1 + 2.8.2 + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + ${maven-deploy-plugin.version} + + true + + + + + + + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${java.version} + ${java.version} + ${java.version} + ${java.version} + + + + + diff --git a/ui-tests/pom.xml b/ui-tests/pom.xml new file mode 100644 index 000000000..f2167781f --- /dev/null +++ b/ui-tests/pom.xml @@ -0,0 +1,228 @@ + + 4.0.0 + + + edu.hm.hafner + codingstyle-pom + 2.16.0 + + + + io.jenkins.plugins + junit-ui-tests + jar + UNVERSIONED + UI Tests of JUnit Plugin + + + 2.333 + 2.3 + 2.28.0 + + + + + + org.jenkins-ci.main + jenkins-core + ${jenkins.version} + + + + + + + org.jenkins-ci + acceptance-test-harness + 1.108 + + + org.apache.httpcomponents + httpclient + 4.5.13 + test + + + org.junit.vintage + junit-vintage-engine + ${junit.version} + test + + + net.javacrumbs.json-unit + json-unit-assertj + ${json-unit-assertj.version} + test + + + net.javacrumbs.json-unit + json-unit-json-path + ${json-unit-assertj.version} + test + + + + + + maven.jenkins-ci.org + https://repo.jenkins-ci.org/releases/ + + + incrementals.jenkins-ci.org + https://repo.jenkins-ci.org/incrementals/ + + + + + + no-ui-tests-on-windows + + + windows + + + + true + + + + no-ui-tests-on-mac + + + mac + + + + true + + + + ui-tests-locally + + + + org.apache.maven.plugins + maven-surefire-plugin + + false + false + + ../plugin/target/test-classes/test-dependencies + ${jenkins.version} + firefox + + 1 + + **/*Tests.java + **/*Test.java + + + + + + + false + + + + consume-incrementals + + + might-produce-incrementals + + + + + + + org.jacoco + jacoco-maven-plugin + + true + + + + org.assertj + assertj-assertions-generator-maven-plugin + + + io.jenkins.plugins.analysis.junit + + + .*Test + .*Table + + io.jenkins.plugins.analysis.junit + + + + org.apache.maven.plugins + maven-resources-plugin + + + copy-resources + process-resources + + copy-resources + + + ../plugin/target/test-classes/test-dependencies + + + ../plugin/target/ + + junit.hpi + + false + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + false + false + + ../plugin/target/test-classes/test-dependencies + ${jenkins.version} + firefox-container + + 1 + + **/SmokeTests.java + + + + + org.apache.maven.plugins + maven-help-plugin + 3.2.0 + + + show-profiles + compile + + active-profiles + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + junit.ui.tests + + + + + + + diff --git a/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/BuildChartEntry.java b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/BuildChartEntry.java new file mode 100644 index 000000000..66739d39c --- /dev/null +++ b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/BuildChartEntry.java @@ -0,0 +1,65 @@ +package io.jenkins.plugins.analysis.junit; + +/** + * The entry of the build chart, located on the project overview. + * + * @author Michael Müller + * @author Nikolas Paripovic + */ +public class BuildChartEntry { + + final int buildId; + + final int numberOfSkippedTests; + + final int numberOfFailedTests; + + final int numberOfPassedTests; + + /** + * Custom constructor. Creates object. + * @param buildId the build id + * @param numberOfSkippedTests the number of skipped tests + * @param numberOfFailedTests the number of failed tests + * @param numberOfPassedTests the number of passed tests + */ + public BuildChartEntry(final int buildId, final int numberOfSkippedTests, final int numberOfFailedTests, + final int numberOfPassedTests) { + this.buildId = buildId; + this.numberOfSkippedTests = numberOfSkippedTests; + this.numberOfFailedTests = numberOfFailedTests; + this.numberOfPassedTests = numberOfPassedTests; + } + + /** + * Gets the build id. + * @return the build id + */ + public int getBuildId() { + return buildId; + } + + /** + * Gets the number of skipped tests. + * @return the number of skipped tests + */ + public int getNumberOfSkippedTests() { + return numberOfSkippedTests; + } + + /** + * Gets the number of failed tests. + * @return the number of failed tests + */ + public int getNumberOfFailedTests() { + return numberOfFailedTests; + } + + /** + * Gets the number of passed tests. + * @return the number of passed tests + */ + public int getNumberOfPassedTests() { + return numberOfPassedTests; + } +} diff --git a/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/JUnitBuildSummary.java b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/JUnitBuildSummary.java new file mode 100644 index 000000000..d605030e3 --- /dev/null +++ b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/JUnitBuildSummary.java @@ -0,0 +1,164 @@ +package io.jenkins.plugins.analysis.junit; + +import java.util.List; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Optional; +import java.util.stream.Collectors; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import org.jenkinsci.test.acceptance.po.Build; +import org.jenkinsci.test.acceptance.po.PageObject; + +import io.jenkins.plugins.analysis.junit.testresults.BuildTestResults; + +/** + * {@link PageObject} representing the JUnit summary on the build page of a job. + * + * @author Michael Müller + * @author Nikolas Paripovic + */ +public class JUnitBuildSummary extends PageObject { + + private final WebElement summaryIcon; + private final WebElement summaryContent; + + private final WebElement titleLink; + private final List failedTestLinks; + + /** + * Creates a new page object representing the JUnit summary on the build page of a job. + * + * @param parent + * a finished build configured with a static analysis tool + */ + public JUnitBuildSummary(final Build parent) { + super(parent, parent.url("testReport")); + + WebElement table = getElement(By.cssSelector("#main-panel table")); + List tableEntries = table.findElements(By.cssSelector("tbody tr")); + + WebElement junitBuildSummaryTableEntry = tableEntries.stream() + .filter(trElement -> findIconInTableEntry(trElement).isPresent()) + .filter(trElement -> findContentInTableEntry(trElement).isPresent()) + .findAny() + .orElseThrow(() -> new NoSuchElementException("junit build summary table")); + + summaryIcon = findIconInTableEntry(junitBuildSummaryTableEntry).get(); + summaryContent = findContentInTableEntry(junitBuildSummaryTableEntry).get(); + + titleLink = summaryContent.findElement(By.cssSelector("a")); + failedTestLinks = summaryContent.findElements(By.cssSelector("ul li a")); + } + + private Optional findIconInTableEntry(final WebElement tableEntry) { + return findOptionalElement(tableEntry, By.cssSelector("td img.icon-clipboard.icon-xlg")); + } + + private Optional findContentInTableEntry(final WebElement tableEntry) { + List foundElements = tableEntry.findElements(By.cssSelector("td")); + return foundElements.stream() + .filter(foundElement -> findOptionalElement(foundElement, By.cssSelector("a")).isPresent() + && findOptionalElement(foundElement, By.cssSelector("a")).get().getText().equals("Test Result")) + .findFirst(); + } + + private Optional findOptionalElement(final WebElement webElement, final By byArgument) { + List foundElements = webElement.findElements(byArgument); + return foundElements.isEmpty() ? Optional.empty() : Optional.of(foundElements.get(0)); + } + + /** + * Returns the title text of the summary. + * + * @return the title text + */ + public String getTitleText() { + return summaryContent.getText(); + } + + /** + * Returns the title link text of the summary. + * + * @return the title link text + */ + public String getTitleLinkText() { + String text = summaryContent.getText(); + return text.substring(0, text.indexOf('(') - 2); + } + + /** + * Returns the number of failures text in the title of the summary. + * + * @return the number of failures text in the title + */ + public String getTitleNumberOfFailuresText() { + String text = summaryContent.getText(); + return text.substring(text.indexOf('(') + 1, text.indexOf(')') - 1); + } + + + /** + * Returns the number of failures of this junit run. + * + * @return the number of failures + */ + public int getNumberOfFailures() { + return failedTestLinks.size(); + } + + /** + * Returns the failures' names, in appearance order. + * + * @return the failures' names + */ + public List getFailureNames() { + return failedTestLinks.stream() + .map(WebElement::getText) + .collect(Collectors.toList()); + } + + /** + * Returns the failures' target links, accessible by its name. + * Method {@link #getFailureNames()} could help to retrieve the origin order. + * + * @return the failures' target links + */ + public Map getFailureTargetLinksByName() { + return failedTestLinks.stream() + .collect(Collectors.toMap(WebElement::getText, failedTestLink -> failedTestLink.getAttribute("href"))); + } + + /** + * Opens the build test results page. + * + * @return build test results page object. + */ + public BuildTestResults openBuildTestResults() { + return openPage(titleLink, BuildTestResults.class); + } + + /** + * Opens the detail view of a test. + * + * @param testName name of a test. + * @return test detail page object. + */ + public TestDetail openTestDetailView(final String testName) { + WebElement link = failedTestLinks.stream() + .filter(failedTestLink -> failedTestLink.getText().equals(testName)) + .findFirst() + .orElseThrow(() -> new NoSuchElementException(testName)); + + return openPage(link, TestDetail.class); + } + + private T openPage(final WebElement link, final Class type) { + String href = link.getAttribute("href"); + + link.click(); + return newInstance(type, injector, url(href)); + } +} diff --git a/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/JUnitJobConfiguration.java b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/JUnitJobConfiguration.java new file mode 100644 index 000000000..02ffc8ef7 --- /dev/null +++ b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/JUnitJobConfiguration.java @@ -0,0 +1,82 @@ +package io.jenkins.plugins.analysis.junit; + +import org.jenkinsci.test.acceptance.po.AbstractStep; +import org.jenkinsci.test.acceptance.po.Control; +import org.jenkinsci.test.acceptance.po.Describable; +import org.jenkinsci.test.acceptance.po.Job; +import org.jenkinsci.test.acceptance.po.PageObject; +import org.jenkinsci.test.acceptance.po.PostBuildStep; + +/** + * {@link PageObject} representing the publish junit post build action in the freestyle job configuration. + * + * @author Michael Müller + * @author Nikolas Paripovic + */ +@Describable("Publish JUnit test result report") +public class JUnitJobConfiguration extends AbstractStep implements PostBuildStep { + private final Control retainLogStandardOutputError = control("/keepLongStdio"); + private final Control allowEmptyResults = control("/allowEmptyResults"); + private final Control skipPublishingChecks = control("/skipPublishingChecks"); + private final Control skipMarkingBuildAsUnstableOnTestFailure = control("/skipMarkingBuildUnstable"); + private final Control healthScaleFactor = control("/healthScaleFactor"); + private final Control testResults = control("testResults"); + + /** + * Creates a new page object representing the junit summary on the build page of a job. + * + * @param parent a created job + * @param path path of the + */ + public JUnitJobConfiguration(Job parent, String path) { + super(parent, path); + } + + /** + * Set test results file. + * @param value to set test results + */ + public void setTestResults(String value) { + this.testResults.set(value); + } + + /** + * Set checkbox to retain standard log output error. + * @param shouldRetainLogStandardOutputError Check or uncheck checkbox + */ + public void setRetainLogStandardOutputError(boolean shouldRetainLogStandardOutputError) { + this.retainLogStandardOutputError.check(shouldRetainLogStandardOutputError); + } + + /** + * Set checkbox to allow empty results. + * @param shouldAllowEmptyResults Check or uncheck checkbox + */ + public void setAllowEmptyResults(boolean shouldAllowEmptyResults) { + this.allowEmptyResults.check(shouldAllowEmptyResults); + } + + /** + * Set checkbox to skip publishing checks. + * @param shouldSkipPublishingChecks Check or uncheck checkbox + */ + public void setSkipPublishingChecks(boolean shouldSkipPublishingChecks) { + this.retainLogStandardOutputError.check(shouldSkipPublishingChecks); + } + + /** + * Set checkbox to skip mark build as unstable on test failure. + * @param shouldSkipMarkingBuildAsUnstableOnTestFailure Check or uncheck checkbox + */ + public void setSkipMarkingBuildAsUnstableOnTestFailure(boolean shouldSkipMarkingBuildAsUnstableOnTestFailure) { + this.skipMarkingBuildAsUnstableOnTestFailure.check(shouldSkipMarkingBuildAsUnstableOnTestFailure); + } + + /** + * Set input value of health scale factor. + * @param value value to set the health scale factor + */ + public void setHealthScaleFactor(String value) { + this.healthScaleFactor.set(value); + } +} diff --git a/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/JUnitProjectSummary.java b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/JUnitProjectSummary.java new file mode 100644 index 000000000..db1d5cef4 --- /dev/null +++ b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/JUnitProjectSummary.java @@ -0,0 +1,183 @@ +package io.jenkins.plugins.analysis.junit; + +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import com.gargoylesoftware.htmlunit.ScriptResult; + +import org.jenkinsci.test.acceptance.po.Build; +import org.jenkinsci.test.acceptance.po.PageObject; + +/** + * {@link PageObject} representing the JUnit summary on the job page. + * + * @author Michael Müller + * @author Nikolas Paripovic + */ +public class JUnitProjectSummary extends PageObject { + + private final WebElement summaryIcon; + private final WebElement summaryContent; + + private final WebElement titleLink; + + private final List buildChartEntries; + + /** + * Creates a new page object representing the JUnit summary on the job page. + * + * @param parent + * a finished build configured with a static analysis tool + */ + public JUnitProjectSummary(final Build parent) throws JSONException { + super(parent, parent.url("")); + + WebElement mainPanel = getElement(By.cssSelector("#main-panel")); + WebElement junitJobSummaryTableEntry = getJunitJobSummaryTableEntry(mainPanel); + + summaryIcon = findIconInTableEntry(junitJobSummaryTableEntry).get(); + summaryContent = findContentInTableEntry(junitJobSummaryTableEntry).get(); + titleLink = summaryContent.findElement(By.cssSelector("a")); + buildChartEntries = initializeBuildChartEntries(); + } + + /** + * Gets the title text of the summary. + * + * @return the title text + */ + public String getTitleText() { + return summaryContent.getText(); + } + + /** + * Gets the number of failures of this JUnit run. + * + * @return the number of failures + */ + public int getNumberOfFailures() { + String summaryContentText = summaryContent.getText().trim(); + int fromIndex = summaryContentText.indexOf('(') + 1; + int toIndex = summaryContentText.indexOf(" ", fromIndex); + return Integer.parseInt(summaryContentText.substring(fromIndex, toIndex)); + } + + /** + * Gets the failure difference. + * + * @return the failure difference + */ + public int getFailureDifference() { + String summaryContentText = summaryContent.getText().trim(); + int fromIndex = summaryContentText.indexOf('/') + 2; + int toIndex = summaryContentText.length() - 1; + return Integer.parseInt(summaryContentText.substring(fromIndex, toIndex)); + } + + /** + * Gets the entries of the build chart. + * + * @return the entries of the build chart + */ + public List getBuildChartEntries() { + return buildChartEntries; + } + + private WebElement getJunitJobSummaryTableEntry(final WebElement mainPanel) { + List tables = mainPanel.findElements(By.cssSelector("table tbody tr")); + return tables.stream() + .filter(trElement -> findIconInTableEntry(trElement).isPresent()) + .filter(trElement -> findContentInTableEntry(trElement).isPresent()) + .findAny() + .orElseThrow(() -> new NoSuchElementException("junit job summary table")); + } + + private List initializeBuildChartEntries() throws JSONException { + String canvasJson = getJUnitChart(); + return canvasJsonToBuildChartEntries(canvasJson); + } + + private String getJUnitChart() { + Object result = executeScript(String.format( + "delete(window.Array.prototype.toJSON) %n" + + "return JSON.stringify(echarts.getInstanceByDom(document.getElementsByClassName(\"echarts-trend\")[0]).getOption())")); + ScriptResult scriptResult = new ScriptResult(result); + + return scriptResult.getJavaScriptResult().toString(); + } + + private Optional findIconInTableEntry(final WebElement tableEntry) { + return findOptionalElement(tableEntry, By.cssSelector("td img.icon-clipboard.icon-xlg")); + } + + private Optional findContentInTableEntry(final WebElement tableEntry) { + List foundElements = tableEntry.findElements(By.cssSelector("td")); + return foundElements.stream() + .filter(foundElement -> findOptionalElement(foundElement, By.cssSelector("a")).isPresent() && + findOptionalElement(foundElement, By.cssSelector("a")).get() + .getText() + .equals("Latest Test Result")) + .findFirst(); + } + + private Optional findOptionalElement(final WebElement webElement, final By byArgument) { + List foundElements = webElement.findElements(byArgument); + return foundElements.isEmpty() ? Optional.empty() : Optional.of(foundElements.get(0)); + } + + private List canvasJsonToBuildChartEntries(final String canvasJson) throws JSONException { + JSONObject jsonObject = new JSONObject(canvasJson); + JSONArray buildIds = jsonObject.getJSONArray("xAxis").getJSONObject(0).getJSONArray("data"); + JSONArray series = jsonObject.getJSONArray("series"); + + JSONArray failedTestNumbers = null; + JSONArray skippedTestNumbers = null; + JSONArray passedTestNumbers = null; + + int seriesLength = series.length(); + for (int i = 0; i < seriesLength; i++) { + JSONObject currentObject = series.getJSONObject(i); + String seriesName = currentObject.getString("name"); + switch (seriesName) { + case "Failed": + failedTestNumbers = currentObject.getJSONArray("data"); + break; + case "Skipped": + skippedTestNumbers = currentObject.getJSONArray("data"); + break; + case "Passed": + passedTestNumbers = currentObject.getJSONArray("data"); + break; + } + } + + JSONArray finalFailedTestNumbers = failedTestNumbers; + JSONArray finalSkippedTestNumbers = skippedTestNumbers; + JSONArray finalPassedTestNumbers = passedTestNumbers; + return IntStream.range(0, buildIds.length()) + .boxed() + .map(index -> { + try { + String buildIdString = buildIds.getString(index); + int buildId = Integer.parseInt(buildIdString.trim().substring(1)); + int failedTests = Integer.parseInt(finalFailedTestNumbers.getString(index)); + int skippedTests = Integer.parseInt(finalSkippedTestNumbers.getString(index)); + int passedTests = Integer.parseInt(finalPassedTestNumbers.getString(index)); + return new BuildChartEntry(buildId, skippedTests, failedTests, passedTests); + } + catch (JSONException e) { + throw new NoSuchElementException(); + } + }) + .collect(Collectors.toList()); + } +} diff --git a/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/TestDetail.java b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/TestDetail.java new file mode 100644 index 000000000..f15d6d59d --- /dev/null +++ b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/TestDetail.java @@ -0,0 +1,159 @@ +package io.jenkins.plugins.analysis.junit; + +import java.net.URL; +import java.util.List; +import java.util.Optional; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import com.google.inject.Injector; + +import org.jenkinsci.test.acceptance.po.Build; +import org.jenkinsci.test.acceptance.po.PageObject; + +/** + * {@link PageObject} representing the detail view of a failed JUnit test. + * + * @author Michael Müller + * @author Nikolas Paripovic + */ +public class TestDetail extends PageObject { + private final WebElement title; + private final WebElement subTitle; + + private final Optional errorMessage; + private final Optional stackTrace; + private final Optional standardOutput; + + /** + * Creates a new page object representing the junit detail view of a failed JUnit test. + * + * @param parent + * a finished build configured with a static analysis tool + */ + public TestDetail(final Build parent) { + super(parent, parent.url("testReport")); + + WebElement pageContent = getElement(By.cssSelector("#main-panel")); + + title = pageContent.findElement(By.cssSelector("h1")); + subTitle = pageContent.findElement(By.cssSelector("p")); + + int errorMessageHeaderIndex = -1; + int stackTraceHeaderIndex = -1; + int standardOutputHeaderIndex = -1; + List pageContentChildren = pageContent.findElements(By.cssSelector("*")); + + int counter = 0; + for (WebElement element : pageContentChildren) { + if (element.getTagName().equals("h3")) { + if (element.getText().equals("Error Message")) { + errorMessageHeaderIndex = counter; + } + else if (element.getText().equals("Stacktrace")) { + stackTraceHeaderIndex = counter; + } + else if (element.getText().equals("Standard Output")) { + standardOutputHeaderIndex = counter; + } + } + ++counter; + } + + errorMessage = errorMessageHeaderIndex >= 0 ? Optional.of(pageContentChildren.get(errorMessageHeaderIndex + 1)) : Optional.empty(); + stackTrace = stackTraceHeaderIndex >= 0 ? Optional.of(pageContentChildren.get(stackTraceHeaderIndex + 1)) : Optional.empty(); + standardOutput = standardOutputHeaderIndex >= 0 ? Optional.of(pageContentChildren.get(standardOutputHeaderIndex + 1)) : Optional.empty(); + + } + + /** + * Creates an instance of the page displaying the details of the issues. This constructor is used for injecting a + * filtered instance of the page (e.g. by clicking on links which open a filtered instance of a AnalysisResult. + * + * @param injector + * the injector of the page + * @param url + * the url of the page + */ + @SuppressWarnings("unused") // Required to dynamically create page object using reflection + public TestDetail(final Injector injector, final URL url) { + super(injector, url); + + WebElement pageContent = getElement(By.cssSelector("#main-panel")); + + title = pageContent.findElement(By.cssSelector("h1")); + subTitle = pageContent.findElement(By.cssSelector("p")); + + int errorMessageHeaderIndex = -1; + int stackTraceHeaderIndex = -1; + int standardOutputHeaderIndex = -1; + List pageContentChildren = pageContent.findElements(By.cssSelector("*")); + + int counter = 0; + for (WebElement element : pageContentChildren) { + if (element.getTagName().equals("h3")) { + if (element.getText().equals("Error Message")) { + errorMessageHeaderIndex = counter; + } + else if (element.getText().equals("Stacktrace")) { + stackTraceHeaderIndex = counter; + } + else if (element.getText().equals("Standard Output")) { + standardOutputHeaderIndex = counter; + } + } + ++counter; + } + + errorMessage = errorMessageHeaderIndex >= 0 ? Optional.of(pageContentChildren.get(errorMessageHeaderIndex + 1)) : Optional.empty(); + stackTrace = stackTraceHeaderIndex >= 0 ? Optional.of(pageContentChildren.get(stackTraceHeaderIndex + 1)) : Optional.empty(); + standardOutput = standardOutputHeaderIndex >= 0 ? Optional.of(pageContentChildren.get(standardOutputHeaderIndex + 1)) : Optional.empty(); + } + + /** + * Returns the title of the detail view. + * + * @return the title of the detail view + */ + public String getTitle() { + return title.getText(); + } + + /** + * Returns the subtitle of the detail view, which is the test. + * + * @return the subtitle of the detail view + */ + public String getSubTitle() { + return subTitle.findElement(By.cssSelector("span")).getText() + subTitle.getText(); + } + + /** + * Returns the error message telling the user why the test has failed. + * + * @return the error message + */ + public Optional getErrorMessage() { + return errorMessage.map(WebElement::getText); + } + + /** + * Returns the stack trace providing more information about the failed test. + * + * @return the stack trace of the failed test + */ + public Optional getStackTrace() { + return stackTrace.map(WebElement::getText); + } + + /** + * Returns the standard output providing more information about the test. + * + * @return the standard output of the test + */ + public Optional getStandardOutput() { + return standardOutput.map(WebElement::getText); + } + +} diff --git a/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/BuildTestResults.java b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/BuildTestResults.java new file mode 100644 index 000000000..d24b3b9fe --- /dev/null +++ b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/BuildTestResults.java @@ -0,0 +1,114 @@ +package io.jenkins.plugins.analysis.junit.testresults; + +import java.net.URL; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Optional; +import java.util.stream.Collectors; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import com.google.inject.Injector; + +import org.jenkinsci.test.acceptance.po.Build; +import org.jenkinsci.test.acceptance.po.PageObject; + +import io.jenkins.plugins.analysis.junit.testresults.tableentry.PackageTableEntry; + +/** + * {@link PageObject} representing the first page of the test results of a build. + * + * @author Nikolas Paripovic + * @author Michael Müller + */ +public class BuildTestResults extends TestResultsWithFailedTestTable { + + private final List packageLinks; + private final List packageTableEntries; + + /** + * Creates a new page object representing the first page of the test results of a build. + * + * @param parent + * a finished build configured with a static analysis tool + */ + public BuildTestResults(final Build parent) { + super(parent); + + WebElement mainPanel = getElement(By.cssSelector("#main-panel")); + packageLinks = TestResultsTableUtil.getLinksOfTableItems(mainPanel); + packageTableEntries = initializePackageTableEntries(mainPanel); + } + + /** + * Creates an instance of the page. This constructor is used for injecting a + * filtered instance of the page (e.g. by clicking on links which open a filtered instance of a AnalysisResult. + * + * @param injector + * the injector of the page + * @param url + * the url of the page + */ + public BuildTestResults(final Injector injector, final URL url) { + super(injector, url); + + WebElement mainPanel = getElement(By.cssSelector("#main-panel")); + packageLinks = TestResultsTableUtil.getLinksOfTableItems(mainPanel); + packageTableEntries = initializePackageTableEntries(mainPanel); + } + + /** + * Gets the entries of the package table. + * @return the package table entries + */ + public List getPackageTableEntries() { + return packageTableEntries; + } + + /** + * Open the test results page, filtered by package. + * @param packageName the package to filter + * @return the opened page + */ + public BuildTestResultsByPackage openTestResultsByPackage(final String packageName) { + WebElement link = packageLinks.stream() + .filter(packageLink -> packageLink.getText().equals(packageName)) + .findFirst() + .orElseThrow(() -> new NoSuchElementException(packageName)); + return openPage(link, BuildTestResultsByPackage.class); + } + + private List initializePackageTableEntries(final WebElement mainPanel) { + return TestResultsTableUtil.getTableItemsWithoutHeader(mainPanel).stream() + .map(this::webElementToPackageTableEntry) + .collect(Collectors.toList()); + } + + private PackageTableEntry webElementToPackageTableEntry(final WebElement trElement) { + List columns = trElement.findElements(By.cssSelector("td")); + + WebElement linkElement = columns.get(0).findElement(TestResultsTableUtil.aLink()); + String packageName = linkElement.getText(); + String packageLink = linkElement.getAttribute("href"); + String durationString = columns.get(1).getText().trim(); + int duration = Integer.parseInt(durationString.substring(0, durationString.length() - " ms".length())); + int fail = Integer.parseInt(columns.get(2).getText()); + String failDiffString = columns.get(3).getText(); + Optional failDiff = failDiffString.isEmpty() ? Optional.empty() : Optional.of(Integer.parseInt(failDiffString)); + int skip = Integer.parseInt(columns.get(4).getText()); + String skipDiffString = columns.get(5).getText(); + Optional skipDiff = skipDiffString.isEmpty() ? Optional.empty() : Optional.of(Integer.parseInt(skipDiffString)); + int pass = Integer.parseInt(columns.get(6).getText()); + String passDiffString = columns.get(7).getText(); + Optional passDiff = passDiffString.isEmpty() ? Optional.empty() : Optional.of(Integer.parseInt(passDiffString)); + int total = Integer.parseInt(columns.get(8).getText()); + String totalDiffString = columns.get(9).getText(); + Optional totalDiff = totalDiffString.isEmpty() ? Optional.empty() : Optional.of(Integer.parseInt(totalDiffString)); + + return new PackageTableEntry(packageName, packageLink, duration, fail, failDiff, skip, skipDiff, + pass, passDiff, total, totalDiff); + } + + +} diff --git a/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/BuildTestResultsByClass.java b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/BuildTestResultsByClass.java new file mode 100644 index 000000000..ccea47da0 --- /dev/null +++ b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/BuildTestResultsByClass.java @@ -0,0 +1,101 @@ +package io.jenkins.plugins.analysis.junit.testresults; + +import java.net.URL; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.stream.Collectors; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import com.google.inject.Injector; + +import org.jenkinsci.test.acceptance.po.Build; +import org.jenkinsci.test.acceptance.po.PageObject; + +import io.jenkins.plugins.analysis.junit.TestDetail; +import io.jenkins.plugins.analysis.junit.testresults.tableentry.TestTableEntry; + +/** + * {@link PageObject} representing the third page of the test results of a build. + * This page contains tests filtered by a specific package and a specific class. + * + * @author Nikolas Paripovic + * @author Michael Müller + */ +public class BuildTestResultsByClass extends TestResults { + + private final List testLinks; + private final List testTableEntries; + + /** + * Creates a new page object representing the third page of the test results of a build. + * + * @param parent + * a finished build configured with a static analysis tool + */ + public BuildTestResultsByClass(final Build parent) { + super(parent); + + WebElement mainPanel = getElement(By.cssSelector("#main-panel")); + testLinks = TestResultsTableUtil.getLinksOfTableItems(mainPanel); + testTableEntries = initializeTestTableEntries(mainPanel); + } + + /** + * Creates an instance of the page. This constructor is used for injecting a + * filtered instance of the page (e.g. by clicking on links which open a filtered instance of a AnalysisResult. + * + * @param injector + * the injector of the page + * @param url + * the url of the page + */ + public BuildTestResultsByClass(final Injector injector, final URL url) { + super(injector, url); + + WebElement mainPanel = getElement(By.cssSelector("#main-panel")); + testLinks = TestResultsTableUtil.getLinksOfTableItems(mainPanel); + testTableEntries = initializeTestTableEntries(mainPanel); + } + + /** + * Gets the entries of the test table. + * @return the test table entries + */ + public List getTestTableEntries() { + return testTableEntries; + } + + /** + * Open the test results page, filtered by test name. + * @param testName the test to filter + * @return the opened page + */ + public TestDetail openTestDetail(final String testName) { + WebElement link = testLinks.stream() + .filter(classLink -> classLink.getText().equals(testName)) + .findFirst() + .orElseThrow(() -> new NoSuchElementException(testName)); + return openPage(link, TestDetail.class); + } + + private List initializeTestTableEntries(final WebElement mainPanel) { + return TestResultsTableUtil.getTableItemsWithoutHeader(mainPanel).stream() + .map(this::webElementToTestTableEntry) + .collect(Collectors.toList()); + } + + private TestTableEntry webElementToTestTableEntry(final WebElement trElement) { + List columns = trElement.findElements(By.cssSelector("td")); + + WebElement linkElement = columns.get(0).findElement(TestResultsTableUtil.aLink()); + String testName = linkElement.getText(); + String testLink = linkElement.getAttribute("href"); + String durationString = columns.get(1).getText().trim(); + int duration = Integer.parseInt(durationString.substring(0, durationString.length() - " ms".length())); + String status = columns.get(2).getText(); + + return new TestTableEntry(testName, testLink, duration, status); + } +} diff --git a/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/BuildTestResultsByPackage.java b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/BuildTestResultsByPackage.java new file mode 100644 index 000000000..39661174b --- /dev/null +++ b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/BuildTestResultsByPackage.java @@ -0,0 +1,113 @@ +package io.jenkins.plugins.analysis.junit.testresults; + +import java.net.URL; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Optional; +import java.util.stream.Collectors; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import com.google.inject.Injector; + +import org.jenkinsci.test.acceptance.po.Build; +import org.jenkinsci.test.acceptance.po.PageObject; + +import io.jenkins.plugins.analysis.junit.testresults.tableentry.ClassTableEntry; + +/** + * {@link PageObject} representing the second page of the test results of a build. + * This page contains tests filtered by a specific package. + * + * @author Nikolas Paripovic + * @author Michael Müller + */ +public class BuildTestResultsByPackage extends TestResultsWithFailedTestTable { + + private final List classLinks; + private final List classTableEntries; + + /** + * Creates a new page object representing the second page of the test results of a build. + * + * @param parent + * a finished build configured with a static analysis tool + */ + public BuildTestResultsByPackage(final Build parent) { + super(parent); + + WebElement mainPanel = getElement(By.cssSelector("#main-panel")); + classLinks = TestResultsTableUtil.getLinksOfTableItems(mainPanel); + classTableEntries = initializeClassTableEntries(mainPanel); + } + + /** + * Creates an instance of the page. This constructor is used for injecting a + * filtered instance of the page (e.g. by clicking on links which open a filtered instance of a AnalysisResult. + * + * @param injector + * the injector of the page + * @param url + * the url of the page + */ + public BuildTestResultsByPackage(final Injector injector, final URL url) { + super(injector, url); + + WebElement mainPanel = getElement(By.cssSelector("#main-panel")); + classLinks = TestResultsTableUtil.getLinksOfTableItems(mainPanel); + classTableEntries = initializeClassTableEntries(mainPanel); + } + + /** + * Gets the entries of the class table. + * @return the class table entries + */ + public List getClassTableEntries() { + return classTableEntries; + } + + /** + * Open the test results page, filtered by class name. + * @param className the class to filter + * @return the opened page + */ + public BuildTestResultsByClass openTestResultsByClass(final String className) { + WebElement link = classLinks.stream() + .filter(classLink -> classLink.getText().equals(className)) + .findFirst() + .orElseThrow(() -> new NoSuchElementException(className)); + return openPage(link, BuildTestResultsByClass.class); + } + + private List initializeClassTableEntries(final WebElement mainPanel) { + return TestResultsTableUtil.getTableItemsWithoutHeader(mainPanel).stream() + .map(this::webElementToClassTableEntry) + .collect(Collectors.toList()); + } + + private ClassTableEntry webElementToClassTableEntry(final WebElement trElement) { + List columns = trElement.findElements(By.cssSelector("td")); + + WebElement linkElement = columns.get(0).findElement(TestResultsTableUtil.aLink()); + String className = linkElement.getText(); + String classLink = linkElement.getAttribute("href"); + String durationString = columns.get(1).getText().trim(); + int duration = Integer.parseInt(durationString.substring(0, durationString.length() - " ms".length())); + int fail = Integer.parseInt(columns.get(2).getText()); + String failDiffString = columns.get(3).getText(); + Optional failDiff = failDiffString.isEmpty() ? Optional.empty() : Optional.of(Integer.parseInt(failDiffString)); + int skip = Integer.parseInt(columns.get(4).getText()); + String skipDiffString = columns.get(5).getText(); + Optional skipDiff = skipDiffString.isEmpty() ? Optional.empty() : Optional.of(Integer.parseInt(skipDiffString)); + int pass = Integer.parseInt(columns.get(6).getText()); + String passDiffString = columns.get(7).getText(); + Optional passDiff = passDiffString.isEmpty() ? Optional.empty() : Optional.of(Integer.parseInt(passDiffString)); + int total = Integer.parseInt(columns.get(8).getText()); + String totalDiffString = columns.get(9).getText(); + Optional totalDiff = totalDiffString.isEmpty() ? Optional.empty() : Optional.of(Integer.parseInt(totalDiffString)); + + return new ClassTableEntry(className, classLink, duration, fail, failDiff, skip, skipDiff, + pass, passDiff, total, totalDiff); + } +} diff --git a/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/TestResults.java b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/TestResults.java new file mode 100644 index 000000000..abb6cabf1 --- /dev/null +++ b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/TestResults.java @@ -0,0 +1,91 @@ +package io.jenkins.plugins.analysis.junit.testresults; + +import java.net.URL; +import java.util.List; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import com.google.inject.Injector; + +import org.jenkinsci.test.acceptance.po.Build; +import org.jenkinsci.test.acceptance.po.PageObject; + +/** + * Abstract {@link PageObject} base class for test results pages. + * + * @author Nikolas Paripovic + * @author Michael Müller + */ +public abstract class TestResults extends PageObject { + + private final WebElement numberOfFailuresElement; + private final WebElement numberOfTestsElement; + + /** + * Creates a new abstract page object as a base class for test results pages. + * + * @param parent + * a finished build configured with a static analysis tool + */ + public TestResults(final Build parent) { + super(parent, parent.url("testReport")); + WebElement mainPanel = getElement(By.cssSelector("#main-panel")); + numberOfFailuresElement = initializeNumberOfFailuresElement(mainPanel); + numberOfTestsElement = initializeNumberOfTestsElement(mainPanel); + } + + /** + * Creates an instance of the page. This constructor is used for injecting a + * filtered instance of the page (e.g. by clicking on links which open a filtered instance of a AnalysisResult. + * + * @param injector + * the injector of the page + * @param url + * the url of the page + */ + public TestResults(final Injector injector, final URL url) { + super(injector, url); + WebElement mainPanel = getElement(By.cssSelector("#main-panel")); + numberOfFailuresElement = initializeNumberOfFailuresElement(mainPanel); + numberOfTestsElement = initializeNumberOfTestsElement(mainPanel); + } + + /** + * Gets the number of failed tests in this build. + * @return the number of failures + */ + public int getNumberOfFailures() { + String text = numberOfFailuresElement.getText().trim(); + return Integer.parseInt(text.substring(0, text.indexOf(' '))); + } + + /** + * Gets the number of processed tests in this build. + * @return the number of tests + */ + public int getNumberOfTests() { + String text = numberOfTestsElement.getText().trim(); + return Integer.parseInt(text.substring(0, text.indexOf(' '))); + } + + protected T openPage(final WebElement link, final Class type) { + String href = link.getAttribute("href"); + link.click(); + return newInstance(type, injector, url(href)); + } + + private WebElement initializeNumberOfTestsElement(final WebElement mainPanel) { + List testsNumberElements = getTestsNumberElements(mainPanel); + return testsNumberElements.get(testsNumberElements.size() - 1); + } + + private WebElement initializeNumberOfFailuresElement(final WebElement mainPanel) { + List testsNumberElements = getTestsNumberElements(mainPanel); + return testsNumberElements.get(0); + } + + private List getTestsNumberElements(final WebElement mainPanel) { + return mainPanel.findElements(By.cssSelector("h1 + div div")); + } +} diff --git a/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/TestResultsTableUtil.java b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/TestResultsTableUtil.java new file mode 100644 index 000000000..9c7094b1a --- /dev/null +++ b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/TestResultsTableUtil.java @@ -0,0 +1,43 @@ +package io.jenkins.plugins.analysis.junit.testresults; + +import java.util.List; +import java.util.stream.Collectors; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +/** + * Util class for repeating parsing tasks. + * + * @author Michael Müller + * @author Nikolas Paripovic + */ +public class TestResultsTableUtil { + static By aLink() { + return By.xpath("a[not(@id)]"); + } + + /** + * Gets the test result table items, omitting the header table item. + * @param mainPanelElement the main panel element + * @return the test result table items + */ + public static List getTableItemsWithoutHeader(final WebElement mainPanelElement) { + WebElement testResultTable = mainPanelElement.findElement(By.cssSelector("#testresult")); + + List testResultTableBodies = testResultTable.findElements(By.cssSelector("tbody")); + WebElement testResultTableBodyWithoutHeader = testResultTableBodies.get(0); + return testResultTableBodyWithoutHeader.findElements(By.cssSelector("tr")); + } + + /** + * Gets the links of the test result table items. + * @param mainPanelElement the main panel element + * @return the links of the test result table items + */ + public static List getLinksOfTableItems(final WebElement mainPanelElement) { + return getTableItemsWithoutHeader(mainPanelElement).stream() + .map(trElement -> trElement.findElements(By.cssSelector("td")).get(0).findElement(aLink())) + .collect(Collectors.toList()); + } +} diff --git a/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/TestResultsWithFailedTestTable.java b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/TestResultsWithFailedTestTable.java new file mode 100644 index 000000000..2be3bd2df --- /dev/null +++ b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/TestResultsWithFailedTestTable.java @@ -0,0 +1,208 @@ +package io.jenkins.plugins.analysis.junit.testresults; + +import java.net.URL; +import java.util.Collections; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Optional; +import java.util.stream.Collectors; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import com.google.inject.Injector; + +import org.jenkinsci.test.acceptance.po.Build; +import org.jenkinsci.test.acceptance.po.PageObject; + +import io.jenkins.plugins.analysis.junit.TestDetail; +import io.jenkins.plugins.analysis.junit.testresults.tableentry.FailedTestTableEntry; + +/** + * Abstract {@link PageObject} base class for test results pages including a failed test table. + * + * @author Nikolas Paripovic + * @author Michael Müller + */ +public abstract class TestResultsWithFailedTestTable extends TestResults { + + private final Optional failedTestsTable; + + private final List failedTestLinks; + private final List failedTestTableEntries; + + /** + * Creates a new abstract page object as a base class for test results pages. + * + * @param parent + * a finished build configured with a static analysis tool + */ + public TestResultsWithFailedTestTable(final Build parent) { + super(parent); + + WebElement mainPanel = getElement(By.cssSelector("#main-panel")); + failedTestsTable = initialFailedTestsTable(mainPanel); + + if (failedTestsTable.isPresent()) { + failedTestLinks = initializeFailedTestLinks(failedTestsTable.get()); + failedTestTableEntries = initializeFailedTestTableEntries(failedTestsTable.get()); + } + else { + failedTestLinks = Collections.emptyList(); + failedTestTableEntries = Collections.emptyList(); + } + } + + /** + * Creates an instance of the page. This constructor is used for injecting a + * filtered instance of the page (e.g. by clicking on links which open a filtered instance of a AnalysisResult. + * + * @param injector + * the injector of the page + * @param url + * the url of the page + */ + public TestResultsWithFailedTestTable(final Injector injector, final URL url) { + super(injector, url); + + WebElement mainPanel = getElement(By.cssSelector("#main-panel")); + failedTestsTable = initialFailedTestsTable(mainPanel); + + if (failedTestsTable.isPresent()) { + failedTestLinks = initializeFailedTestLinks(failedTestsTable.get()); + failedTestTableEntries = initializeFailedTestTableEntries(failedTestsTable.get()); + } + else { + failedTestLinks = Collections.emptyList(); + failedTestTableEntries = Collections.emptyList(); + } + + } + + public Optional getFailedTestsTable() { + return failedTestsTable; + } + + /** + * Checks whether the failed test table exists or not. + * With this knowledge, you can call {@link #getFailedTestTableEntries()} + * @return whether the failed test table exists or not + */ + public boolean failedTestTableExists() { + return failedTestsTable.isPresent(); + } + + /** + * Gets the table entries of the failed tests. + * @return the failed test table entries. + */ + public List getFailedTestTableEntries() { + return failedTestTableEntries; + } + + /** + * Opens the test detail page. + * @param testName the test to open + * @return the opened page + */ + public TestDetail openTestDetail(final String testName) { + WebElement link = failedTestLinks.stream() + .filter(failedTestLink -> failedTestLink.getText().equals(testName)) + .findFirst() + .orElseThrow(() -> new NoSuchElementException(testName)); + return openPage(link, TestDetail.class); + } + + private List getFailedTestsTableItemsWithoutHeader(final WebElement failedTestsTableElement) { + return failedTestsTableElement.findElements(By.cssSelector("tbody tr")); + } + + private List initializeFailedTestLinks(final WebElement failedTestsTableElement) { + List failedTestsTableItemsWithoutHeader = getFailedTestsTableItemsWithoutHeader(failedTestsTableElement); + return failedTestsTableItemsWithoutHeader.stream() + .map(trElement -> trElement.findElements(By.cssSelector("td")) + .get(0) + .findElement(TestResultsTableUtil.aLink())) + .collect(Collectors.toList()); + } + + private List initializeFailedTestTableEntries(final WebElement failedTestsTableElement) { + List failedTestsTableItemsWithoutHeader = getFailedTestsTableItemsWithoutHeader(failedTestsTableElement); + return failedTestsTableItemsWithoutHeader.stream() + .map(this::webElementToFailedTestTableEntry) + .collect(Collectors.toList()); + } + + private Optional initialFailedTestsTable(final WebElement mainPanel) { + int failedTestsTableIndex = -1; + List pageContentChildren = mainPanel.findElements(By.cssSelector("*")); + + int counter = 0; + for (WebElement element : pageContentChildren) { + if (element.getTagName().equals("h2")) { + if (element.getText().equals("All Failed Tests")) { + failedTestsTableIndex = counter; + } + } + ++counter; + } + return failedTestsTableIndex >= 0 ? Optional.of(pageContentChildren.get(failedTestsTableIndex + 1)) : Optional.empty(); + } + + private FailedTestTableEntry webElementToFailedTestTableEntry(final WebElement trElement) { + List columns = trElement.findElements(By.cssSelector("td")); + + WebElement linkElement = columns.get(0).findElement(TestResultsTableUtil.aLink()); + String testName = linkElement.getText(); + String testLink = linkElement.getAttribute("href"); + String durationString = columns.get(1).getText().trim(); + int duration = Integer.parseInt(durationString.substring(0, durationString.length() - " ms".length())); + int age = Integer.parseInt(columns.get(2).findElement(By.cssSelector("a")).getText()); + + WebElement expandLink = columns.get(0).findElement(By.cssSelector("a[title=\"Show details\"]")); + expandLink.click(); + + WebElement failureSummary = columns.get(0).findElement(By.cssSelector("div.failure-summary")); + + List showErrorDetailsLinks = failureSummary.findElements(By.cssSelector("a[title=\"Show Error Details\"]")); + if (showErrorDetailsLinks.size() > 0) { + WebElement showErrorDetailsLink = showErrorDetailsLinks.get(0); + if (!showErrorDetailsLink.getAttribute("style").contains("display: none;")) { + showErrorDetailsLink.click(); + } + } + + List showStackTraceLinks = failureSummary.findElements(By.cssSelector("a[title=\"Show Stack Trace\"]")); + if (showStackTraceLinks.size() > 0) { + WebElement showStackTraceLink = showStackTraceLinks.get(0); + if (!showStackTraceLink.getAttribute("style").contains("display: none;")) { + showStackTraceLink.click(); + } + } + + List failureSummaryChildren = failureSummary.findElements(By.cssSelector("*")); + int counter = 0; + int errorDetailsHeaderIndex = -1; + int stackTraceHeaderIndex = -1; + for (WebElement element : failureSummaryChildren) { + if (element.getTagName().equals("h4")) { + if (element.findElements(By.cssSelector("a[title=\"Show Error Details\"]")).size() > 0) { + errorDetailsHeaderIndex = counter; + } + else if (element.findElements(By.cssSelector("a[title=\"Show Stack Trace\"]")).size() > 0) { + stackTraceHeaderIndex = counter; + } + } + ++counter; + } + + Optional errorDetailsPreElement = errorDetailsHeaderIndex == -1 ? Optional.empty() : Optional.of(failureSummaryChildren.get(errorDetailsHeaderIndex + 1)); + Optional stackTracePreElement = stackTraceHeaderIndex == -1 ? Optional.empty() : Optional.of(failureSummaryChildren.get(stackTraceHeaderIndex + 1)); + + Optional errorDetails = errorDetailsPreElement.map(WebElement::getText); + Optional stackTrace = stackTracePreElement.map(WebElement::getText); + + return new FailedTestTableEntry(testName, testLink, duration, age, errorDetails, stackTrace); + } + +} diff --git a/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/tableentry/ClassTableEntry.java b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/tableentry/ClassTableEntry.java new file mode 100644 index 000000000..3656f32f3 --- /dev/null +++ b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/tableentry/ClassTableEntry.java @@ -0,0 +1,152 @@ +package io.jenkins.plugins.analysis.junit.testresults.tableentry; + +import java.util.Optional; + +/** + * The entry of a class table listing test results of current and previous builds. + * + * @author Michael Müller + * @author Nikolas Paripovic + */ +public class ClassTableEntry { + + private final String className; + + private final String classLink; + + private final int duration; + + private final int fail; + + private final Optional failDiff; + + private final int skip; + + private final Optional skipDiff; + + private final int pass; + + private final Optional passDiff; + + private final int total; + + private final Optional totalDiff; + + /** + * Custom constructor. Creates object. + * @param className the class name property + * @param classLink the target location class link + * @param duration the duration property + * @param fail the fail property + * @param failDiff the fail diff property + * @param skip the skip property + * @param skipDiff the skip diff property + * @param pass the pass property + * @param passDiff the pass diff property + * @param total the total property + * @param totalDiff the total diff property + */ + public ClassTableEntry(final String className, final String classLink, final int duration, final int fail, + final Optional failDiff, final int skip, + final Optional skipDiff, final int pass, final Optional passDiff, final int total, final Optional totalDiff) { + this.className = className; + this.classLink = classLink; + this.duration = duration; + this.fail = fail; + this.failDiff = failDiff; + this.skip = skip; + this.skipDiff = skipDiff; + this.pass = pass; + this.passDiff = passDiff; + this.total = total; + this.totalDiff = totalDiff; + } + + /** + * Gets the property class name. + * @return the class name property + */ + public String getClassName() { + return className; + } + + /** + * Gets the target location when clicking on the class name. + * @return the class link + */ + public String getClassLink() { + return classLink; + } + + /** + * Gets the property duration. + * @return the duration property + */ + public int getDuration() { + return duration; + } + + /** + * Gets the property fail. + * @return the fail property + */ + public int getFail() { + return fail; + } + + /** + * Gets the optional property fail diff. + * @return the fail diff property + */ + public Optional getFailDiff() { + return failDiff; + } + + /** + * Gets the property skip. + * @return the skip property + */ + public int getSkip() { + return skip; + } + + /** + * Gets the optional property skip diff. + * @return the skip diff property + */ + public Optional getSkipDiff() { + return skipDiff; + } + + /** + * Gets the property pass. + * @return the pass property + */ + public int getPass() { + return pass; + } + + /** + * Gets the optional property pass diff. + * @return the pass diff property + */ + public Optional getPassDiff() { + return passDiff; + } + + /** + * Gets the property total. + * @return the total property + */ + public int getTotal() { + return total; + } + + /** + * Gets the optional property total diff. + * @return the total diff property + */ + public Optional getTotalDiff() { + return totalDiff; + } +} diff --git a/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/tableentry/FailedTestTableEntry.java b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/tableentry/FailedTestTableEntry.java new file mode 100644 index 000000000..10ec274a9 --- /dev/null +++ b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/tableentry/FailedTestTableEntry.java @@ -0,0 +1,92 @@ +package io.jenkins.plugins.analysis.junit.testresults.tableentry; + +import java.util.Optional; + +/** + * The entry of a failed test table listing failed tests of the current build. + * + * @author Michael Müller + * @author Nikolas Paripovic + */ +public class FailedTestTableEntry { + + private final String testName; + + private final String testLink; + + private final int duration; + + private final int age; + + private final Optional errorDetails; + + private final Optional stackTrace; + + /** + * Costum constructor. Creates object. + * @param testName the test name property + * @param testLink the target location test link + * @param duration the duration property + * @param age the age property + * @param errorDetails the error details property + * @param stackTrace the stack trace property + */ + public FailedTestTableEntry(final String testName, final String testLink, final int duration, final int age, + final Optional errorDetails, + final Optional stackTrace) { + this.testName = testName; + this.testLink = testLink; + this.duration = duration; + this.age = age; + this.errorDetails = errorDetails; + this.stackTrace = stackTrace; + } + + /** + * Gets the test name property. + * @return the test name property + */ + public String getTestName() { + return testName; + } + + /** + * Gets the target location when clicking on the test name. + * @return the test link + */ + public String getTestLink() { + return testLink; + } + + /** + * Gets the duration property. + * @return the duration property + */ + public int getDuration() { + return duration; + } + + /** + * Gets the age property. + * @return the age property + */ + public int getAge() { + return age; + } + + /** + * Gets the optional error details. + * @return the error details + */ + public Optional getErrorDetails() { + return errorDetails; + } + + /** + * Gets the optional stack trace. + * @return the stack trace + */ + public Optional getStackTrace() { + return stackTrace; + } +} diff --git a/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/tableentry/PackageTableEntry.java b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/tableentry/PackageTableEntry.java new file mode 100644 index 000000000..0db3fe75c --- /dev/null +++ b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/tableentry/PackageTableEntry.java @@ -0,0 +1,151 @@ +package io.jenkins.plugins.analysis.junit.testresults.tableentry; + +import java.util.Optional; + +/** + * The entry of a package table listing test results of current and previous builds. + * @author Michael Müller + * @author Nikolas Paripovic + */ +public class PackageTableEntry { + + private final String packageName; + + private final String packageLink; + + private final int duration; + + private final int fail; + + private final Optional failDiff; + + private final int skip; + + private final Optional skipDiff; + + private final int pass; + + private final Optional passDiff; + + private final int total; + + private final Optional totalDiff; + + /** + * Custom constructor. Creates object. + * @param packageName the package name property + * @param packageLink the target location package link + * @param duration the duration property + * @param fail the fail property + * @param failDiff the fail diff property + * @param skip the skip property + * @param skipDiff the skip diff property + * @param pass the pass property + * @param passDiff the pass diff property + * @param total the total property + * @param totalDiff the total diff property + */ + public PackageTableEntry(final String packageName, final String packageLink, final int duration, final int fail, + final Optional failDiff, final int skip, + final Optional skipDiff, final int pass, final Optional passDiff, final int total, final Optional totalDiff) { + this.packageName = packageName; + this.packageLink = packageLink; + this.duration = duration; + this.fail = fail; + this.failDiff = failDiff; + this.skip = skip; + this.skipDiff = skipDiff; + this.pass = pass; + this.passDiff = passDiff; + this.total = total; + this.totalDiff = totalDiff; + } + + /** + * Gets the package name property. + * @return the package name property + */ + public String getPackageName() { + return packageName; + } + + /** + * Gets the target location when clicking on the package name. + * @return the package link + */ + public String getPackageLink() { + return packageLink; + } + + /** + * Gets the duration property. + * @return the duration property + */ + public int getDuration() { + return duration; + } + + /** + * Gets the fail property. + * @return the fail property + */ + public int getFail() { + return fail; + } + + /** + * Gets the optional fail diff property. + * @return the fail diff property + */ + public Optional getFailDiff() { + return failDiff; + } + + /** + * Gets the skip property. + * @return the skip property + */ + public int getSkip() { + return skip; + } + + /** + * Gets the optional skip diff property. + * @return the skip diff property + */ + public Optional getSkipDiff() { + return skipDiff; + } + + /** + * Gets the pass property. + * @return the pass property + */ + public int getPass() { + return pass; + } + + /** + * Gets the optional pass diff property. + * @return the pass diff property + */ + public Optional getPassDiff() { + return passDiff; + } + + /** + * Gets the total property. + * @return the total property + */ + public int getTotal() { + return total; + } + + /** + * Gets the optional total diff property. + * @return the total diff property + */ + public Optional getTotalDiff() { + return totalDiff; + } +} diff --git a/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/tableentry/TestTableEntry.java b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/tableentry/TestTableEntry.java new file mode 100644 index 000000000..ebf020207 --- /dev/null +++ b/ui-tests/src/main/java/io/jenkins/plugins/analysis/junit/testresults/tableentry/TestTableEntry.java @@ -0,0 +1,63 @@ +package io.jenkins.plugins.analysis.junit.testresults.tableentry; + +/** + * The entry of a test table listing test results of the current build. + * @author Michael Müller + * @author Nikolas Paripovic + */ +public class TestTableEntry { + + private final String testName; + + private final String testLink; + + private final int duration; + + private final String status; + + /** + * Custom constructor. Creates object. + * @param testName the test nam property + * @param testLink the target location test link + * @param duration the duration property + * @param status the status property + */ + public TestTableEntry(final String testName, final String testLink, final int duration, final String status) { + this.testName = testName; + this.testLink = testLink; + this.duration = duration; + this.status = status; + } + + /** + * Gets the test name property. + * @return the test name property + */ + public String getTestName() { + return testName; + } + + /** + * Gets the target location when clicking on the test name. + * @return the test link + */ + public String getTestLink() { + return testLink; + } + + /** + * Gets the duration property. + * @return the duration property + */ + public int getDuration() { + return duration; + } + + /** + * Gets the status property. + * @return the status property + */ + public String getStatus() { + return status; + } +} diff --git a/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/BuildSummaryTest.java b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/BuildSummaryTest.java new file mode 100644 index 000000000..fba451e7b --- /dev/null +++ b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/BuildSummaryTest.java @@ -0,0 +1,52 @@ +package io.jenkins.plugins.analysis.junit; + +import java.util.Arrays; + +import org.junit.Test; + +import org.jenkinsci.test.acceptance.junit.AbstractJUnitTest; +import org.jenkinsci.test.acceptance.junit.WithPlugins; +import org.jenkinsci.test.acceptance.po.Build; + +import io.jenkins.plugins.analysis.junit.util.TestUtils; + +import static io.jenkins.plugins.analysis.junit.Assertions.*; +/** + * Tests the JUnit tests summary on the build summary page of a job. + * + * @author Michael Müller + * @author Nikolas Paripovic + */ +@WithPlugins("junit") +public class BuildSummaryTest extends AbstractJUnitTest { + + /** + * Verifies shown failure count when no failures occurred. + */ + @Test + public void verifySummaryNoFailures() { + Build build = TestUtils.createFreeStyleJobAndRunBuild( + this, + Arrays.asList("/success/com.simple.project.AppTest.txt", "/success/TEST-com.simple.project.AppTest.xml"), "SUCCESS"); + + JUnitBuildSummary buildSummary = new JUnitBuildSummary(build); + + assertThat(buildSummary).hasTitleNumberOfFailuresText("no failures"); + assertThat(buildSummary).hasNoFailureNames(); + } + + /** + * Verifies shown failure count and listed failures when failures occurred. + */ + @Test + public void verifySummaryWithFailures() { + Build build = TestUtils.createFreeStyleJobAndRunBuild( + this, + Arrays.asList("/parameterized/junit.xml", "/parameterized/testng.xml"), "UNSTABLE"); + + JUnitBuildSummary buildSummary = new JUnitBuildSummary(build); + + assertThat(buildSummary).hasTitleNumberOfFailuresText("6 failures"); + assertThat(buildSummary).hasFailureNames("JUnit.testScore[0]", "JUnit.testScore[1]", "JUnit.testScore[2]", "TestNG.testScore", "TestNG.testScore", "TestNG.testScore"); + } +} diff --git a/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/BuildTestResultsByClassTest.java b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/BuildTestResultsByClassTest.java new file mode 100644 index 000000000..a75c65b67 --- /dev/null +++ b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/BuildTestResultsByClassTest.java @@ -0,0 +1,101 @@ +package io.jenkins.plugins.analysis.junit; + +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.junit.Test; + +import org.jenkinsci.test.acceptance.junit.AbstractJUnitTest; +import org.jenkinsci.test.acceptance.junit.WithPlugins; +import org.jenkinsci.test.acceptance.po.Build; + +import io.jenkins.plugins.analysis.junit.testresults.BuildTestResultsByClass; +import io.jenkins.plugins.analysis.junit.testresults.BuildTestResultsByPackage; +import io.jenkins.plugins.analysis.junit.testresults.tableentry.TestTableEntry; +import io.jenkins.plugins.analysis.junit.util.TestUtils; + +/** + * Tests the published unit tests results of a build which are filtered by a class. + * + * @author Michael Müller + * @author Nikolas Paripovic + */ +@WithPlugins("junit") +public class BuildTestResultsByClassTest extends AbstractJUnitTest { + + /** + * Verifies failed tests are listed with correct test status. + */ + @Test + public void verifyWithFailures() { + + BuildTestResultsByClass buildTestResultsByClass = createBuildJobAndOpenBuildTestResultsByClass( + "/failure/three_failed_two_succeeded.xml", + "UNSTABLE", + "com.simple.project", + "AppTest" + ); + + TestUtils.assertElementInCollection(buildTestResultsByClass.getTestTableEntries(), + testTableEntry -> testTableEntry.getTestName().equals("testAppFailNoMessage"), + testTableEntry -> testTableEntry.getTestName().equals("testAppFailNoStacktrace")); + + TestUtils.assertElementInCollection(buildTestResultsByClass.getTestTableEntries(), + testTableEntry -> testTableEntry.getStatus().equals("Failed"), + testTableEntry -> testTableEntry.getStatus().equals("Failed")); + } + + /** + * Verifies passed tests are listed with correct test status. + */ + @Test + public void verifyWithNoFailures() { + + BuildTestResultsByClass buildTestResultsByClass = createBuildJobAndOpenBuildTestResultsByClass( + "/success/TEST-com.simple.project.AppTest.xml", + "SUCCESS", + "com.simple.project", + "AppTest" + ); + + TestUtils.assertElementInCollection(buildTestResultsByClass.getTestTableEntries(), + testTableEntry -> testTableEntry.getTestName().equals("testApp")); + + TestUtils.assertElementInCollection(buildTestResultsByClass.getTestTableEntries(), + testTableEntry -> testTableEntry.getStatus().equals("Passed")); + } + + /** + * Verifies test has status "Regression" when test failed after success in previous build. + */ + @Test + public void verifiesTestHasStatusRegressionWhenTestFailedAfterSuccessfulTestBefore() { + + Build lastBuild = TestUtils.createTwoBuildsWithIncreasedTestFailures(this); + + JUnitBuildSummary buildSummary = new JUnitBuildSummary(lastBuild); + BuildTestResultsByClass buildTestResultsByClass = buildSummary + .openBuildTestResults() + .openTestResultsByPackage("com.another.simple.project") + .openTestResultsByClass("ApplicationTest"); + + TestUtils.assertElementInCollection(buildTestResultsByClass.getTestTableEntries(), + tableEntry -> tableEntry.getTestName().equals("testAppFail") && tableEntry.getStatus().equals("Failed"), + tableEntry -> tableEntry.getTestName().equals("testApplicationSuccess") && tableEntry.getStatus().equals("Regression")); + } + + private BuildTestResultsByClass createBuildJobAndOpenBuildTestResultsByClass(String testResultsReport, + String expectedBuildResult, String packageName, String className) { + Build build = TestUtils.createFreeStyleJobAndRunBuild( + this, + Arrays.asList(testResultsReport), expectedBuildResult); + + JUnitBuildSummary buildSummary = new JUnitBuildSummary(build); + BuildTestResultsByPackage buildTestResultsByPackage = buildSummary + .openBuildTestResults() + .openTestResultsByPackage(packageName); + + return buildTestResultsByPackage.openTestResultsByClass(className); + } +} diff --git a/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/BuildTestResultsByPackageTest.java b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/BuildTestResultsByPackageTest.java new file mode 100644 index 000000000..2ec537dee --- /dev/null +++ b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/BuildTestResultsByPackageTest.java @@ -0,0 +1,107 @@ +package io.jenkins.plugins.analysis.junit; + +import java.util.Arrays; +import java.util.List; +import java.util.Optional; + +import org.junit.Test; + +import org.jenkinsci.test.acceptance.junit.AbstractJUnitTest; +import org.jenkinsci.test.acceptance.junit.WithPlugins; +import org.jenkinsci.test.acceptance.po.Build; + +import io.jenkins.plugins.analysis.junit.testresults.BuildTestResultsByPackage; +import io.jenkins.plugins.analysis.junit.util.TestUtils; + +import static io.jenkins.plugins.analysis.junit.Assertions.*; + +/** + * Tests the published unit test results of a build which are filtered by a package. + * + * @author Michael Müller + * @author Nikolas Paripovic + */ +@WithPlugins("junit") +public class BuildTestResultsByPackageTest extends AbstractJUnitTest { + + /** + * Verifies correct numbers of failed and passed tests, failed tests table and the test classes table are shown correctly. + */ + @Test + public void verifyWithFailures() { + + BuildTestResultsByPackage buildTestResultsByPackage = createBuildJobAndOpenBuildTestResultsByPackage( + "/failure/three_failed_two_succeeded.xml", + "UNSTABLE", + "com.simple.project" + ); + + assertThat(buildTestResultsByPackage) + .hasNumberOfFailures(2) + .hasNumberOfTests(3); + + TestUtils.assertElementInCollection(buildTestResultsByPackage.getFailedTestTableEntries(), + failedTestTableEntry -> failedTestTableEntry.getTestName() + .equals("com.simple.project.AppTest.testAppFailNoMessage"), + failedTestTableEntry -> failedTestTableEntry.getTestName() + .equals("com.simple.project.AppTest.testAppFailNoStacktrace")); + + TestUtils.assertElementInCollection(buildTestResultsByPackage.getClassTableEntries(), + classTableEntry -> classTableEntry.getClassName().equals("AppTest"), + classTableEntry -> classTableEntry.getClassName().equals("ApplicationTest")); + } + + /** + * Verifies correct numbers of failed and passed tests, no failed tests table is shown and the test classes table is shown correctly. + */ + @Test + public void verifyWithNoFailures() { + + BuildTestResultsByPackage buildTestResultsByPackage = createBuildJobAndOpenBuildTestResultsByPackage( + "/success/TEST-com.simple.project.AppTest.xml", + "SUCCESS", + "com.simple.project" + ); + + assertThat(buildTestResultsByPackage) + .hasNumberOfFailures(0) + .hasNumberOfTests(1); + + assertThat(buildTestResultsByPackage).hasFailedTestsTable(Optional.empty()); + + TestUtils.assertElementInCollection(buildTestResultsByPackage.getClassTableEntries(), + classTableEntry -> classTableEntry.getClassName().equals("AppTest")); + } + + /** + * Verifies increase/ decrease in failure/ passed tests count of two consecutive builds are shown correctly. + */ + @Test + public void verifiesTestHasStatusRegressionWhenTestFailedAfterSuccessfulTestBefore() { + + Build lastBuild = TestUtils.createTwoBuildsWithIncreasedTestFailures(this); + + JUnitBuildSummary buildSummary = new JUnitBuildSummary(lastBuild); + BuildTestResultsByPackage buildTestResultsByPackage = buildSummary + .openBuildTestResults() + .openTestResultsByPackage("com.another.simple.project"); + + TestUtils.assertElementInCollection(buildTestResultsByPackage.getClassTableEntries(), + packageTableEntry -> packageTableEntry.getFailDiff().get().equals(1) + && packageTableEntry.getPassDiff().get().equals(-1) + ); + } + + private BuildTestResultsByPackage createBuildJobAndOpenBuildTestResultsByPackage(String testResultsReport, + String expectedBuildResult, String packageName) { + Build build = TestUtils.createFreeStyleJobAndRunBuild( + this, + Arrays.asList(testResultsReport), expectedBuildResult); + + JUnitBuildSummary buildSummary = new JUnitBuildSummary(build); + return buildSummary + .openBuildTestResults() + .openTestResultsByPackage(packageName); + + } +} diff --git a/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/BuildTestResultsTest.java b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/BuildTestResultsTest.java new file mode 100644 index 000000000..557228506 --- /dev/null +++ b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/BuildTestResultsTest.java @@ -0,0 +1,98 @@ +package io.jenkins.plugins.analysis.junit; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Optional; + +import org.junit.Test; + +import org.jenkinsci.test.acceptance.junit.AbstractJUnitTest; +import org.jenkinsci.test.acceptance.junit.WithPlugins; +import org.jenkinsci.test.acceptance.po.Build; + +import io.jenkins.plugins.analysis.junit.testresults.BuildTestResults; +import io.jenkins.plugins.analysis.junit.testresults.tableentry.PackageTableEntry; +import io.jenkins.plugins.analysis.junit.util.TestUtils; + +import static io.jenkins.plugins.analysis.junit.Assertions.*; + +/** + * Tests the detail view of failed unit tests of a build. + * + * @author Michael Müller + * @author Nikolas Paripovic + */ +@WithPlugins("junit") +public class BuildTestResultsTest extends AbstractJUnitTest { + + /** + * Verifies correct numbers total tests and failed tests shown when failures occurred. + * In addition listed names of failed tests and corresponding packages are verified. + */ + @Test + public void verifyWithFailures() { + + Build build = TestUtils.createFreeStyleJobAndRunBuild( + this, + Arrays.asList("/failure/three_failed_two_succeeded.xml"), "UNSTABLE"); + + JUnitBuildSummary buildSummary = new JUnitBuildSummary(build); + BuildTestResults buildTestResults = buildSummary.openBuildTestResults(); + + assertThat(buildTestResults) + .hasNumberOfFailures(3) + .hasNumberOfTests(5); + + TestUtils.assertElementInCollection(buildTestResults.getFailedTestTableEntries(), + failedTestTableEntry -> failedTestTableEntry.getTestName().equals("com.simple.project.AppTest.testAppFailNoMessage"), + failedTestTableEntry -> failedTestTableEntry.getTestName().equals("com.simple.project.AppTest.testAppFailNoStacktrace"), + failedTestTableEntry -> failedTestTableEntry.getTestName().equals("com.another.simple.project.ApplicationTest.testAppFail")); + + TestUtils.assertElementInCollection(buildTestResults.getPackageTableEntries(), + packageTableEntry -> packageTableEntry.getPackageName().equals("com.simple.project"), + packageTableEntry -> packageTableEntry.getPackageName().equals("com.another.simple.project")); + } + + /** + * Verifies correct numbers and lists of total tests and failed tests when no failures occurred. + */ + @Test + public void verifyNoFailures() { + + Build build = TestUtils.createFreeStyleJobAndRunBuild( + this, + Arrays.asList("/success/TEST-com.simple.project.AppTest.xml"), "SUCCESS"); + + JUnitBuildSummary buildSummary = new JUnitBuildSummary(build); + BuildTestResults buildTestResults = buildSummary.openBuildTestResults(); // TODO: Better access by navigation icon? + + assertThat(buildTestResults) + .hasNumberOfFailures(0) + .hasNumberOfTests(1); + + assertThat(buildTestResults).hasFailedTestsTable(Optional.empty()); + assertThat(buildTestResults).hasFailedTestTableEntries(Collections.emptyList()); + + TestUtils.assertElementInCollection(buildTestResults.getPackageTableEntries(), + packageTableEntry -> packageTableEntry.getPackageName().equals("com.simple.project")); + } + + /** + * Verifies increase/ decrease in failure/ passed tests count of two consecutive builds are shown correctly. + */ + @Test + public void verifyFailureAndPassedTestsDifferenceToPreviousBuild() { + + Build lastBuild = TestUtils.createTwoBuildsWithIncreasedTestFailures(this); + JUnitBuildSummary buildSummary = new JUnitBuildSummary(lastBuild); + BuildTestResults buildTestResults = buildSummary.openBuildTestResults(); + + TestUtils.assertElementInCollection(buildTestResults.getPackageTableEntries(), + packageTableEntry -> packageTableEntry.getFailDiff().get().equals(1) + && packageTableEntry.getPassDiff().get().equals(-1), + packageTableEntry -> !packageTableEntry.getFailDiff().isPresent() + && !packageTableEntry.getPassDiff().isPresent() + ); + } +} diff --git a/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/JobConfigurationTest.java b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/JobConfigurationTest.java new file mode 100644 index 000000000..34f54b1d5 --- /dev/null +++ b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/JobConfigurationTest.java @@ -0,0 +1,72 @@ +package io.jenkins.plugins.analysis.junit; + +import java.util.Arrays; +import java.util.Collections; +import org.junit.Test; + +import org.jenkinsci.test.acceptance.junit.AbstractJUnitTest; +import org.jenkinsci.test.acceptance.po.Build; +import org.jenkinsci.test.acceptance.po.FreeStyleJob; + +import static io.jenkins.plugins.analysis.junit.JUnitProjectSummaryAssert.*; +import static org.assertj.core.api.AssertionsForClassTypes.*; + +/** + * Tests the job configuration of the JUnit test results report publisher. + * + * @author Michael Müller + * @author Nikolas Paripovic + */ +public class JobConfigurationTest extends AbstractJUnitTest { + /** + * Tests if build is successful with test failures when checkbox "Skip publishing checks" is checked. + */ + @Test + public void successfulBuildWhenSkipMarkingBuildAsUnstableOnTestFailureChecked() { + FreeStyleJob j = jenkins.jobs.create(); + j.configure(); + j.copyResource(resource("/failure/com.simple.project.AppTest.txt")); + j.copyResource(resource("/failure/TEST-com.simple.project.AppTest.xml")); + JUnitJobConfiguration publisher = j.addPublisher(JUnitJobConfiguration.class); + publisher.setTestResults("*.xml"); + publisher.setSkipMarkingBuildAsUnstableOnTestFailure(true); + j.save(); + + j.startBuild().shouldSucceed(); + } + + /** + * Tests if build is successful with no test results when checkbox "Allow empty results" is checked. + */ + @Test + public void successfulBuildWhenEmptyTestResultsChecked() { + FreeStyleJob j = jenkins.jobs.create(); + j.configure(); + JUnitJobConfiguration publisher = j.addPublisher(JUnitJobConfiguration.class); + publisher.setAllowEmptyResults(true); + j.save(); + + j.startBuild().shouldSucceed(); + } + + /** + * Tests if long standard output is not truncated in test details when checkbox "Retain long standard output/error" is checked. + */ + @Test + public void retainLongStandardOutputError() { + FreeStyleJob j = jenkins.jobs.create(); + j.configure(); + j.copyResource(resource("/success/junit-with-long-output.xml")); + JUnitJobConfiguration publisher = j.addPublisher(JUnitJobConfiguration.class); + publisher.setTestResults("*.xml"); + publisher.setRetainLogStandardOutputError(true); + + j.save(); + Build build = j.startBuild().shouldSucceed(); + j.visit("/job/" + j.name + "/1/testReport/(root)/JUnit/testScore_0_/"); + TestDetail testDetail = new TestDetail(build); + + assertThat(testDetail.getStandardOutput()).isPresent(); + assertThat(testDetail.getStandardOutput().get()).doesNotContain("truncated"); + } +} diff --git a/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/ProjectSummaryTest.java b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/ProjectSummaryTest.java new file mode 100644 index 000000000..cc04e8460 --- /dev/null +++ b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/ProjectSummaryTest.java @@ -0,0 +1,61 @@ +package io.jenkins.plugins.analysis.junit; + +import org.json.JSONException; +import org.junit.Test; + +import org.jenkinsci.test.acceptance.junit.AbstractJUnitTest; +import org.jenkinsci.test.acceptance.po.Build; + +import io.jenkins.plugins.analysis.junit.util.TestUtils; + +import static io.jenkins.plugins.analysis.junit.JUnitProjectSummaryAssert.*; +import static org.assertj.core.api.AssertionsForClassTypes.*; + +/** + * Tests the published results of JUnit tests on the job summary page. + * + * @author Michael Müller + * @author Nikolas Paripovic + */ +public class ProjectSummaryTest extends AbstractJUnitTest { + + /** + * Verifies correct information at latest result link. + */ + @Test + public void verifyLatestTestResultsInformation() throws JSONException { + Build lastBuild = TestUtils.createTwoBuildsWithIncreasedTestFailures(this); + lastBuild.job.open(); + + JUnitProjectSummary projectSummary = new JUnitProjectSummary(lastBuild); + + assertThat(projectSummary) + .hasNumberOfFailures(4) + .hasFailureDifference(1); + + assertThat(projectSummary.getTitleText()) + .contains("4 failures") + .contains("+1"); + } + + /** + * Verifies correct information in the test result trend chart. + */ + @Test + public void verifyTrendChartForTwoConsecutiveBuilds() throws JSONException { + Build lastBuild = TestUtils.createTwoBuildsWithIncreasedTestFailures(this); + lastBuild.job.open(); + + JUnitProjectSummary projectSummary = new JUnitProjectSummary(lastBuild); + + TestUtils.assertElementInCollection(projectSummary.getBuildChartEntries(), + buildChartEntry -> buildChartEntry.getBuildId() == 1 + && buildChartEntry.getNumberOfFailedTests() == 3 + && buildChartEntry.getNumberOfPassedTests() == 2 + && buildChartEntry.getNumberOfSkippedTests() == 0, + buildChartEntry -> buildChartEntry.getBuildId() == 2 + && buildChartEntry.getNumberOfFailedTests() == 4 + && buildChartEntry.getNumberOfPassedTests() == 1 + && buildChartEntry.getNumberOfSkippedTests() == 0); + } +} diff --git a/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/TestDetailTest.java b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/TestDetailTest.java new file mode 100644 index 000000000..ba7869e59 --- /dev/null +++ b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/TestDetailTest.java @@ -0,0 +1,152 @@ +package io.jenkins.plugins.analysis.junit; + +import java.util.Arrays; + +import org.junit.Test; + +import org.jenkinsci.test.acceptance.junit.AbstractJUnitTest; +import org.jenkinsci.test.acceptance.junit.WithPlugins; +import org.jenkinsci.test.acceptance.po.Build; + +import io.jenkins.plugins.analysis.junit.util.TestUtils; + +import static org.assertj.core.api.AssertionsForClassTypes.*; + +/** + * Tests the the detail view of a failed JUnit test. + * + * @author Michael Müller + * @author Nikolas Paripovic + */ +@WithPlugins("junit") +public class TestDetailTest extends AbstractJUnitTest { + + /** + * Verifies detail information of passed test are displayed correctly. + */ + @Test + public void verifyTestDetailWhenFailed() { + Build build = TestUtils.createFreeStyleJobAndRunBuild( + this, + Arrays.asList("/success/com.simple.project.AppTest.txt", "/success/TEST-com.simple.project.AppTest.xml"), "SUCCESS"); + + JUnitBuildSummary buildSummary = new JUnitBuildSummary(build); + TestDetail testDetail = buildSummary.openBuildTestResults() + .openTestResultsByPackage("com.simple.project") + .openTestResultsByClass("AppTest") + .openTestDetail("testApp"); + + assertThat(testDetail.getTitle()).contains("Passed"); + assertThat(testDetail.getSubTitle()).contains("com.simple.project.AppTest.testApp"); + + assertThat(testDetail.getErrorMessage()).isEmpty(); + assertThat(testDetail.getStackTrace()).isEmpty(); + assertThat(testDetail.getStandardOutput()).isEmpty(); + } + + /** + * Verifies detail information with standard output of passed test are displayed correctly. + */ + @Test + public void verifyTestDetailWhenFailedWithStandardOutput() { + Build build = TestUtils.createFreeStyleJobAndRunBuild( + this, + Arrays.asList("/success/com.simple.project.AppTest.txt", "/success/junit-with-long-output.xml"), "SUCCESS"); + + JUnitBuildSummary buildSummary = new JUnitBuildSummary(build); + TestDetail testDetail = buildSummary.openBuildTestResults() + .openTestResultsByPackage("(root)") + .openTestResultsByClass("JUnit") + .openTestDetail("testScore[0]"); + + assertThat(testDetail.getTitle()).contains("Passed"); + assertThat(testDetail.getSubTitle()).contains("JUnit.testScore[0]"); + + assertThat(testDetail.getErrorMessage()).isEmpty(); + assertThat(testDetail.getStackTrace()).isEmpty(); + + assertThat(testDetail.getStandardOutput()).isPresent(); + assertThat(testDetail.getStandardOutput().get()).contains("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore"); + } + + /** + * Verifies detail information of passed test are displayed correctly. + */ + @Test + public void verifyTestDetailWhenPassed() { + Build build = TestUtils.createFreeStyleJobAndRunBuild( + this, + Arrays.asList("/parameterized/junit.xml", "/parameterized/testng.xml"), "UNSTABLE"); + + JUnitBuildSummary buildSummary = new JUnitBuildSummary(build); + TestDetail testDetail = buildSummary.openTestDetailView("JUnit.testScore[0]"); + + assertThat(testDetail.getTitle()).contains("Failed"); + assertThat(testDetail.getStandardOutput()).isEmpty(); + assertThat(testDetail.getSubTitle()).contains("JUnit.testScore[0]"); + + assertThat(testDetail.getErrorMessage()).isPresent(); + assertThat(testDetail.getErrorMessage()).get().isEqualTo("expected:<42> but was:<0>"); + + assertThat(testDetail.getStackTrace()).isPresent(); + assertThat(testDetail.getStackTrace()).get().isEqualTo( + "java.lang.AssertionError: expected:<42> but was:<0>\n" + + " at org.junit.Assert.fail(Assert.java:88)\n" + + " at org.junit.Assert.failNotEquals(Assert.java:743)\n" + + " at org.junit.Assert.assertEquals(Assert.java:118)\n" + + " at org.junit.Assert.assertEquals(Assert.java:555)\n" + + " at org.junit.Assert.assertEquals(Assert.java:542)\n" + + " at JUnit.testScore(JUnitTC.java:21)\n" + + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n" + + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)\n" + + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n" + + " at java.lang.reflect.Method.invoke(Method.java:606)\n" + + " at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)\n" + + " at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\n" + + " at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)\n" + + " at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\n" + + " at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)\n" + + " at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)\n" + + " at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)\n" + + " at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)\n" + + " at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)\n" + + " at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)\n" + + " at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)\n" + + " at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)\n" + + " at org.junit.runners.ParentRunner.run(ParentRunner.java:309)\n" + + " at org.junit.runners.Suite.runChild(Suite.java:127)\n" + + " at org.junit.runners.Suite.runChild(Suite.java:26)\n" + + " at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)\n" + + " at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)\n" + + " at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)\n" + + " at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)\n" + + " at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)\n" + + " at org.junit.runners.ParentRunner.run(ParentRunner.java:309)\n" + + " at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)\n" + + " at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)\n" + + " at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)\n" + + " at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)\n" + + " at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)\n" + + " at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)"); + + } + + /** + * Verifies run unit test has status "Regression" when this test failed after success in previous build. + */ + @Test + public void verifiesTestHasStatusRegressionWhenConsecutiveBuildFailed() { + + Build lastBuild = TestUtils.createTwoBuildsWithIncreasedTestFailures(this); + + JUnitBuildSummary buildSummary = new JUnitBuildSummary(lastBuild); + TestDetail testDetail = buildSummary + .openBuildTestResults() + .openTestResultsByPackage("com.another.simple.project") + .openTestResultsByClass("ApplicationTest") + .openTestDetail("testApplicationSuccess"); + + assertThat(testDetail.getTitle()).contains("Regression"); + } + +} diff --git a/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/util/FixedCopyJobDecorator.java b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/util/FixedCopyJobDecorator.java new file mode 100644 index 000000000..be4c9c903 --- /dev/null +++ b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/util/FixedCopyJobDecorator.java @@ -0,0 +1,114 @@ +package io.jenkins.plugins.analysis.junit.util; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.zip.GZIPOutputStream; + +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.SystemUtils; +import org.codehaus.plexus.util.Base64; + +import org.jenkinsci.test.acceptance.junit.Resource; +import org.jenkinsci.test.acceptance.po.Job; + +/** + * Wrapper around a {@link Job} with slightly modified behaviour in methods {@link #copyResource(Resource)}, {@link #copyResource(String)} and {@link #copyResource(Resource, String)}. + * Without these modifications, the following Jenkins error occurs when resources are copied by {@code xcopy} using Windows OS: {@Code Test reports were found but none of them are new. Did tests run?}. + * The solution applied here is to execute another command {@code touch} to update the timestamp and fix the error. + * @author Nikolas Paripovic + */ +public class FixedCopyJobDecorator { + + private final Job job; + + /** + * Custom constructor. Creates object. + * @param job the jenkins job to apply the fix + */ + public FixedCopyJobDecorator(Job job) { + this.job = job; + } + + /** + * Gets the origin object with default behaviour. + * If called {@link Job#copyResource(Resource)}, {@link Job#copyResource(String)} or {@link Job#copyResource(Resource, String)} on this object, no fix (described in this class description) is applied here. + * @return the origin object + */ + public Job getJob() { + return job; + } + + /** + * Slightly modified behaviour of {@link Job#copyResource(Resource, String)} with the bugfix described in this class description. + * @param resource the resource to copy + * @param fileName the name of the resource to copy + */ + public void copyResource(Resource resource, String fileName) { + if (SystemUtils.IS_OS_WINDOWS) { + job.addBatchStep(copyResourceBatch(resource)); + } + else { + job.addShellStep(copyResourceShell(resource, fileName)); + } + } + + /** + * Slightly modified behaviour of {@link Job#copyResource(Resource)} with the bugfix described in this class description. + * @param resource the resource to copy + */ + public void copyResource(Resource resource) { + copyResource(resource, resource.getName()); + } + + /** + * Slightly modified behaviour of {@link Job#copyResource(String)} with the bugfix described in this class description. + * @param resourcePath the resource to copy + */ + public void copyResource(String resourcePath) { + job.ensureConfigPage(); + final Resource res = job.resource(resourcePath); + //decide whether to utilize copyResource or copyDir + if (res.asFile().isDirectory()) { + job.copyDir(res); + } + else { + copyResource(res); + } + } + + private String copyResourceBatch(Resource resource) { + String path = resource.url.getPath(); + if (path.startsWith("/")) { + path = path.substring(1); + } + path = path.replace("/", "\\"); + return xCopy(path, ".") + "\n" + touch(resource.getName()); + } + + private String touch(final String source) { + return "touch " + source; + } + + private String xCopy(final String source, final String destination) { + return "xcopy " + source + " " + destination + " /E /Y"; + } + + private String copyResourceShell(Resource resource, String fileName) { + try (InputStream in = resource.asInputStream()) { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + + try (OutputStream gz = new GZIPOutputStream(out)) { + IOUtils.copy(in, gz); + } + + // fileName can include path portion like foo/bar/zot + return String.format("(mkdir -p %1$s || true) && rm -r %1$s && base64 --decode << ENDOFFILE | gunzip > %1$s \n%2$s\nENDOFFILE", + fileName, new String(Base64.encodeBase64Chunked(out.toByteArray()))); + } + catch (IOException e) { + throw new AssertionError(e); + } + } +} diff --git a/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/util/TestUtils.java b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/util/TestUtils.java new file mode 100644 index 000000000..6ee1b2524 --- /dev/null +++ b/ui-tests/src/test/java/io/jenkins/plugins/analysis/junit/util/TestUtils.java @@ -0,0 +1,117 @@ +package io.jenkins.plugins.analysis.junit.util; + +import java.lang.annotation.ElementType; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.function.Predicate; +import java.util.stream.Stream; + +import org.jenkinsci.test.acceptance.junit.AbstractJUnitTest; +import org.jenkinsci.test.acceptance.po.Build; +import org.jenkinsci.test.acceptance.po.FreeStyleJob; +import org.jenkinsci.test.acceptance.po.JUnitPublisher; +import org.jenkinsci.test.acceptance.po.Job; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +/** + * Util methods for tests. + */ +public class TestUtils { + + /** + * Creates a freestyle Job with resources and runs build with expected build result. + * + * @param abstractJUnitTestBaseClass + * the caller's test class + * @param resourcePaths + * resource paths of test result reports + * @param expectedBuildResult + * expected build results for assertion + * + * @return created and ran build + */ + public static Build createFreeStyleJobAndRunBuild(AbstractJUnitTest abstractJUnitTestBaseClass, + List resourcePaths, String expectedBuildResult) { + Build build = getCreatedFreeStyleJobWithResources(abstractJUnitTestBaseClass, resourcePaths).startBuild(); + assertThat(build.getResult()).isEqualTo(expectedBuildResult); + build.open(); + return build; + } + + /** + * Creates a freestyle Job with resources. + * + * @param abstractJUnitTestBaseClass + * the caller's test class + * @param resourcePaths + * resource paths of test result reports + * + * @return created freestyle job. + */ + public static Job getCreatedFreeStyleJobWithResources(AbstractJUnitTest abstractJUnitTestBaseClass, + List resourcePaths) { + FreeStyleJob j = abstractJUnitTestBaseClass.jenkins.jobs.create(); + FixedCopyJobDecorator fixedCopyJob = new FixedCopyJobDecorator(j); + fixedCopyJob.getJob().configure(); + for (String resourcePath : resourcePaths) { + fixedCopyJob.copyResource(abstractJUnitTestBaseClass.resource(resourcePath)); + } + JUnitPublisher publisher = fixedCopyJob.getJob().addPublisher(JUnitPublisher.class); + publisher.testResults.set("*.xml"); + + fixedCopyJob.getJob().save(); + return fixedCopyJob.getJob(); + } + + /** + * Creates a freestyle and runs two consecutive builds with different test result report which increases failure + * count in the second build. + * + * @param abstractJUnitTestBaseClass + * the caller's test class + * + * @return second build + */ + public static Build createTwoBuildsWithIncreasedTestFailures(AbstractJUnitTest abstractJUnitTestBaseClass) { + FreeStyleJob j = abstractJUnitTestBaseClass.jenkins.jobs.create(); + FixedCopyJobDecorator fixedCopyJob = new FixedCopyJobDecorator(j); + fixedCopyJob.getJob().configure(); + fixedCopyJob.copyResource(abstractJUnitTestBaseClass.resource("/failure/three_failed_two_succeeded.xml")); + fixedCopyJob.copyResource(abstractJUnitTestBaseClass.resource("/failure/four_failed_one_succeeded.xml")); + fixedCopyJob.getJob().addPublisher(JUnitPublisher.class).testResults.set("three_failed_two_succeeded.xml"); + fixedCopyJob.getJob().save(); + fixedCopyJob.getJob().startBuild().shouldBeUnstable(); + + fixedCopyJob.getJob().configure(); + fixedCopyJob.getJob() + .editPublisher(JUnitPublisher.class, + publisher -> publisher.testResults.set("four_failed_one_succeeded.xml")); + + fixedCopyJob.getJob().startBuild().shouldBeUnstable().openStatusPage(); + return fixedCopyJob.getJob().getLastBuild(); + } + + /** + * Asserts given predicates within the given collection. + * + * @param collection + * collection to be asserted + * @param predicates + * assertion criteria + * @param + * the type of elements in this collection + */ + public static void assertElementInCollection(Collection collection, + Predicate... predicates) { + // TODO: assert length of collection and predicates + if (collection.size() != predicates.length) { + throw new AssertionError(); + } + assertThat(Stream.of(predicates).allMatch(predicate -> collection.stream() + .filter(predicate) + .findAny() + .isPresent())).isTrue(); + } +} diff --git a/ui-tests/src/test/resources/README.md b/ui-tests/src/test/resources/README.md new file mode 100644 index 000000000..c6f45787e --- /dev/null +++ b/ui-tests/src/test/resources/README.md @@ -0,0 +1,2 @@ +Please delete me after you added some files here. +The files to be added here are resource files to be used while UI testing. \ No newline at end of file diff --git a/ui-tests/src/test/resources/failure/TEST-com.simple.project.AppTest.xml b/ui-tests/src/test/resources/failure/TEST-com.simple.project.AppTest.xml new file mode 100644 index 000000000..dd42384cb --- /dev/null +++ b/ui-tests/src/test/resources/failure/TEST-com.simple.project.AppTest.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + junit.framework.AssertionFailedError + at junit.framework.Assert.fail(Assert.java:47) + at junit.framework.Assert.assertTrue(Assert.java:20) + at junit.framework.Assert.assertTrue(Assert.java:27) + at com.simple.project.AppTest.testApp(AppTest.java:36) + + + \ No newline at end of file diff --git a/ui-tests/src/test/resources/failure/com.simple.project.AppTest.txt b/ui-tests/src/test/resources/failure/com.simple.project.AppTest.txt new file mode 100644 index 000000000..7c6431a23 --- /dev/null +++ b/ui-tests/src/test/resources/failure/com.simple.project.AppTest.txt @@ -0,0 +1,11 @@ +------------------------------------------------------------------------------- +Test set: com.simple.project.AppTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.014 sec <<< FAILURE! +testApp(com.simple.project.AppTest) Time elapsed: 0.007 sec <<< FAILURE! +junit.framework.AssertionFailedError + at junit.framework.Assert.fail(Assert.java:47) + at junit.framework.Assert.assertTrue(Assert.java:20) + at junit.framework.Assert.assertTrue(Assert.java:27) + at com.simple.project.AppTest.testApp(AppTest.java:36) + diff --git a/ui-tests/src/test/resources/failure/four_failed_one_succeeded.xml b/ui-tests/src/test/resources/failure/four_failed_one_succeeded.xml new file mode 100644 index 000000000..62c76aaee --- /dev/null +++ b/ui-tests/src/test/resources/failure/four_failed_one_succeeded.xml @@ -0,0 +1,63 @@ + + + + junit.framework.AssertionFailedError + at junit.framework.Assert.fail(Assert.java:47) + at junit.framework.Assert.assertTrue(Assert.java:20) + at junit.framework.Assert.assertTrue(Assert.java:27) + at com.simple.project.AppTest.testApp(AppTest.java:36) + + + + + + + + + + + + + + + java.lang.AssertionError: expected:<42> but was:<0> + at org.junit.Assert.fail(Assert.java:88) + at org.junit.Assert.failNotEquals(Assert.java:743) + at org.junit.Assert.assertEquals(Assert.java:118) + at org.junit.Assert.assertEquals(Assert.java:555) + at org.junit.Assert.assertEquals(Assert.java:542) + at JUnit.testScore(JUnitTC.java:21) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:606) + at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) + at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) + at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) + at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) + at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) + at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) + at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) + at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) + at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) + at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) + at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) + at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) + at org.junit.runners.ParentRunner.run(ParentRunner.java:309) + at org.junit.runners.Suite.runChild(Suite.java:127) + at org.junit.runners.Suite.runChild(Suite.java:26) + at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) + at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) + at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) + at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) + at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) + at org.junit.runners.ParentRunner.run(ParentRunner.java:309) + at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) + at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) + + + diff --git a/ui-tests/src/test/resources/failure/three_failed_two_succeeded.xml b/ui-tests/src/test/resources/failure/three_failed_two_succeeded.xml new file mode 100644 index 000000000..2dc566de1 --- /dev/null +++ b/ui-tests/src/test/resources/failure/three_failed_two_succeeded.xml @@ -0,0 +1,61 @@ + + + + junit.framework.AssertionFailedError + at junit.framework.Assert.fail(Assert.java:47) + at junit.framework.Assert.assertTrue(Assert.java:20) + at junit.framework.Assert.assertTrue(Assert.java:27) + at com.simple.project.AppTest.testApp(AppTest.java:36) + + + + + + + + + + + + + java.lang.AssertionError: expected:<42> but was:<0> + at org.junit.Assert.fail(Assert.java:88) + at org.junit.Assert.failNotEquals(Assert.java:743) + at org.junit.Assert.assertEquals(Assert.java:118) + at org.junit.Assert.assertEquals(Assert.java:555) + at org.junit.Assert.assertEquals(Assert.java:542) + at JUnit.testScore(JUnitTC.java:21) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:606) + at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) + at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) + at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) + at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) + at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) + at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) + at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) + at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) + at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) + at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) + at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) + at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) + at org.junit.runners.ParentRunner.run(ParentRunner.java:309) + at org.junit.runners.Suite.runChild(Suite.java:127) + at org.junit.runners.Suite.runChild(Suite.java:26) + at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) + at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) + at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) + at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) + at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) + at org.junit.runners.ParentRunner.run(ParentRunner.java:309) + at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) + at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) + + + diff --git a/ui-tests/src/test/resources/parameterized/junit.xml b/ui-tests/src/test/resources/parameterized/junit.xml new file mode 100644 index 000000000..eb2aeab30 --- /dev/null +++ b/ui-tests/src/test/resources/parameterized/junit.xml @@ -0,0 +1,136 @@ + + + + + java.lang.AssertionError: expected:<42> but was:<0> + at org.junit.Assert.fail(Assert.java:88) + at org.junit.Assert.failNotEquals(Assert.java:743) + at org.junit.Assert.assertEquals(Assert.java:118) + at org.junit.Assert.assertEquals(Assert.java:555) + at org.junit.Assert.assertEquals(Assert.java:542) + at JUnit.testScore(JUnitTC.java:21) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:606) + at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) + at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) + at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) + at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) + at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) + at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) + at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) + at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) + at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) + at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) + at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) + at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) + at org.junit.runners.ParentRunner.run(ParentRunner.java:309) + at org.junit.runners.Suite.runChild(Suite.java:127) + at org.junit.runners.Suite.runChild(Suite.java:26) + at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) + at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) + at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) + at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) + at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) + at org.junit.runners.ParentRunner.run(ParentRunner.java:309) + at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) + at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) + + + + + + + java.lang.AssertionError: expected:<42> but was:<1> + at org.junit.Assert.fail(Assert.java:88) + at org.junit.Assert.failNotEquals(Assert.java:743) + at org.junit.Assert.assertEquals(Assert.java:118) + at org.junit.Assert.assertEquals(Assert.java:555) + at org.junit.Assert.assertEquals(Assert.java:542) + at JUnit.testScore(JUnitTC.java:21) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:606) + at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) + at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) + at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) + at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) + at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) + at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) + at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) + at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) + at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) + at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) + at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) + at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) + at org.junit.runners.ParentRunner.run(ParentRunner.java:309) + at org.junit.runners.Suite.runChild(Suite.java:127) + at org.junit.runners.Suite.runChild(Suite.java:26) + at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) + at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) + at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) + at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) + at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) + at org.junit.runners.ParentRunner.run(ParentRunner.java:309) + at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) + at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) + + + + + + + java.lang.AssertionError: expected:<42> but was:<2> + at org.junit.Assert.fail(Assert.java:88) + at org.junit.Assert.failNotEquals(Assert.java:743) + at org.junit.Assert.assertEquals(Assert.java:118) + at org.junit.Assert.assertEquals(Assert.java:555) + at org.junit.Assert.assertEquals(Assert.java:542) + at JUnit.testScore(JUnitTC.java:21) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:606) + at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) + at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) + at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) + at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) + at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) + at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) + at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) + at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) + at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) + at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) + at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) + at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) + at org.junit.runners.ParentRunner.run(ParentRunner.java:309) + at org.junit.runners.Suite.runChild(Suite.java:127) + at org.junit.runners.Suite.runChild(Suite.java:26) + at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) + at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) + at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) + at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) + at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) + at org.junit.runners.ParentRunner.run(ParentRunner.java:309) + at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) + at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) + at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) + + + + + + diff --git a/ui-tests/src/test/resources/parameterized/testng.xml b/ui-tests/src/test/resources/parameterized/testng.xml new file mode 100644 index 000000000..2d27c3eca --- /dev/null +++ b/ui-tests/src/test/resources/parameterized/testng.xml @@ -0,0 +1,142 @@ + + + + + + but was:<2> + at org.testng.AssertJUnit.fail(AssertJUnit.java:59) + at org.testng.AssertJUnit.failNotEquals(AssertJUnit.java:364) + at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:80) + at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:245) + at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:252) + at TestNG.testScore(TestNG.java:12) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:606) + at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80) + at org.testng.internal.Invoker.invokeMethod(Invoker.java:702) + at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:894) + at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1219) + at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) + at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) + at org.testng.TestRunner.privateRun(TestRunner.java:768) + at org.testng.TestRunner.run(TestRunner.java:617) + at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) + at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) + at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) + at org.testng.SuiteRunner.run(SuiteRunner.java:240) + at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53) + at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:87) + at org.testng.TestNG.runSuitesSequentially(TestNG.java:1188) + at org.testng.TestNG.runSuitesLocally(TestNG.java:1113) + at org.testng.TestNG.run(TestNG.java:1025) + at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:77) + at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:189) + at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:105) + at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:117) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:606) + at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:208) + at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:158) + at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:86) + at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153) + at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:95) +]]> + + + + + but was:<0> + at org.testng.AssertJUnit.fail(AssertJUnit.java:59) + at org.testng.AssertJUnit.failNotEquals(AssertJUnit.java:364) + at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:80) + at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:245) + at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:252) + at TestNG.testScore(TestNG.java:12) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:606) + at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80) + at org.testng.internal.Invoker.invokeMethod(Invoker.java:702) + at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:894) + at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1219) + at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) + at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) + at org.testng.TestRunner.privateRun(TestRunner.java:768) + at org.testng.TestRunner.run(TestRunner.java:617) + at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) + at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) + at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) + at org.testng.SuiteRunner.run(SuiteRunner.java:240) + at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53) + at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:87) + at org.testng.TestNG.runSuitesSequentially(TestNG.java:1188) + at org.testng.TestNG.runSuitesLocally(TestNG.java:1113) + at org.testng.TestNG.run(TestNG.java:1025) + at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:77) + at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:189) + at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:105) + at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:117) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:606) + at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:208) + at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:158) + at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:86) + at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153) + at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:95) +]]> + + + + + but was:<1> + at org.testng.AssertJUnit.fail(AssertJUnit.java:59) + at org.testng.AssertJUnit.failNotEquals(AssertJUnit.java:364) + at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:80) + at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:245) + at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:252) + at TestNG.testScore(TestNG.java:12) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:606) + at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80) + at org.testng.internal.Invoker.invokeMethod(Invoker.java:702) + at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:894) + at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1219) + at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) + at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) + at org.testng.TestRunner.privateRun(TestRunner.java:768) + at org.testng.TestRunner.run(TestRunner.java:617) + at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) + at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) + at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) + at org.testng.SuiteRunner.run(SuiteRunner.java:240) + at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53) + at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:87) + at org.testng.TestNG.runSuitesSequentially(TestNG.java:1188) + at org.testng.TestNG.runSuitesLocally(TestNG.java:1113) + at org.testng.TestNG.run(TestNG.java:1025) + at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:77) + at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:189) + at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:105) + at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:117) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:606) + at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:208) + at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:158) + at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:86) + at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153) + at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:95) +]]> + + + diff --git a/ui-tests/src/test/resources/success/TEST-com.simple.project.AppTest.xml b/ui-tests/src/test/resources/success/TEST-com.simple.project.AppTest.xml new file mode 100644 index 000000000..2ce9ec0f9 --- /dev/null +++ b/ui-tests/src/test/resources/success/TEST-com.simple.project.AppTest.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ui-tests/src/test/resources/success/com.simple.project.AppTest.txt b/ui-tests/src/test/resources/success/com.simple.project.AppTest.txt new file mode 100644 index 000000000..74de4a3a1 --- /dev/null +++ b/ui-tests/src/test/resources/success/com.simple.project.AppTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: com.simple.project.AppTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.017 sec diff --git a/ui-tests/src/test/resources/success/junit-with-long-output.xml b/ui-tests/src/test/resources/success/junit-with-long-output.xml new file mode 100644 index 000000000..ee65c9fc6 --- /dev/null +++ b/ui-tests/src/test/resources/success/junit-with-long-output.xml @@ -0,0 +1,31 @@ + + + + + + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + + Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + + Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + + Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + + Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + + At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + + Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. + + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + + Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + + Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + + Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo + + + + +