ACS-9420 pre-commit checks and reformat code (#1650)

* ACS-9420 Reformat code and add pre-commit checks to CI

* Trigger [reformat code]

* Apply Pre-Commit code formatting

---------

Co-authored-by: alfresco-build <alfresco-build@users.noreply.github.com>
This commit is contained in:
Gerard Olenski
2025-03-19 10:05:05 +01:00
committed by GitHub
parent 3c34c532d0
commit 6252de4707
8 changed files with 548 additions and 178 deletions

View File

@@ -33,6 +33,18 @@ env:
DEVELOPMENT_VERSION: 25.2.0-A2-SNAPSHOT
jobs:
precommit:
name: Pre-Commit checks
runs-on: ubuntu-latest
if: >
!contains(github.event.head_commit.message, '[skip tests]')
steps:
- uses: actions/checkout@v4
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
- uses: Alfresco/alfresco-build-tools/.github/actions/pre-commit@v8.16.0
tas_tests:
name: ${{ matrix.testSuite }} TAS tests
runs-on: ubuntu-latest
@@ -79,8 +91,8 @@ jobs:
compose-file: docker-compose-minimal.yml
steps:
- uses: actions/checkout@v4
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.13.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.13.0
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
- name: "Init"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: |
@@ -101,8 +113,8 @@ jobs:
if: "!contains(github.event.head_commit.message, '[skip tests]')"
steps:
- uses: actions/checkout@v4
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.13.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.13.0
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
- name: "Init"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: |
@@ -125,9 +137,9 @@ jobs:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.13.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.13.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.13.0
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
- name: "Build"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: |
@@ -163,9 +175,9 @@ jobs:
- 5000:5000
steps:
- uses: actions/checkout@v4
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.13.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.13.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.13.0
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: "Init"
@@ -197,9 +209,9 @@ jobs:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.13.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.13.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.13.0
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: "Init"
@@ -238,7 +250,7 @@ jobs:
github.event_name != 'pull_request'
steps:
- uses: actions/checkout@v4
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.13.0
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
- name: "Configure AWS credentials"
uses: aws-actions/configure-aws-credentials@v4
with:

View File

@@ -0,0 +1,39 @@
name: Pre-Commit formatter
on:
push:
branches:
- precommit/**
env:
MAVEN_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
MAVEN_USERNAME: ${{ secrets.NEXUS_USERNAME }}
jobs:
format-code:
name: "Reformat code"
runs-on: ubuntu-latest
if: contains(github.event.head_commit.message, '[reformat code]')
steps:
- uses: actions/checkout@v4
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
- name: Set up Python ${{ inputs.python-version }}
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
with:
python-version: "3.9"
- uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1
continue-on-error: true
with:
extra_args: --all-files
- name: Update secrets baseline
run: pip install detect-secrets && detect-secrets scan --baseline .secrets.baseline
- uses: Alfresco/alfresco-build-tools/.github/actions/git-commit-changes@v8.16.0
with:
username: ${{ secrets.BOT_GITHUB_USERNAME }}
add-options: -u
commit-message: "Apply Pre-Commit code formatting"
skip-if-no-changes: true
- name: Push changes
run: git push

14
.pre-commit-config.yaml Normal file
View File

@@ -0,0 +1,14 @@
repos:
- repo: https://github.com/Yelp/detect-secrets
rev: v1.5.0
hooks:
- id: detect-secrets
args: ["--baseline", ".secrets.baseline"]
- repo: local
hooks:
- id: check-format-and-headers
name: Check format and headers and fix if necessary
entry: ./scripts/hooks/check-format-and-headers.sh
language: script
files: ".*.java"
pass_filenames: false

292
.secrets.baseline Normal file
View File

@@ -0,0 +1,292 @@
{
"version": "1.5.0",
"plugins_used": [
{
"name": "ArtifactoryDetector"
},
{
"name": "AWSKeyDetector"
},
{
"name": "AzureStorageKeyDetector"
},
{
"name": "Base64HighEntropyString",
"limit": 4.5
},
{
"name": "BasicAuthDetector"
},
{
"name": "CloudantDetector"
},
{
"name": "DiscordBotTokenDetector"
},
{
"name": "GitHubTokenDetector"
},
{
"name": "GitLabTokenDetector"
},
{
"name": "HexHighEntropyString",
"limit": 3.0
},
{
"name": "IbmCloudIamDetector"
},
{
"name": "IbmCosHmacDetector"
},
{
"name": "IPPublicDetector"
},
{
"name": "JwtTokenDetector"
},
{
"name": "KeywordDetector",
"keyword_exclude": ""
},
{
"name": "MailchimpDetector"
},
{
"name": "NpmDetector"
},
{
"name": "OpenAIDetector"
},
{
"name": "PrivateKeyDetector"
},
{
"name": "PypiTokenDetector"
},
{
"name": "SendGridDetector"
},
{
"name": "SlackDetector"
},
{
"name": "SoftlayerDetector"
},
{
"name": "SquareOAuthDetector"
},
{
"name": "StripeDetector"
},
{
"name": "TelegramBotTokenDetector"
},
{
"name": "TwilioKeyDetector"
}
],
"filters_used": [
{
"path": "detect_secrets.filters.allowlist.is_line_allowlisted"
},
{
"path": "detect_secrets.filters.common.is_baseline_file",
"filename": ".secrets.baseline"
},
{
"path": "detect_secrets.filters.common.is_ignored_due_to_verification_policies",
"min_level": 2
},
{
"path": "detect_secrets.filters.heuristic.is_indirect_reference"
},
{
"path": "detect_secrets.filters.heuristic.is_likely_id_string"
},
{
"path": "detect_secrets.filters.heuristic.is_lock_file"
},
{
"path": "detect_secrets.filters.heuristic.is_not_alphanumeric_string"
},
{
"path": "detect_secrets.filters.heuristic.is_potential_uuid"
},
{
"path": "detect_secrets.filters.heuristic.is_prefixed_with_dollar_sign"
},
{
"path": "detect_secrets.filters.heuristic.is_sequential_string"
},
{
"path": "detect_secrets.filters.heuristic.is_swagger_file"
},
{
"path": "detect_secrets.filters.heuristic.is_templated_secret"
}
],
"results": {
"dev/dev-tomcat/src/main/tomcat/shared/classes/alfresco-global.properties": [
{
"type": "Secret Keyword",
"filename": "dev/dev-tomcat/src/main/tomcat/shared/classes/alfresco-global.properties",
"hashed_secret": "a4a747bd4ba5e3a5049cad116881867c71fb625b",
"is_verified": false,
"line_number": 8
}
],
"dev/dev-tomcat/src/main/tomcat/tomcat-users.xml": [
{
"type": "Secret Keyword",
"filename": "dev/dev-tomcat/src/main/tomcat/tomcat-users.xml",
"hashed_secret": "2be88ca4242c76e8253ac62474851065032d6833",
"is_verified": false,
"line_number": 19
}
],
"dev/docker-compose.yml": [
{
"type": "Secret Keyword",
"filename": "dev/docker-compose.yml",
"hashed_secret": "d1ebbc78705ad98aa2c8fb357d2e30c8f001673a",
"is_verified": false,
"line_number": 41
}
],
"tests/environment/docker-compose-minimal+transforms.yml": [
{
"type": "Secret Keyword",
"filename": "tests/environment/docker-compose-minimal+transforms.yml",
"hashed_secret": "9e3d103f7aa5f4f778cf752087dfceeba15d4fef",
"is_verified": false,
"line_number": 13
},
{
"type": "Secret Keyword",
"filename": "tests/environment/docker-compose-minimal+transforms.yml",
"hashed_secret": "92cda941553ea9ba9b39716c79a46b08a740613c",
"is_verified": false,
"line_number": 23
},
{
"type": "Secret Keyword",
"filename": "tests/environment/docker-compose-minimal+transforms.yml",
"hashed_secret": "d1ebbc78705ad98aa2c8fb357d2e30c8f001673a",
"is_verified": false,
"line_number": 76
}
],
"tests/environment/docker-compose-minimal.yml": [
{
"type": "Secret Keyword",
"filename": "tests/environment/docker-compose-minimal.yml",
"hashed_secret": "9e3d103f7aa5f4f778cf752087dfceeba15d4fef",
"is_verified": false,
"line_number": 13
},
{
"type": "Secret Keyword",
"filename": "tests/environment/docker-compose-minimal.yml",
"hashed_secret": "92cda941553ea9ba9b39716c79a46b08a740613c",
"is_verified": false,
"line_number": 23
},
{
"type": "Secret Keyword",
"filename": "tests/environment/docker-compose-minimal.yml",
"hashed_secret": "d1ebbc78705ad98aa2c8fb357d2e30c8f001673a",
"is_verified": false,
"line_number": 79
}
],
"tests/tas-cmis/src/test/resources/default.properties": [
{
"type": "Secret Keyword",
"filename": "tests/tas-cmis/src/test/resources/default.properties",
"hashed_secret": "d033e22ae348aeb5660fc2140aec35850c4da997",
"is_verified": false,
"line_number": 8
},
{
"type": "Secret Keyword",
"filename": "tests/tas-cmis/src/test/resources/default.properties",
"hashed_secret": "a4a747bd4ba5e3a5049cad116881867c71fb625b",
"is_verified": false,
"line_number": 84
}
],
"tests/tas-email/src/test/resources/default.properties": [
{
"type": "Secret Keyword",
"filename": "tests/tas-email/src/test/resources/default.properties",
"hashed_secret": "d033e22ae348aeb5660fc2140aec35850c4da997",
"is_verified": false,
"line_number": 8
},
{
"type": "Secret Keyword",
"filename": "tests/tas-email/src/test/resources/default.properties",
"hashed_secret": "43b7ed74f99cf021109506832a48aa75435b817d",
"is_verified": false,
"line_number": 35
},
{
"type": "Secret Keyword",
"filename": "tests/tas-email/src/test/resources/default.properties",
"hashed_secret": "a4a747bd4ba5e3a5049cad116881867c71fb625b",
"is_verified": false,
"line_number": 97
}
],
"tests/tas-integration/src/test/resources/default.properties": [
{
"type": "Secret Keyword",
"filename": "tests/tas-integration/src/test/resources/default.properties",
"hashed_secret": "d033e22ae348aeb5660fc2140aec35850c4da997",
"is_verified": false,
"line_number": 8
},
{
"type": "Secret Keyword",
"filename": "tests/tas-integration/src/test/resources/default.properties",
"hashed_secret": "a4a747bd4ba5e3a5049cad116881867c71fb625b",
"is_verified": false,
"line_number": 118
}
],
"tests/tas-restapi/src/test/resources/default.properties": [
{
"type": "Secret Keyword",
"filename": "tests/tas-restapi/src/test/resources/default.properties",
"hashed_secret": "d033e22ae348aeb5660fc2140aec35850c4da997",
"is_verified": false,
"line_number": 21
},
{
"type": "Secret Keyword",
"filename": "tests/tas-restapi/src/test/resources/default.properties",
"hashed_secret": "a4a747bd4ba5e3a5049cad116881867c71fb625b",
"is_verified": false,
"line_number": 87
}
],
"tests/tas-webdav/src/test/resources/default.properties": [
{
"type": "Secret Keyword",
"filename": "tests/tas-webdav/src/test/resources/default.properties",
"hashed_secret": "d033e22ae348aeb5660fc2140aec35850c4da997",
"is_verified": false,
"line_number": 8
},
{
"type": "Secret Keyword",
"filename": "tests/tas-webdav/src/test/resources/default.properties",
"hashed_secret": "a4a747bd4ba5e3a5049cad116881867c71fb625b",
"is_verified": false,
"line_number": 73
}
]
},
"generated_at": "2025-03-18T15:20:48Z"
}

View File

@@ -247,4 +247,13 @@
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,7 @@
#!/usr/bin/env bash
set +x
mvn spotless:apply validate -DlicenseUpdateHeaders=true -Pags,all-tas-tests > /dev/null || true
set -x

View File

@@ -25,7 +25,6 @@
*/
package org.alfresco.distribution;
import org.testng.annotations.Test;
import static org.assertj.core.api.Assertions.assertThat;
import java.io.File;
@@ -40,6 +39,7 @@ import java.util.zip.ZipFile;
import org.apache.maven.model.Model;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.testng.annotations.Test;
public class CheckDistributionZipContents
{
@@ -56,22 +56,20 @@ public class CheckDistributionZipContents
for (File file : filesList)
{
List<String> zipEntries = getZipEntries(file.getAbsolutePath());
assertThat(zipEntries).
contains(
"keystore/metadata-keystore/keystore-passwords.properties",
"keystore/metadata-keystore/keystore",
"keystore/generate_keystores.bat",
"keystore/generate_keystores.sh",
"bin/alfresco-mmt.jar",
"bin/apply_amps.bat",
"bin/apply_amps.sh",
"web-server/webapps/ROOT.war",
"web-server/webapps/alfresco.war",
"web-server/webapps/share.war",
"web-server/webapps/_vti_bin.war",
"web-server/conf/Catalina/localhost/alfresco.xml",
"web-server/shared/classes/alfresco/web-extension/share-config-custom.xml"
);
assertThat(zipEntries).contains(
"keystore/metadata-keystore/keystore-passwords.properties",
"keystore/metadata-keystore/keystore",
"keystore/generate_keystores.bat",
"keystore/generate_keystores.sh",
"bin/alfresco-mmt.jar",
"bin/apply_amps.bat",
"bin/apply_amps.sh",
"web-server/webapps/ROOT.war",
"web-server/webapps/alfresco.war",
"web-server/webapps/share.war",
"web-server/webapps/_vti_bin.war",
"web-server/conf/Catalina/localhost/alfresco.xml",
"web-server/shared/classes/alfresco/web-extension/share-config-custom.xml");
}
}
@@ -84,12 +82,10 @@ public class CheckDistributionZipContents
for (File file : filesList)
{
List<String> zipEntries = getZipEntries(file.getAbsolutePath());
assertThat(zipEntries).
contains(
"alfresco-governance-services-community-repo-" + repoVersion + ".amp",
"alfresco-governance-services-community-rest-api-explorer-" + repoVersion + ".war",
"alfresco-governance-services-community-share-" + shareVersion + ".amp"
);
assertThat(zipEntries).contains(
"alfresco-governance-services-community-repo-" + repoVersion + ".amp",
"alfresco-governance-services-community-rest-api-explorer-" + repoVersion + ".war",
"alfresco-governance-services-community-share-" + shareVersion + ".amp");
}
}

