• 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
..
hermetic Loading commit data...
permeable Loading commit data...
README.md Loading commit data...