• Andrew Kolos's avatar
    provide command to `FakeCommand::onRun` (#142206) · 295a9a20
    Andrew Kolos authored
    Part of work on [#101077](https://github.com/flutter/flutter/pull/141194). This is done as a separate PR to avoid a massive diff.
    
    ## Context
    1. The `FakeCommand` class accepts a list of patterns that's used to match a command given to its `FakeProcessManager`. Since `FakeCommand` can match a list of patterns, not just specifically strings, it can be used to match commands where the exact value of some arguments can't (easily) known ahead of time. For example, a part of the tool may invoke a command with an argument that is the path of a temporarily file that has a randomly-generated basename.
    2. The `FakeCommand` class provides on `onRun` parameter, which is a callback that is run when the `FakeProcessManager` runs a command that matches the `FakeCommand` in question.
    
    ## Issue
    In the event that a `FakeCommand` is constructed using patterns, the test code can't know the exact values used for arguments in the command. This PR proposes changing the type of `onRun` from `VoidCallback?` to `void Function(List<String>)?`. When run, the value `List<String>` parameter will be the full command that the `FakeCommand` matched.
    
    Example:
    ```dart
    FakeCommand(
      command: <Pattern>[
        artifacts.getArtifactPath(Artifact.engineDartBinary),
        'run',
        'vector_graphics_compiler',
        RegExp(r'--input=/.*\.temp'),
        RegExp(r'--output=/.*\.temp'),
      ],
      onRun: (List<String> command) {
        final outputPath = (() { 
          // code to parse `--output` from `command`
        })();
        testFileSystem.file(outputPath).createSync(recursive: true);
      },
    )
    ```
    295a9a20
Name
Last commit
Last update
.github Loading commit data...
.vscode Loading commit data...
bin Loading commit data...
dev Loading commit data...
examples Loading commit data...
packages Loading commit data...
.ci.yaml Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CODEOWNERS Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
CONTRIBUTING.md Loading commit data...
LICENSE Loading commit data...
PATENT_GRANT Loading commit data...
README.md Loading commit data...
TESTOWNERS Loading commit data...
analysis_options.yaml Loading commit data...
dartdoc_options.yaml Loading commit data...
flutter_console.bat Loading commit data...