# GENERATED BY: test/outdated/outdated_test.dart

## Section 0
$ pub outdated random_argument
[STDERR] Command "outdated" does not take any arguments.
[STDERR] 
[STDERR] Usage: pub outdated [options]
[STDERR] -h, --help                         Print this usage information.
[STDERR]     --[no-]color                   Whether to color the output.
[STDERR]                                    Defaults to color when connected to a
[STDERR]                                    terminal, and no-color otherwise.
[STDERR]     --[no-]dependency-overrides    Show resolutions with `dependency_overrides`.
[STDERR]                                    (defaults to on)
[STDERR]     --[no-]dev-dependencies        Take dev dependencies into account.
[STDERR]                                    (defaults to on)
[STDERR]     --json                         Output the results using a json format.
[STDERR]     --mode=<PROPERTY>              Highlight versions with PROPERTY.
[STDERR]                                    Only packages currently missing that PROPERTY
[STDERR]                                    will be included unless --show-all.
[STDERR]                                    [outdated (default), null-safety]
[STDERR]     --[no-]prereleases             Include prereleases in latest version.
[STDERR]                                    (defaults to on in --mode=null-safety).
[STDERR]     --[no-]show-all                Include dependencies that are already
[STDERR]                                    fullfilling --mode.
[STDERR]     --[no-]transitive              Show transitive dependencies.
[STDERR]                                    (defaults to off in --mode=null-safety).
[STDERR] -C, --directory=<dir>              Run this in the directory<dir>.
[STDERR] 
[STDERR] Run "pub help" to see global options.
[STDERR] See https://dart.dev/tools/pub/cmd/pub-outdated for detailed documentation.
[EXIT CODE] 64

-------------------------------- END OF OUTPUT ---------------------------------

## Section 1
$ pub outdated --bad_flag
[STDERR] Could not find an option named "bad_flag".
[STDERR] 
[STDERR] Usage: pub outdated [options]
[STDERR] -h, --help                         Print this usage information.
[STDERR]     --[no-]color                   Whether to color the output.
[STDERR]                                    Defaults to color when connected to a
[STDERR]                                    terminal, and no-color otherwise.
[STDERR]     --[no-]dependency-overrides    Show resolutions with `dependency_overrides`.
[STDERR]                                    (defaults to on)
[STDERR]     --[no-]dev-dependencies        Take dev dependencies into account.
[STDERR]                                    (defaults to on)
[STDERR]     --json                         Output the results using a json format.
[STDERR]     --mode=<PROPERTY>              Highlight versions with PROPERTY.
[STDERR]                                    Only packages currently missing that PROPERTY
[STDERR]                                    will be included unless --show-all.
[STDERR]                                    [outdated (default), null-safety]
[STDERR]     --[no-]prereleases             Include prereleases in latest version.
[STDERR]                                    (defaults to on in --mode=null-safety).
[STDERR]     --[no-]show-all                Include dependencies that are already
[STDERR]                                    fullfilling --mode.
[STDERR]     --[no-]transitive              Show transitive dependencies.
[STDERR]                                    (defaults to off in --mode=null-safety).
[STDERR] -C, --directory=<dir>              Run this in the directory<dir>.
[STDERR] 
[STDERR] Run "pub help" to see global options.
[STDERR] See https://dart.dev/tools/pub/cmd/pub-outdated for detailed documentation.
[EXIT CODE] 64

