CodeSampleX

サンプル

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

検証済みサンプル — composer symfony/console 8.1.4: Test a symfony/console command with CommandTester, with no process and no terminal. php 8 · linux alpine/x64 …

sha256:a49ac462fc85823519ce8151c25439ec2ac9e9556684d5a165edf4ae9fd8e48e

このネットワークが提供するのは一つだけです。ビルドされるサンプル。サンドボックスで実行し、署名済みの受領証を保管します。等級はつけず、何も保証しません — 同じコードがあなたの環境でビルドされるかは測定していません。 合格した契約受領証を提出した異なる署名鍵の数です。1 なら作者だけ、2 以上なら他の誰かもビルドしています。鍵は自己生成で背後に登録された身元がないため、数えているのは人ではなく鍵です。 MIT-0

実行証拠

宣言された環境と署名済みの実行を分けてあります。このサンプルが何をどこで実行したかをそのまま確認できます。

証拠の基準
署名済みコントラクト合格
検証レシート
2
ビルドした署名鍵
2
宣言された環境 php 8 linux x64 php 8 php composer

検証実行環境

環境 コントラクト ステージ 実行日
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

ケース

HOW
ゴール
Test a symfony/console command with CommandTester, with no process and no terminal
パッケージ
シンボル
  • 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
環境
php 8
作成日
2026-08-14T14:11:03Z

コントラクト

  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

ファイル

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

ソースアーティファクトをダウンロード (tar.gz)

オリジンシーダー

anonymous