# GENERATED BY: test/outdated/outdated_test.dart

## Section 0
$ pub outdated --json
{
  "packages": [
    {
      "package": "foo",
      "current": {
        "version": "1.2.3"
      },
      "upgradable": {
        "version": "1.3.0"
      },
      "resolvable": {
        "version": "1.3.0"
      },
      "latest": {
        "version": "1.3.0"
      }
    }
  ]
}

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

## Section 1
$ pub outdated --no-color
Showing outdated packages.
[*] indicates versions that are not the latest available.

Package Name  Current  Upgradable  Resolvable  Latest  

direct dependencies:
foo           *1.2.3   1.3.0       1.3.0       1.3.0   

1 upgradable dependency is locked (in pubspec.lock) to an older version.
To update it, use `dart pub upgrade`.

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

## Section 2
$ pub outdated --no-color --no-transitive
Showing outdated packages.
[*] indicates versions that are not the latest available.

Package Name  Current  Upgradable  Resolvable  Latest  

direct dependencies:
foo           *1.2.3   1.3.0       1.3.0       1.3.0   

1 upgradable dependency is locked (in pubspec.lock) to an older version.
To update it, use `dart pub upgrade`.

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

## Section 3
$ pub outdated --no-color --up-to-date
Showing outdated packages.
[*] indicates versions that are not the latest available.

Package Name  Current  Upgradable  Resolvable  Latest  

direct dependencies:
foo           *1.2.3   1.3.0       1.3.0       1.3.0   

1 upgradable dependency is locked (in pubspec.lock) to an older version.
To update it, use `dart pub upgrade`.

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

## Section 4
$ pub outdated --no-color --prereleases
Showing outdated packages.
[*] indicates versions that are not the latest available.

Package Name  Current  Upgradable  Resolvable  Latest  

direct dependencies:
foo           *1.2.3   1.3.0       1.3.0       1.3.0   

1 upgradable dependency is locked (in pubspec.lock) to an older version.
To update it, use `dart pub upgrade`.

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

## Section 5
$ pub outdated --no-color --no-dev-dependencies
Showing outdated packages.
[*] indicates versions that are not the latest available.

Package Name  Current  Upgradable  Resolvable  Latest  

direct dependencies:
foo           *1.2.3   1.3.0       1.3.0       1.3.0   

1 upgradable dependency is locked (in pubspec.lock) to an older version.
To update it, use `dart pub upgrade`.

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

## Section 6
$ pub outdated --no-color --no-dependency-overrides
Showing outdated packages.
[*] indicates versions that are not the latest available.

Package Name  Current  Upgradable  Resolvable  Latest  

direct dependencies:
foo           *1.2.3   1.3.0       1.3.0       1.3.0   

1 upgradable dependency is locked (in pubspec.lock) to an older version.
To update it, use `dart pub upgrade`.

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

## Section 7
$ pub outdated --no-color --mode=null-safety
Showing dependencies that are currently not opted in to null-safety.
[✗] indicates versions without null safety support.
[✓] indicates versions opting in to null safety.

Package Name  Current  Upgradable  Resolvable  Latest  

direct dependencies:
foo           ✗1.2.3   ✗1.3.0      ✗1.3.0      ✗1.3.0  

1 upgradable dependency is locked (in pubspec.lock) to an older version.
To update it, use `dart pub upgrade`.

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

## Section 8
$ pub outdated --no-color --mode=null-safety --transitive
Showing dependencies that are currently not opted in to null-safety.
[✗] indicates versions without null safety support.
[✓] indicates versions opting in to null safety.

Package Name  Current  Upgradable  Resolvable  Latest  

direct dependencies:
foo           ✗1.2.3   ✗1.3.0      ✗1.3.0      ✗1.3.0  

1 upgradable dependency is locked (in pubspec.lock) to an older version.
To update it, use `dart pub upgrade`.

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

## Section 9
$ pub outdated --no-color --mode=null-safety --no-prereleases
Showing dependencies that are currently not opted in to null-safety.
[✗] indicates versions without null safety support.
[✓] indicates versions opting in to null safety.

Package Name  Current  Upgradable  Resolvable  Latest  

direct dependencies:
foo           ✗1.2.3   ✗1.3.0      ✗1.3.0      ✗1.3.0  

1 upgradable dependency is locked (in pubspec.lock) to an older version.
To update it, use `dart pub upgrade`.

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

## Section 10
$ pub outdated --json --mode=null-safety
{
  "packages": [
    {
      "package": "foo",
      "current": {
        "version": "1.2.3",
        "nullSafety": false
      },
      "upgradable": {
        "version": "1.3.0",
        "nullSafety": false
      },
      "resolvable": {
        "version": "1.3.0",
        "nullSafety": false
      },
      "latest": {
        "version": "1.3.0",
        "nullSafety": false
      }
    }
  ]
}

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

## Section 11
$ pub outdated --json --no-dev-dependencies
{
  "packages": [
    {
      "package": "foo",
      "current": {
        "version": "1.2.3"
      },
      "upgradable": {
        "version": "1.3.0"
      },
      "resolvable": {
        "version": "1.3.0"
      },
      "latest": {
        "version": "1.3.0"
      }
    }
  ]
}