View File

@@ -1,15 +1,16 @@
package org.alfresco.email.imap;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.alfresco.email.EmailTest;
import org.alfresco.utility.model.*;
import org.alfresco.utility.testrail.ExecutionType;
import org.alfresco.utility.testrail.annotation.TestRail;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ImapReadMessagesAcsTests extends EmailTest
{
@BeforeClass(alwaysRun=true)
@BeforeClass(alwaysRun = true)
public void dataPreparation() throws Exception
{
testUser = dataUser.createRandomTestUser();
@@ -18,13 +19,13 @@ public class ImapReadMessagesAcsTests extends EmailTest
adminSite = dataSite.usingAdmin().createIMAPSite();
}
@TestRail(section = { TestGroup.PROTOCOLS, TestGroup.IMAP }, executionType = ExecutionType.REGRESSION,
@TestRail(section = {TestGroup.PROTOCOLS, TestGroup.IMAP}, executionType = ExecutionType.REGRESSION,
description = "Verify that site manager can see wiki pages via IMAP")
@Test(groups = { TestGroup.PROTOCOLS, TestGroup.IMAP, TestGroup.CORE })
@Test(groups = {TestGroup.PROTOCOLS, TestGroup.IMAP, TestGroup.CORE})
public void siteManagerCanViewWikiPages() throws Exception
{
dataWiki.usingUser(testUser).usingSite(testSite).createRandomWiki();
/* @Category(IntermittentlyFailingTests.class) ACS-959 Intermittent failure on next line. @Category not supported by TAS tests. */
// ACS-2268 comment out: imapProtocol.authenticateUser(testUser).usingSiteWikiContainer(testSite).assertThat().countMessagesIs(1);
// ACS-2268 comment out: imapProtocol.authenticateUser(testUser).usingSiteWikiContainer(testSite).assertThat().countMessagesIs(1);
}
}