Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
541 changes: 541 additions & 0 deletions .ddev/commands/web/code-check

Large diffs are not rendered by default.

18 changes: 18 additions & 0 deletions .ddev/commands/web/cspell-check
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/bash

## Description: This script performs cspell checks.
## Usage: cspell-check [flags]
## Example: "ddev cspell-check"

# Installs dependencies if not already run.
if [ ! -d /var/www/html/repos/drupal/core/node_modules/.bin ]; then

corepack enable

yarn --cwd /var/www/html/repos/drupal/core install
fi

TOP_LEVEL="/var/www/html/repos/drupal/core"
cd $TOP_LEVEL

yarn run spellcheck:core --no-must-find-files --cache --cache-strategy content
8 changes: 8 additions & 0 deletions .ddev/commands/web/install
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash

## Description: Performs a default drupal installation
## Usage: install
## Example: "ddev install"

drush site:install standard --account-name=admin --account-pass=admin --site-name="Drupal 11" -y
# drush en admin_toolbar admin_toolbar_tools devel
12 changes: 12 additions & 0 deletions .ddev/commands/web/nightwatch
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/bash

## Description: Run Nightwatch
## Usage: nightwatch [flags] [args]
## Example: "ddev nightwatch" or "ddev nightwatch --tag core"

# Installs dependencies if not already run.
if [ ! -d /var/www/html/repos/drupal/core/node_modules ]; then
yarn --cwd /var/www/html/repos/drupal/core install
fi

yarn --cwd /var/www/html/repos/drupal/core test:nightwatch $@
11 changes: 11 additions & 0 deletions .ddev/commands/web/phpcbf
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/bash

## Description: Run phpcbf
## Usage: phpcbf [flags] [args]
## Example: "ddev phpcbf web/modules/contrib"

TOP_LEVEL="/var/www/html/repos/drupal"
cd $TOP_LEVEL

/var/www/html/vendor/bin/phpcbf --standard=Drupal,DrupalPractice $@ || \
echo "Return code ignored"
11 changes: 11 additions & 0 deletions .ddev/commands/web/phpcs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/bash

## Description: Run phpcs
## Usage: phpcs [flags] [args]
## Example: "ddev phpcs web/modules/contrib"

TOP_LEVEL="/var/www/html/repos/drupal"
cd $TOP_LEVEL

/var/www/html/vendor/bin/phpcs --standard=Drupal,DrupalPractice $@ || \
echo "Return code ignored"
11 changes: 11 additions & 0 deletions .ddev/commands/web/phpstan
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/bash

## Description: Run phpstan
## Usage: phpstan [flags] [args]
## Example: "ddev phpstan core/modules/migrate_drupal_ui"

TOP_LEVEL="/var/www/html/repos/drupal"
cd $TOP_LEVEL

/var/www/html/vendor/bin/phpstan analyze --configuration="$TOP_LEVEL/core/phpstan.neon.dist" --xdebug --no-ansi --memory-limit=2G $@ || \
echo "Return code ignored"
10 changes: 10 additions & 0 deletions .ddev/commands/web/phpunit
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/bash

## Description: Run PHPUnit
## Usage: phpunit [flags] [args]
## Example: "ddev phpunit --group big_pipe" or "ddev phpunit web/core/modules/action"

TOP_LEVEL="/var/www/html/repos/drupal"
cd $TOP_LEVEL

/var/www/html/vendor/bin/phpunit -c /var/www/html/web/core/phpunit.xml.dist $@
19 changes: 19 additions & 0 deletions .ddev/commands/web/tests-cleanup
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/bash

## Description: Clean up test results
## Usage: tests-cleanup
## Example: "ddev tests-cleanup"

TOP_LEVEL="/var/www/html"
cd $TOP_LEVEL

if [ ! -d "web/sites/simpletest/browser_output" ]
then
echo "The expected folder web/sites/simpletest/browser_output does not exist."
exit
fi

