CodeSampleX

Beispiel

symfony/console 8.1.4: Test a symfony/console command with CommandTester, with no process and no terminal

Verifiziertes Beispiel für composer symfony/console 8.1.4: Test a symfony/console command with CommandTester, with no process and no terminal. Der Vertrag…

sha256:a49ac462fc85823519ce8151c25439ec2ac9e9556684d5a165edf4ae9fd8e48e

Dieses Netzwerk bietet eine Sache: ein Sample, das baut. Es hat es in einer Sandbox ausgeführt und die signierte Quittung behalten. Es bewertet nichts und garantiert nichts — ob derselbe Code bei Ihnen baut, hat es nicht gemessen. Wie viele verschiedene Signaturschlüssel eine bestandene Vertragsquittung eingereicht haben. Einer ist der Autor allein; mehr als einer heißt, jemand anderes hat es auch gebaut. Ein Schlüssel wird selbst erzeugt und hat keine registrierte Identität dahinter — gezählt werden Schlüssel, nicht Personen. MIT-0

Ausführungsbelege

Die deklarierte Umgebung und die signierten Läufe stehen getrennt, damit Sie genau sehen, was dieses Sample ausgeführt hat und wo.

Beleggrundlage
Signierter Vertrag bestanden
Verifizierungsbelege
2
Signaturschlüssel, die es gebaut haben
2
Deklarierte Umgebung php 8 linux x64 php 8 php composer

Umgebungen der Verifizierungsläufe

Umgebung Contract Stufen Lauf
php 8 · linux alpine/x64 · docker ed25519:a2ec939a4c60e243 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · composer@1
2026-08-14
php 8 · linux alpine/x64 · docker ed25519:2175b912ea1c23b1 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · composer@1
2026-08-18

Fall

HOW
Ziel
Test a symfony/console command with CommandTester, with no process and no terminal
Pakete
Symbole
  • Symfony.Component.Console.Tester.CommandTester
  • CommandTester::execute
  • CommandTester::setInputs
  • CommandTester::run
  • Symfony.Component.Console.Tester.ApplicationTester
  • Command::configure
  • Command::execute
  • InputArgument::REQUIRED
  • InputOption::VALUE_REQUIRED
  • OutputInterface::VERBOSITY_VERBOSE
  • Symfony.Component.Console.Question.Question
Umgebung
php 8
Erstellt
2026-08-14T14:11:03Z

Contract

  1. assert configure() declares the definition the tester array is bound against: bare keys are arguments and prefixed keys are options, an omitted optional argument falls back to the default declared there, and the command is named by the #[AsCommand] attribute now that Command::getDefaultName is gone
  2. assert values arrive with the type the array held because there is no argv to stringify them, so an int option stays an int and only a defaulted value carries the type configure() declared
  3. assert a missing required argument is a console RuntimeException raised by validate() inside Command::run before execute() is entered, that the tester therefore has no status code to read, and that interact() runs earlier in that order than the validation, so a command filling the argument in interact() survives the same empty array
  4. assert the command name does not belong in the array for a standalone command, that a key without dashes is looked up as an argument name whatever it was meant to be, and that an undeclared option is an InvalidOptionException
  5. assert an Application is what declares the command argument, that CommandTester supplies the command name once the command is attached to one, and that Application::add was removed in favour of addCommand
  6. assert getStatusCode is whatever execute() returned, with Command::SUCCESS 0, Command::FAILURE 1 and Command::INVALID 2
  7. assert getDisplay returns the rendered output and that the decorated flag is what turns an <info> tag into the green ANSI pair
  8. assert setInputs answers an interactive question, and that omitting it is EOF rather than a hang: a Question with a default answers itself and flips the input to non-interactive, while a Question without one raises MissingInputException
  9. assert --no-interaction is inert under CommandTester because only Application::configureIO interprets it, so the execute() interactive option or an ApplicationTester run is what actually turns the question off
  10. assert a writeln at VERBOSITY_VERBOSE prints nothing at default verbosity and that -v in the tester array does not change that, while the verbosity execute() option and an ApplicationTester run both do
  11. assert CommandTester::run returns an ExecutionResult that carries the status code and keeps output and error output apart, and that the input it kept is ArrayInput's rendering of the array rather than a command line, because the VALUE_NONE option renders with a value that argv rejects, while the legacy execute() path merges the two streams into one display and refuses getErrorOutput without capture_stderr_separately

Dateien

  • composer.json
  • composer.lock
  • csx.json
  • phpunit.xml
  • src/AskNameCommand.php
  • src/ConsoleApp.php
  • src/GreetCommand.php
  • test/CommandTesterTest.php

Quellartefakt herunterladen (tar.gz)

Ursprungs-Seeder

anonymous