[CI] Introduce a separate stage for unit tests

Created on 31 October 2024, 21 days ago

Problem/Motivation

After commit of 📌 [CI] Remove the 'with-database' requirement for unit tests Active , we do not need to run Unit tests for each db configuration anymore.

Steps to reproduce

Proposed resolution

A separate stage and child pipeline, accommodating also PHPStan rule unit tests?

Remaining tasks

User interface changes

Introduced terminology

API changes

Data model changes

Release notes snippet

📌 Task
Status

Active

Version

11.0 🔥

Component

phpunit

Created by

🇮🇹Italy mondrake 🇮🇹

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Merge Requests

Comments & Activities

  • Issue created by @mondrake
  • Merge request !10020Closes #3484966 → (Open) created by mondrake
  • Pipeline finished with Failed
    21 days ago
    Total: 605s
    #326229
  • Pipeline finished with Failed
    21 days ago
    Total: 723s
    #326247
  • Pipeline finished with Failed
    21 days ago
    Total: 604s
    #326255
  • Pipeline finished with Failed
    21 days ago
    Total: 480s
    #326280
  • 🇮🇹Italy mondrake 🇮🇹
  • Pipeline finished with Success
    21 days ago
    Total: 527s
    #326288
  • 🇮🇹Italy mondrake 🇮🇹
  • 🇦🇺Australia mstrelan

    I like this in principle, but worry it will be harder to find the test results summary. Currently you need to go to the child job so see that, now you may need to go to two child jobs. I wonder if there's any way to bubble up the test results to the parent job.

  • Pipeline finished with Failed
    21 days ago
    Total: 650s
    #326324
  • Pipeline finished with Failed
    20 days ago
    Total: 107s
    #326342
  • 🇮🇹Italy mondrake 🇮🇹

    Added parallel:matrix to be able running unit test on multiple PHP versions.

    This is highligthing PHP 8.4 deprecations, for instance.

  • Pipeline finished with Failed
    20 days ago
    Total: 785s
    #326348
  • Pipeline finished with Failed
    20 days ago
    Total: 364s
    #326550
  • Pipeline finished with Failed
    20 days ago
    Total: 490s
    #326560
  • Pipeline finished with Success
    20 days ago
    Total: 2243s
    #326586
  • Pipeline finished with Success
    20 days ago
    Total: 1609s
    #326621
  • 🇮🇹Italy mondrake 🇮🇹

    Latest commit to the MR adds a job to run tests for Drupal components directly in PHPUnit, including code coverage report.

    Probably needs to be spun off to a follow up, just wanted to showcase it.

  • 🇮🇹Italy mondrake 🇮🇹

    Removed #7.

  • Pipeline finished with Success
    20 days ago
    Total: 564s
    #326727
  • 🇬🇧United Kingdom longwave UK

    @mstrelan yeah I kinda agree that finding test results is already quite tricky when you don't know where to look, and this makes it more complicated. There is no way to surface child pipeline results in a parent yet, see https://gitlab.com/gitlab-org/gitlab/-/issues/363019

  • 🇺🇸United States smustgrave

    Question how come phpunit had to be updated in composer?

  • 🇮🇹Italy mondrake 🇮🇹

    That one is the composer.json of the PHPStan rules testing, not core's. That is separate from the rest to allow independent testing from core. Being independent, it's also not bound to core's dependencies and it happens PHPUnit 11 can be used for this without any of the hurdles that core has: 📌 [PP-1] Make PHPStan rule testing use PHPUnit 11 Postponed . Here's is not strictly necessary, but I made that change to 'force' the PHPStan rule testing job to run as that job is based on changes in the PHPStan rules directory.

  • Pipeline finished with Success
    10 days ago
    Total: 1304s
    #335637
  • 🇺🇸United States smustgrave

    Think I see what @mstrelan and @longwave are talking about now. Anyway to get the results https://git.drupalcode.org/issue/drupal-3484966/-/pipelines/335642 to the rest of the tests?

  • 🇮🇹Italy mondrake 🇮🇹

    Not until upstream gets #9 done, I am afraid.

  • 🇺🇸United States smustgrave

    Should this be postponed or is there a larger gain to be add with moving it out?

  • 🇮🇹Italy mondrake 🇮🇹

    The gain I see is to be able to test future versions of PHP through matrix (and potentially PHPUnit, too) on unit tests only, earlier than the rest of the test suite, and highlight deprecations in advance without failing overall testing job.

    For example, PHP 8.4 is going to be delivered the day after tomorrow, and there is not yet a regular job testing with it AFAICS.

  • 🇺🇸United States smustgrave

    That does seem worth it, not 100% I can make the call but maybe @longwave?

    Also the current MR needs a manual rebase.

  • Pipeline finished with Success
    3 days ago
    Total: 547s
    #342561
  • 🇫🇷France andypost

    To have a proper matrix we need to unify image names too

  • 🇺🇸United States smustgrave

    Going to go on a limb here

Production build 0.71.5 2024