rm web/sites/simpletest/browser_output/*.counter
rm web/sites/simpletest/browser_output/*.html

echo "Test files removed."
24 changes: 24 additions & 0 deletions .ddev/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
type: drupal
docroot: web
php_version: "8.3"
webserver_type: nginx-fpm
xdebug_enabled: false
additional_hostnames:
- drupal-core-testing
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding this here means you'll have trouble running more than one project at a time.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, but it makes easier to access phpunit tests output htmls.

additional_fqdns: []
database:
type: mariadb
version: "10.11"
hooks:
post-start:
- exec: mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS phpunit; GRANT ALL ON phpunit.* to 'db'@'%';"
service: db
project_tld: local
use_dns_when_possible: true
composer_version: "2"
web_environment:
- BROWSERTEST_OUTPUT_DIRECTORY=/var/www/html/web/sites/simpletest/browser_output
- BROWSERTEST_OUTPUT_BASE_URL=https://drupal-core-testing.local
- SIMPLETEST_BASE_URL=${DDEV_PRIMARY_URL}
- SIMPLETEST_DB=mysql://root:root@db/phpunit
corepack_enable: true
29 changes: 29 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
repos/.DS_Store
repos/drupal/
vendor/
.ddev/
.DS_Store
databases
composer.lock
web/core
web/.csslintrc
web/.eslintignore
web/.eslintrc.json
web/.ht.router.php
web/.htaccess
web/INSTALL.txt
web/README.md
web/autoload.php
web/example.gitignore
web/index.php
web/modules/README.txt
web/profiles/README.txt
web/robots.txt
web/sites/README.txt
web/sites/development.services.yml
web/sites/example.settings.local.php
web/sites/example.sites.php
web/themes/README.txt
web/update.php
web/sites/
web/modules/contrib/
15 changes: 15 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"hostname": "0.0.0.0",
"port": 9003,
"pathMappings": {
"/var/www/html": "${workspaceRoot}",
}
}
]
}
102 changes: 72 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ https://www.drupal.org/project/drupal/issues/1792310.

To install a Drupal project for working on Drupal core:

```
$ composer create-project joachim-n/drupal-core-development-project
```bash
composer create-project joachim-n/drupal-core-development-project
```

Composer will clone Drupal core into a 'repos/drupal' directory within the
Expand All @@ -47,12 +47,12 @@ either with `drush si` or with the web UI.
First, make sure your DDEV version is at least 1.23.0. Next, create a new folder
for your project and `cd` into it. Then:

```
$ ddev config --project-type=drupal --php-version=8.3
$ ddev start
$ ddev composer create joachim-n/drupal-core-development-project
$ ddev config --update
$ ddev restart
``` bash
ddev config --project-type=drupal --php-version=8.3
ddev start
ddev composer create joachim-n/drupal-core-development-project
ddev config --update
ddev restart
```

### Installation on DDEV with the justafish/ddev-drupal-core-dev DDEV addon
Expand Down Expand Up @@ -155,17 +155,17 @@ The following are required to run tests.
The simplest way to run tests with this setup is to put the phpunit.xml file in
the project root and then run tests from there:

```
$ vendor/bin/phpunit web/core/PATH-TO-TEST-FILE/TestFile.php
``` bash
vendor/bin/phpunit web/core/PATH-TO-TEST-FILE/TestFile.php
```

##### On DDEV

1. Copy the `phpunit-ddev.xml` file that this template provides and rename it to
`phpunit.xml`:

```
$ cp phpunit-ddev.xml phpunit.xml
``` bash
cp phpunit-ddev.xml phpunit.xml
```

2. Change the BROWSERTEST_OUTPUT_BASE_URL value to the host URL of the project.
Expand All @@ -175,8 +175,8 @@ $ cp phpunit-ddev.xml phpunit.xml
1. Copy Drupal core's sample `phpunit.xml.dist`` file to the project root and
rename it to `phpunit.xml`:

```
$ cp web/core/phpunit.xml.dist phpunit.xml
``` bash
cp web/core/phpunit.xml.dist phpunit.xml
```

2. Change the `bootstrap` attribute so the path is correct:
Expand All @@ -192,7 +192,7 @@ that it recognises the process being run from the project root.

For example, in VSCode, this is done as follows in the debugger configuration:

```
``` json
"pathMappings": {
// Make this work with the root project.
"/ABSOLUTE/PATH/TO/PROJECT/repos/drupal": "${workspaceRoot}"
Expand Down Expand Up @@ -227,28 +227,28 @@ Composer script.

Clone the repository for this template into, say, 'drupal-dev'.

```
$ cd drupal-dev
``` bash
cd drupal-dev

# Create a folder in which to store git clones, which Composer will symlink in.
$ mkdir repos
$ cd repos
mkdir repos
cd repos

# Clone Drupal core, to whatever branch you like.
$ git clone --branch 9.2.x https://git.drupalcode.org/project/drupal.git
git clone --branch 11.x https://git.drupalcode.org/project/drupal.git

# Go back to the project root.
$ cd ..
cd ..

# Install packages with Composer.
$ composer install
composer install
```

The Drupal core git clone will be clean apart from:

```
sites/default/settings.php
vendor
``` bash
sites/default/settings.php
vendor
```

Since it doesn't have a .gitignore at the top level, you can add one to ignore
Expand All @@ -261,8 +261,8 @@ clone of the template repository.

In a separate location, do:

```
$ composer create-project joachim-n/drupal-core-development-project NEW_PROJECT_DIRECTORY --stability=dev --repository='{"url":"/path/to/git/clone/of/project/template/","type":"vcs"}'
``` bash
composer create-project joachim-n/drupal-core-development-project NEW_PROJECT_DIRECTORY --stability=dev --repository='{"url":"/path/to/git/clone/of/project/template/","type":"vcs"}'
```

### Workarounds
Expand All @@ -282,7 +282,7 @@ otherwise code in core that expects to find a Composer autoloader fails.
This is done by a Composer script after initial installation. The manual command
is:

```
``` bash
ln -s ../../vendor ./repos/drupal/vendor
```

Expand All @@ -296,7 +296,7 @@ can't find the settings.php file.
This is done by a Composer script after initial installation. The manual
commands are:

```
``` bash
cd web && patch -p1 <../scaffold/scaffold-patch-index-php.patch
cd web && patch -p1 <../scaffold/scaffold-patch-update-php.patch
```
Expand Down Expand Up @@ -329,7 +329,7 @@ root and symlink it into the Drupal core git clone.
This is done by a Composer script after initial installation. The manual command
is:

```
``` bash
mkdir -p web/sites/simpletest
ln -s ../../../web/sites/simpletest repos/drupal/sites
```
Expand All @@ -339,3 +339,45 @@ ln -s ../../../web/sites/simpletest repos/drupal/sites
Drupal's /composer folder is not symlinked and therefore isn't visible to
Composer. It's needed for some tests, and so is declared as an autoload
location.

## Core Development Using DDEV

1. Clone this repository by using `git clone --branch=master https://github.com/bhanu951/drupal-core-development-project.git`
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line needs update based upon this PR.

2. cd repos
3. git clone --branch=11.x https://git.drupalcode.org/project/drupal.git drupal
4. ddev get drud/ddev-selenium-standalone-chrome (downloads latest chrome driver)
5. ddev composer install (from project root)
6. ddev composer require drupal/admin_toolbar drupal/devel
7. cd repos/drupal ; `git status` to track core changes

### DDEV Commands Usage

1. ddev phpcs core/modules/user/src/RegisterForm.php (from repos/drupal directory)
2. ddev phpcbf core/modules/user/src/RegisterForm.php (from repos/drupal directory)
3. ddev phpunit core/modules/user/tests/src/Functional/UserAdminTest.php (from repos/drupal directory)
4. ddev code-check (ddev equivalent of running `sh core/scripts/dev/commit-code-check.sh`)
5. ddev cspell-check (Checks for forbidden and new words which are not present in dictonary)
6. ddev install (Installs new site)
7. ddev drush [arguments] (from project root)

### TODO

1. Add DDEV Rector Commands
2. Find workaround for ddev phpstan command failures

### Tips

1. ddev drush si --site-name=drupal-145353

### Known Issues

There is a known issue where PHPSTAN doesnt work when the
`ComponentTestDoesNotExtendCoreTest` is enabled in `core/phpstan.neon.dist`
hence it advised to comment the rule for local analysis.

```yaml
rules:
# - Drupal\PHPStan\Rules\ComponentTestDoesNotExtendCoreTest
- PHPStan\Rules\Functions\MissingFunctionReturnTypehintRule
- PHPStan\Rules\Methods\MissingMethodReturnTypehintRule
```
7 changes: 4 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@
],
"require": {
"composer/installers": "^1.9 | ^2",
"drupal/core-composer-scaffold": "*",
"drupal/drupal": "*",
"drupal/core": "*",
"drupal/core-composer-scaffold": "*",
"drupal/core-dev": "*",
"drupal/core-recommended": "*",
"drupal/drupal": "*",
"drush/drush": "^13",
"phpspec/prophecy-phpunit": "*",
"symfony/var-dumper": "*"
Expand All @@ -62,7 +62,8 @@
"drupal/core-composer-scaffold": true,
"php-http/discovery": true,
"phpstan/extension-installer": true,
"dealerdirect/phpcodesniffer-composer-installer": true
"dealerdirect/phpcodesniffer-composer-installer": true,
"tbachert/spi": true
}
},
"scripts": {
Expand Down
Loading