# GENERATED BY: test/outdated/outdated_test.dart

## Section 0
$ pub outdated --json
{
  "packages": [
    {
      "package": "foo",
      "current": {
        "version": "1.1.0"
      },
      "upgradable": {
        "version": "1.1.0"
      },
      "resolvable": {
        "version": "2.0.0"
      },
      "latest": {
        "version": "2.0.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.1.0   *1.1.0      2.0.0       2.0.0   

dev_dependencies: all up-to-date.

1 dependency is constrained to a version that is older than a resolvable version.
To update it, edit pubspec.yaml, or run `flutter pub upgrade --major-versions`.

-------------------------------- 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.1.0   *1.1.0      2.0.0       2.0.0   

dev_dependencies: all up-to-date.

1 dependency is constrained to a version that is older than a resolvable version.
To update it, edit pubspec.yaml, or run `flutter pub upgrade --major-versions`.

-------------------------------- 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:
flutter       (sdk)    (sdk)       (sdk)       (sdk)   
foo           *1.1.0   *1.1.0      2.0.0       2.0.0   

dev_dependencies:
flutter_test  (sdk)    (sdk)       (sdk)       (sdk)   

1 dependency is constrained to a version that is older than a resolvable version.
To update it, edit pubspec.yaml, or run `flutter pub upgrade --major-versions`.

-------------------------------- 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.1.0   *1.1.0      2.0.0       2.0.0   

dev_dependencies: all up-to-date.

1 dependency is constrained to a version that is older than a resolvable version.
To update it, edit pubspec.yaml, or run `flutter pub upgrade --major-versions`.

-------------------------------- 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.1.0   *1.1.0      2.0.0       2.0.0   

1 dependency is constrained to a version that is older than a resolvable version.
To update it, edit pubspec.yaml, or run `flutter pub upgrade --major-versions`.

-------------------------------- 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.1.0   *1.1.0      2.0.0       2.0.0   

dev_dependencies: all up-to-date.

1 dependency is constrained to a version that is older than a resolvable version.
To update it, edit pubspec.yaml, or run `flutter pub upgrade --major-versions`.

-------------------------------- 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.1.0   ✗1.1.0      ✓2.0.0      ✓2.0.0  

dev_dependencies:
flutter_test  ✗(sdk)   ✗(sdk)      ✗(sdk)      ✗(sdk)  

1 dependency is constrained to a version that is older than a resolvable version.
To update it, edit pubspec.yaml, or run `flutter pub upgrade --null-safety`.

-------------------------------- 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.1.0   ✗1.1.0      ✓2.0.0      ✓2.0.0  

dev_dependencies:
flutter_test  ✗(sdk)   ✗(sdk)      ✗(sdk)      ✗(sdk)  

1 dependency is constrained to a version that is older than a resolvable version.
To update it, edit pubspec.yaml, or run `flutter pub upgrade --null-safety`.

-------------------------------- 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.1.0   ✗1.1.0      ✓2.0.0      ✓2.0.0  

dev_dependencies:
flutter_test  ✗(sdk)   ✗(sdk)      ✗(sdk)      ✗(sdk)  

1 dependency is constrained to a version that is older than a resolvable version.
To update it, edit pubspec.yaml, or run `flutter pub upgrade --null-safety`.

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

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

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

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

