diff --git a/.ddev/commands/web/test b/.ddev/commands/web/test new file mode 100755 index 0000000..877b9bb --- /dev/null +++ b/.ddev/commands/web/test @@ -0,0 +1,7 @@ +#!/bin/bash +## Description: Run functional tests +## Usage: test [phpunit-args] +## Example: "ddev test", "ddev test --filter clearCacheOptions" + +cd /var/www/html +.Build/bin/phpunit -c Build/phpunit/FunctionalTests.xml Tests/Functional "$@" diff --git a/.ddev/config.yaml b/.ddev/config.yaml new file mode 100644 index 0000000..21731a1 --- /dev/null +++ b/.ddev/config.yaml @@ -0,0 +1,19 @@ +name: permission-sets +type: php +php_version: "8.4" +database: + type: mariadb + version: "10.11" +webserver_type: generic +router_http_port: "80" +router_https_port: "443" + +hooks: + post-start: + - exec-host: ddev mysql --database=mysql -e "GRANT ALL ON \`typo3_%\`.* TO 'db'@'%'; FLUSH PRIVILEGES;" + +web_environment: + - typo3DatabaseName=typo3 + - typo3DatabaseHost=db + - typo3DatabaseUsername=db + - typo3DatabasePassword=db diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..4229670 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,69 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +charset = utf-8 +end_of_line = lf +indent_style = space +indent_size = 4 +insert_final_newline = true +trim_trailing_whitespace = true + +# TS/JS-Files +[*.{ts,js}] +indent_size = 2 + +# JSON-Files +[*.json] +indent_style = tab + +# ReST-Files +[*.{rst,rst.txt}] +indent_size = 4 +max_line_length = 80 + +# Markdown-Files +[*.md] +max_line_length = 80 + +# YAML-Files +[*.{yaml,yml}] +indent_size = 2 + +# NEON-Files +[*.neon] +indent_size = 2 +indent_style = tab + +#.eslintrc.json +[.eslintrc.json] +indent_size = 2 +indent_style = space + +# stylelint +[.stylelintrc] +indent_size = 2 + +# package.json +[package.json] +indent_size = 2 + +# TypoScript +[*.{typoscript,tsconfig}] +indent_size = 2 + +# XLF-Files +[*.xlf] +indent_style = tab + +# SQL-Files +[*.sql] +indent_style = tab +indent_size = 2 + +# .htaccess +[{_.htaccess,.htaccess}] +indent_style = tab diff --git a/.gitattributes b/.gitattributes index 1f4997c..bfb01ae 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,5 @@ /.gitattributes export-ignore +/.ddev export-ignore /Tests/ export-ignore /Build/ export-ignore /.gitignore export-ignore diff --git a/Build/Packages/permission-sets-examples/Configuration/PermissionSets/clear-all-cache-settings.yaml b/Build/Packages/permission-sets-examples/Configuration/PermissionSets/clear-all-cache-settings.yaml index 2871852..ece6b00 100644 --- a/Build/Packages/permission-sets-examples/Configuration/PermissionSets/clear-all-cache-settings.yaml +++ b/Build/Packages/permission-sets-examples/Configuration/PermissionSets/clear-all-cache-settings.yaml @@ -1,4 +1,5 @@ label: clear all cache settings: - TCEMAIN: - clearCache: all \ No newline at end of file + options: + clearCache: + all: 1 \ No newline at end of file diff --git a/Build/Packages/permission-sets-examples/Configuration/PermissionSets/tcemain-clear-cache-cmd.yaml b/Build/Packages/permission-sets-examples/Configuration/PermissionSets/tcemain-clear-cache-cmd.yaml new file mode 100644 index 0000000..5c22bcd --- /dev/null +++ b/Build/Packages/permission-sets-examples/Configuration/PermissionSets/tcemain-clear-cache-cmd.yaml @@ -0,0 +1,4 @@ +label: TCEMAIN clear cache cmd +settings: + TCEMAIN: + clearCacheCmd: all diff --git a/Build/php-cs-fixer.php b/Build/php-cs-fixer.php index 151f8f9..0bdbbc6 100644 --- a/Build/php-cs-fixer.php +++ b/Build/php-cs-fixer.php @@ -15,4 +15,3 @@ 'declare_strict_types' => true, ]) ->setUsingCache(false); - diff --git a/Tests/Functional/AttachPermissionsToGroupsTest.php b/Tests/Functional/AttachPermissionsToGroupsTest.php index 30aa7d4..72bab13 100644 --- a/Tests/Functional/AttachPermissionsToGroupsTest.php +++ b/Tests/Functional/AttachPermissionsToGroupsTest.php @@ -262,6 +262,19 @@ public function clearAllCacheSettings(): void $attachPermissionsToGroups = GeneralUtility::makeInstance(AttachPermissionsToGroups::class); $attachPermissionsToGroups($event); $modGroup = $event->getGroups()[0]; - self::assertStringContainsString('TCEMAIN.clearCache = all', $modGroup['TSconfig']); + self::assertStringContainsString('options.clearCache.all = 1', $modGroup['TSconfig']); } + + #[Test] + public function tcemainClearCacheCmd(): void + { + $group = $this->emptyGroup; + $group['permission_sets'] = 'b13/permission-sets-examples/tcemain-clear-cache-cmd'; + $event = new AfterGroupsResolvedEvent('be_groups', [$group], [1], []); + $attachPermissionsToGroups = GeneralUtility::makeInstance(AttachPermissionsToGroups::class); + $attachPermissionsToGroups($event); + $modGroup = $event->getGroups()[0]; + self::assertStringContainsString('TCEMAIN.clearCacheCmd = all', $modGroup['TSconfig']); + } + } diff --git a/composer.json b/composer.json index d4950ff..6a878cb 100644 --- a/composer.json +++ b/composer.json @@ -21,11 +21,11 @@ } }, "require-dev": { - "typo3/cms-dashboard": "^12.4 || ^13.4 || ^14.3", + "b13/permission-sets-examples": "1.0.0", "saschaegerer/phpstan-typo3": "^1.8 || ^2.0", - "typo3/coding-standards": "^0.8.0", - "typo3/testing-framework": "^8.0 || ^9.0", - "b13/permission-sets-examples": "1.0.0" + "typo3/cms-dashboard": "^12.4 || ^13.4 || ^14.3", + "typo3/coding-standards": "^0.8", + "typo3/testing-framework": "^8.0 || ^9.0" }, "config": { "vendor-dir": ".Build/vendor",