Abschnittsübersicht


  • Docker sollte installiert sein. Falls unter Windows gearbeitet wird zusätzlich auch WSL2.




    • "Docker Containers for Moodle Developers" klonen

      Für das einfache Aufsetzen einer Test-Umgebung stellt Moodle selber eine Docker-Konfiguration bereit:


      Moodle klonen

      Die Test-Umgebung kommt ohne eine eigene Moodle-Instanz, diese wird zusätzlich benötigt.


      Plugin mit neuem Feature klonen

      Innerhalb des Moodle-Verzeichnisses kann dann das Plugin mit dem zu testenden Feature eingebundenwerden, bspw. als Submodule.


      run.sh erstellen

      Anschließend muss eine Datei run.sh erstellt werden.

      • Die Datei run.sh sollte im Verzeichnis "moodle-docker" liegen.

        run.sh

      • 1 # Set up path to Moodle code 2 export MOODLE_DOCKER_WWWROOT="./moodle-401" 3 # Choose a db server (Currently supported: pgsql, mariadb, mysql, mssql, oracle) 4 export MOODLE_DOCKER_DB=pgsql 5 6 # Ensure customized config.php for the Docker containers is in place 7 cp config.docker-template.php $MOODLE_DOCKER_WWWROOT/config.php 8 9 # Start up containers 10 bin/moodle-docker-compose up -d 11 12 # Wait for DB to come up (important for oracle/mssql) 13 bin/moodle-docker-wait-for-db 14 15 # Work with the containers (see below) 16 # Initialize behat environment 17 bin/moodle-docker-compose exec webserver php admin/tool/behat/cli/init.php 18 19 # Run behat tests 20 bin/moodle-docker-compose exec -u www-data webserver php admin/tool/behat/cli/run.php --tags="@plugin_feature_tag" --format=pretty --out=std 21 22 # Shut down and destroy containers 23 bin/moodle-docker-compose down
        24

      • Die Variable MOODLE_DOCKER_WWWROOT muss dabei auf das Verzeichnis zeigen, in dem Moodle liegt.
      • In Zeile 20 müssen die Tags für den jeweiligen Test eingesetzt werden.
      • Die letzte Zeile kann auskommentiert werden. Dadurch bleibt der Container auch nach dem Ausführen der Tests bestehen. Beim erneuten Testen muss so nicht erneut eine komplette Moodle-Instanz aufgebaut werden.