Merge pull request #4519 from owncloud/add-coding-standard-php-pipeline

[tests-only][full-ci]Add coding standard php pipeline
This commit is contained in:
Phil Davis
2022-09-08 18:39:25 +05:45
committed by GitHub
6 changed files with 151 additions and 24 deletions
+101 -7
View File
@@ -148,6 +148,7 @@ config = {
"architectures": ["arm", "arm64", "amd64"],
},
"litmus": True,
"codestyle": True,
}
# volume for steps to cache Go dependencies between steps of a pipeline
@@ -224,6 +225,7 @@ def main(ctx):
test_pipelines = \
cancelPreviousBuilds() + \
codestyle(ctx) + \
buildWebCache(ctx) + \
[buildOcisBinaryForTesting(ctx)] + \
cacheCoreReposForTesting(ctx) + \
@@ -560,6 +562,100 @@ def uploadScanResults(ctx):
},
}
def vendorbinCodestyle(phpVersion):
return [{
"name": "vendorbin-codestyle",
"image": OC_CI_PHP % phpVersion,
"environment": {
"COMPOSER_HOME": "%s/.cache/composer" % dirs["base"],
},
"commands": [
"make vendor-bin-codestyle",
],
}]
def vendorbinCodesniffer(phpVersion):
return [{
"name": "vendorbin-codesniffer",
"image": OC_CI_PHP % phpVersion,
"environment": {
"COMPOSER_HOME": "%s/.cache/composer" % dirs["base"],
},
"commands": [
"make vendor-bin-codesniffer",
],
}]
def codestyle(ctx):
pipelines = []
if "codestyle" not in config:
return []
default = {
"phpVersions": [DEFAULT_PHP_VERSION],
}
if "defaults" in config:
if "codestyle" in config["defaults"]:
for item in config["defaults"]["codestyle"]:
default[item] = config["defaults"]["codestyle"][item]
codestyleConfig = config["codestyle"]
if type(codestyleConfig) == "bool":
if codestyleConfig:
# the config has 'codestyle' true, so specify an empty dict that will get the defaults
codestyleConfig = {}
else:
return pipelines
if len(codestyleConfig) == 0:
# 'codestyle' is an empty dict, so specify a single section that will get the defaults
codestyleConfig = {"doDefault": {}}
for category, matrix in codestyleConfig.items():
params = {}
for item in default:
params[item] = matrix[item] if item in matrix else default[item]
for phpVersion in params["phpVersions"]:
name = "coding-standard-php%s" % phpVersion
result = {
"kind": "pipeline",
"type": "docker",
"name": name,
"workspace": {
"base": "/drone",
"path": "src",
},
"steps": skipIfUnchanged(ctx, "lint") +
vendorbinCodestyle(phpVersion) +
vendorbinCodesniffer(phpVersion) +
[
{
"name": "php-style",
"image": OC_CI_PHP % phpVersion,
"commands": [
"make test-php-style",
],
},
],
"depends_on": [],
"trigger": {
"ref": [
"refs/heads/master",
"refs/pull/**",
"refs/tags/**",
],
},
}
pipelines.append(result)
return pipelines
def localApiTests(ctx, storage, suite, accounts_hash_difficulty = 4):
early_fail = config["localApiTests"]["earlyFail"] if "earlyFail" in config["localApiTests"] else False
@@ -2008,17 +2104,15 @@ def skipIfUnchanged(ctx, type):
]
skip = []
if type == "acceptance-tests":
if type == "acceptance-tests" or type == "e2e-tests" or type == "lint":
skip = base + unit
if type == "unit-tests":
elif type == "unit-tests":
skip = base + acceptance
if type == "build-binary" or type == "build-docker" or type == "litmus":
elif type == "build-binary" or type == "build-docker" or type == "litmus":
skip = base + unit + acceptance
if type == "cache":
elif type == "cache":
skip = base
if type == "e2e-tests":
skip = base + unit
if len(skip) == 0:
else:
return []
return [{
+2 -1
View File
@@ -4,7 +4,8 @@ $dirToParse = 'tests/acceptance/';
$dirIterator = new DirectoryIterator(__DIR__ . '/' . $dirToParse);
$excludeDirs = [
'node_modules'
'node_modules',
'vendor-php'
];
$finder = PhpCsFixer\Finder::create()
+7 -1
View File
@@ -276,13 +276,19 @@ ci-format: $(BUILDIFIER)
.PHONY: test-php-style
test-php-style: vendor-bin/owncloud-codestyle/vendor vendor-bin/php_codesniffer/vendor
$(PHP_CS_FIXER) fix -v --diff --allow-risky yes --dry-run
$(PHP_CODESNIFFER) --cache --runtime-set ignore_warnings_on_exit --standard=phpcs.xml tests/acceptance
$(PHP_CODESNIFFER) --cache --runtime-set ignore_warnings_on_exit --standard=phpcs.xml tests/acceptance tests/TestHelpers
.PHONY: test-php-style-fix
test-php-style-fix: vendor-bin/owncloud-codestyle/vendor
$(PHP_CS_FIXER) fix -v --diff --allow-risky yes
$(PHP_CODEBEAUTIFIER) --cache --runtime-set ignore_warnings_on_exit --standard=phpcs.xml tests/acceptance
.PHONY: vendor-bin-codestyle
vendor-bin-codestyle: vendor-bin/owncloud-codestyle/vendor
.PHONY: vendor-bin-codesniffer
vendor-bin-codesniffer: vendor-bin/php_codesniffer/vendor
vendor-bin/owncloud-codestyle/vendor: vendor/bamarni/composer-bin-plugin vendor-bin/owncloud-codestyle/composer.lock
composer bin owncloud-codestyle install --no-progress
@@ -509,6 +509,7 @@ class GraphContext implements Context {
* @param string $shouldOrNot (not|)
* @param TableNode $table
*
* @return void
* @throws GuzzleException
* @throws Exception
*/
@@ -539,10 +540,12 @@ class GraphContext implements Context {
/**
* @When /^the user "([^"]*)" changes its own password "([^"]*)" to "([^"]*)" using the Graph API$/
*
* @param string $user
* @param string $currentPassword
* @param string $newPassword
*
* @return void
* @throws GuzzleException
* @throws Exception
*/
@@ -668,8 +668,8 @@ class SpacesContext implements Context {
*
* @param string $user
* @param string $spaceName
* @return void
*
* @return void
* @throws GuzzleException
*/
public function theUserLooksUpTheSingleSpaceUsingTheGraphApiByUsingItsId(string $user, string $spaceName): void {
@@ -847,8 +847,8 @@ class SpacesContext implements Context {
* @param string $user
* @param string $spaceName
* @param string $foldersPath
* @return void
*
* @return void
* @throws GuzzleException
*/
public function theUserListsTheContentOfAPersonalSpaceRootUsingTheWebDAvApi(
@@ -1006,9 +1006,10 @@ class SpacesContext implements Context {
/**
* @Then /^the json responded should contain a space "([^"]*)" (?:|(?:owned by|granted to) "([^"]*)" )(?:|(?:with description file|with space image) "([^"]*)" )with these key and value pairs:$/
*
* @param string $spaceName
* @param string $userName
* @param string $fileName
* @param string|null $userName
* @param string|null $fileName
* @param TableNode $table
*
* @return void
@@ -1016,8 +1017,8 @@ class SpacesContext implements Context {
*/
public function jsonRespondedShouldContain(
string $spaceName,
string $userName = '',
string $fileName = '',
?string $userName = null,
?string $fileName = null,
TableNode $table
): void {
$this->featureContext->verifyTableNodeColumns($table, ['key', 'value']);
@@ -1080,8 +1081,8 @@ class SpacesContext implements Context {
*
* @param string $user
* @param string $spaceName
* @param string $grantedUser
* @param string $fileName
* @param string|null $grantedUser
* @param string|null $fileName
* @param TableNode $table
*
* @return void
@@ -1090,8 +1091,8 @@ class SpacesContext implements Context {
public function userHasSpaceWith(
string $user,
string $spaceName,
string $grantedUser = '',
string $fileName = '',
?string $grantedUser = null,
?string $fileName = null,
TableNode $table
): void {
$this->theUserListsAllHisAvailableSpacesUsingTheGraphApi($user);
@@ -1292,6 +1293,7 @@ class SpacesContext implements Context {
* and returns found search results if found else returns false
*
* @param string|null $entryNameToSearch
* @param string $folderPath
*
* @return array
* string if $entryNameToSearch is given and is found
@@ -1545,6 +1547,7 @@ class SpacesContext implements Context {
* @param string $user
* @param string $spaceName
* @param string $newDescription
*
* @return void
* @throws GuzzleException
* @throws JsonException
@@ -2496,7 +2499,7 @@ class SpacesContext implements Context {
/**
* User get all objects in the trash of project space
*
* method "getTrashbinContentFromResponseXml" borrowed from core repository
* Method "getTrashbinContentFromResponseXml" borrowed from core repository
* and return array like:
* [1] => Array
* (
@@ -2619,6 +2622,7 @@ class SpacesContext implements Context {
* @param string $width
* @param string $height
*
* @return void
* @throws GuzzleException
*/
public function downloadPreview(
@@ -2659,6 +2663,7 @@ class SpacesContext implements Context {
* @param string $fileName
* @param string $spaceName
*
* @return void
* @throws GuzzleException
*/
public function downloadFile(
@@ -2689,6 +2694,7 @@ class SpacesContext implements Context {
* @param string $path
* @param string $spaceName
*
* @return void
* @throws GuzzleException
*/
public function userRequestsTheChecksumViaPropfindInSpace(
@@ -2726,6 +2732,7 @@ class SpacesContext implements Context {
* @param string $path
* @param string $spaceName
*
* @return void
* @throws GuzzleException
*/
public function userUploadsFileWithChecksumWithContentInSpace(
@@ -2758,6 +2765,7 @@ class SpacesContext implements Context {
* @param string $index
* @param string $spaceName
*
* @return void
* @throws GuzzleException
*/
public function downloadVersionOfTheFile(
@@ -2903,6 +2911,9 @@ class SpacesContext implements Context {
/**
* @Then /^these etags should have changed$/
*
* @param TableNode $table
*
* @return void
* @throws GuzzleException
*/
public function theseEtagsShouldHaveChanged(TableNode $table): void {
@@ -2930,6 +2941,7 @@ class SpacesContext implements Context {
*
* @param TableNode $table
*
* @return void
* @throws GuzzleException
*/
public function theseEtagsShouldNotHaveChanged(TableNode $table): void {
@@ -2955,6 +2967,11 @@ class SpacesContext implements Context {
/**
* @Given /^user "([^"]*)" has stored etag of element "([^"]*)" inside space "([^"]*)"$/
*
* @param string $user
* @param string $path
* @param string $space
*
* @return void
* @throws GuzzleException | Exception
*/
public function userHasStoredEtagOfElementFromSpace(string $user, string $path, string $space):void {
@@ -2972,9 +2989,15 @@ class SpacesContext implements Context {
/**
* @Given /^user "([^"]*)" has stored etag of element "([^"]*)" on path "([^"]*)" inside space "([^"]*)"$/
*
* @param string $user
* @param string $path
* @param string $storePath
* @param string $space
*
* @return void
* @throws Exception | GuzzleException
*/
public function userHasStoredEtagOfElementOnPathFromSpace($user, $path, $storePath, $space) {
public function userHasStoredEtagOfElementOnPathFromSpace(string $user, string $path, string $storePath, string $space):void {
$user = $this->featureContext->getActualUsername($user);
$this->storeEtagOfElementInSpaceForUser(
$user,
@@ -2995,9 +3018,10 @@ class SpacesContext implements Context {
* @param TableNode $properties
* @param string $spaceName
*
* @return void
* @throws Exception | GuzzleException
*/
public function userHasLockedResourceOfSpace(string $user, string $resource, TableNode $properties, string $spaceName) {
public function userHasLockedResourceOfSpace(string $user, string $resource, TableNode $properties, string $spaceName): void {
$this->setSpaceIDByName($user, $spaceName);
$this->webDavLockingContext->lockFileUsingWebDavAPI($user, $resource, $properties);
}
@@ -85,12 +85,11 @@ class SpacesTUSContext implements Context {
*
* @param string $user
* @param string $source
* @param string $spaceName
* @param string $destination
* @param string $spaceName
* @param array|null $uploadMetadata
*
* @return void
*
* @throws Exception
* @throws GuzzleException
*/