From ca5a9cf38b546e67f0d1b4c94203b13262610439 Mon Sep 17 00:00:00 2001 From: marcusquinn <6428977+marcusquinn@users.noreply.github.com> Date: Wed, 23 Apr 2025 12:42:13 +0100 Subject: [PATCH] Fix PHPUnit tests and SonarCloud analysis --- .github/workflows/code-quality.yml | 2 +- .github/workflows/sonarcloud.yml | 2 +- phpunit.xml | 3 +- tests/phpunit/bootstrap.php | 51 ++++++++++++++++++++++-------- 4 files changed, 41 insertions(+), 17 deletions(-) diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml index ccdeee3..4892fd9 100644 --- a/.github/workflows/code-quality.yml +++ b/.github/workflows/code-quality.yml @@ -110,7 +110,7 @@ jobs: restore-keys: ${{ runner.os }}-sonar - name: SonarCloud Scan - uses: SonarSource/sonarcloud-github-action@master + uses: SonarSource/sonarqube-scan-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index c17e1e4..1cda21c 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -28,7 +28,7 @@ jobs: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - name: SonarCloud Scan - uses: SonarSource/sonarcloud-github-action@master + uses: SonarSource/sonarqube-scan-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} diff --git a/phpunit.xml b/phpunit.xml index b44e607..a71d4fa 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,6 +1,6 @@ ./tests/ + ./tests/phpunit/ diff --git a/tests/phpunit/bootstrap.php b/tests/phpunit/bootstrap.php index 75b6dd2..77e7852 100644 --- a/tests/phpunit/bootstrap.php +++ b/tests/phpunit/bootstrap.php @@ -8,20 +8,43 @@ // Composer autoloader must be loaded before WP_PHPUNIT__DIR will be available. require_once dirname( dirname( __DIR__ ) ) . '/vendor/autoload.php'; -// Give access to tests_add_filter() function. -require_once getenv( 'WP_PHPUNIT__DIR' ) . '/includes/functions.php'; +// Check if we're running the WordPress tests +if ( getenv( 'WP_PHPUNIT__DIR' ) ) { + // Give access to tests_add_filter() function. + require_once getenv( 'WP_PHPUNIT__DIR' ) . '/includes/functions.php'; -/** - * Manually load the plugin being tested. - */ -function _manually_load_plugin() { - require dirname( dirname( __DIR__ ) ) . '/wp-plugin-starter-template.php'; - // Load the multisite class for testing - $multisite_file = dirname( dirname( __DIR__ ) ) . '/includes/multisite/class-multisite.php'; - if (file_exists($multisite_file)) { - require $multisite_file; + /** + * Manually load the plugin being tested. + */ + function _manually_load_plugin() { + require dirname( dirname( __DIR__ ) ) . '/wp-plugin-starter-template.php'; + // Load the multisite class for testing + $multisite_file = dirname( dirname( __DIR__ ) ) . '/includes/multisite/class-multisite.php'; + if (file_exists($multisite_file)) { + require $multisite_file; + } + } + + // Start up the WP testing environment. + require getenv( 'WP_PHPUNIT__DIR' ) . '/includes/bootstrap.php'; +} else { + // We're running the WP_Mock tests + WP_Mock::bootstrap(); + + /** + * Now we define a few constants to help us with testing. + */ + define('WPST_PLUGIN_DIR', dirname(dirname(__DIR__)) . '/'); + define('WPST_PLUGIN_URL', 'http://example.org/wp-content/plugins/wp-plugin-starter-template/'); + define('WPST_VERSION', '0.1.0'); + + /** + * Now we include any plugin files that we need to be able to run the tests. + * This should be files that define the functions and classes you're going to test. + */ + require_once WPST_PLUGIN_DIR . 'includes/class-core.php'; + require_once WPST_PLUGIN_DIR . 'includes/class-plugin.php'; + if (file_exists(WPST_PLUGIN_DIR . 'admin/lib/admin.php')) { + require_once WPST_PLUGIN_DIR . 'admin/lib/admin.php'; } } - -// Start up the WP testing environment. -require getenv( 'WP_PHPUNIT__DIR' ) . '/includes/bootstrap.php';