# GENERATED BY: test/outdated/outdated_test.dart

## Section 0
$ pub outdated --json
{
  "packages": [
    {
      "package": "bar",
      "current": {
        "version": "1.0.0"
      },
      "upgradable": {
        "version": "1.0.0"
      },
      "resolvable": {
        "version": "2.0.0"
      },
      "latest": {
        "version": "2.0.0"
      }
    },
    {
      "package": "fails_analysis",
      "current": {
        "version": "1.0.0"
      },
      "upgradable": {
        "version": "1.0.0"
      },
      "resolvable": {
        "version": "2.0.0"
      },
      "latest": {
        "version": "2.0.0"
      }
    },
    {
      "package": "fails_analysis_in_dependency",
      "current": {
        "version": "1.0.0"
      },
      "upgradable": {
        "version": "1.0.0"
      },
      "resolvable": {
        "version": "2.0.0"
      },
      "latest": {
        "version": "2.0.0"
      }
    },
    {
      "package": "file_in_dependency_opts_out",
      "current": {
        "version": "1.0.0"
      },
      "upgradable": {
        "version": "1.0.0"
      },
      "resolvable": {
        "version": "2.0.0"
      },
      "latest": {
        "version": "2.0.0"
      }
    },
    {
      "package": "file_opts_out",
      "current": {
        "version": "1.0.0"
      },
      "upgradable": {
        "version": "1.0.0"
      },
      "resolvable": {
        "version": "2.0.0"
      },
      "latest": {
        "version": "2.0.0"
      }
    },
    {
      "package": "foo",
      "current": {
        "version": "1.0.0"
      },
      "upgradable": {
        "version": "1.0.0"
      },
      "resolvable": {
        "version": "2.0.0-nullsafety.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:         
bar                           *1.0.0   *1.0.0      2.0.0                2.0.0   
fails_analysis                *1.0.0   *1.0.0      2.0.0                2.0.0   
fails_analysis_in_dependency  *1.0.0   *1.0.0      2.0.0                2.0.0   
file_in_dependency_opts_out   *1.0.0   *1.0.0      2.0.0                2.0.0   
file_opts_out                 *1.0.0   *1.0.0      2.0.0                2.0.0   
foo                           *1.0.0   *1.0.0      *2.0.0-nullsafety.0  2.0.0   

6  dependencies are constrained to versions that are older than a resolvable version.
To update these dependencies, edit pubspec.yaml, or run `dart 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:         
bar                           *1.0.0   *1.0.0      2.0.0                2.0.0   
fails_analysis                *1.0.0   *1.0.0      2.0.0                2.0.0   
fails_analysis_in_dependency  *1.0.0   *1.0.0      2.0.0                2.0.0   
file_in_dependency_opts_out   *1.0.0   *1.0.0      2.0.0                2.0.0   
file_opts_out                 *1.0.0   *1.0.0      2.0.0                2.0.0   
foo                           *1.0.0   *1.0.0      *2.0.0-nullsafety.0  2.0.0   

6  dependencies are constrained to versions that are older than a resolvable version.
To update these dependencies, edit pubspec.yaml, or run `dart 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:         
bar                           *1.0.0   *1.0.0      2.0.0                2.0.0   
fails_analysis                *1.0.0   *1.0.0      2.0.0                2.0.0   
fails_analysis_in_dependency  *1.0.0   *1.0.0      2.0.0                2.0.0   
file_in_dependency_opts_out   *1.0.0   *1.0.0      2.0.0                2.0.0   
file_opts_out                 *1.0.0   *1.0.0      2.0.0                2.0.0   
foo                           *1.0.0   *1.0.0      *2.0.0-nullsafety.0  2.0.0   

6  dependencies are constrained to versions that are older than a resolvable version.
To update these dependencies, edit pubspec.yaml, or run `dart 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:         
bar                           *1.0.0   *1.0.0      2.0.0                2.0.0   
fails_analysis                *1.0.0   *1.0.0      2.0.0                2.0.0   
fails_analysis_in_dependency  *1.0.0   *1.0.0      2.0.0                2.0.0   
file_in_dependency_opts_out   *1.0.0   *1.0.0      2.0.0                2.0.0   
file_opts_out                 *1.0.0   *1.0.0      2.0.0                2.0.0   
foo                           *1.0.0   *1.0.0      *2.0.0-nullsafety.0  2.0.0   

6  dependencies are constrained to versions that are older than a resolvable version.
To update these dependencies, edit pubspec.yaml, or run `dart 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:         
bar                           *1.0.0   *1.0.0      2.0.0                2.0.0   
fails_analysis                *1.0.0   *1.0.0      2.0.0                2.0.0   
fails_analysis_in_dependency  *1.0.0   *1.0.0      2.0.0                2.0.0   
file_in_dependency_opts_out   *1.0.0   *1.0.0      2.0.0                2.0.0   
file_opts_out                 *1.0.0   *1.0.0      2.0.0                2.0.0   
foo                           *1.0.0   *1.0.0      *2.0.0-nullsafety.0  2.0.0   

6  dependencies are constrained to versions that are older than a resolvable version.
To update these dependencies, edit pubspec.yaml, or run `dart 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:         
bar                           *1.0.0   *1.0.0      2.0.0                2.0.0   
fails_analysis                *1.0.0   *1.0.0      2.0.0                2.0.0   
fails_analysis_in_dependency  *1.0.0   *1.0.0      2.0.0                2.0.0   
file_in_dependency_opts_out   *1.0.0   *1.0.0      2.0.0                2.0.0   
file_opts_out                 *1.0.0   *1.0.0      2.0.0                2.0.0   
foo                           *1.0.0   *1.0.0      *2.0.0-nullsafety.0  2.0.0   

6  dependencies are constrained to versions that are older than a resolvable version.
To update these dependencies, edit pubspec.yaml, or run `dart 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:
bar           ✗1.0.0   ✗1.0.0      ✓2.0.0               ✓2.0.0  
foo           ✗1.0.0   ✗1.0.0      ✓2.0.0-nullsafety.0  ✓2.0.0  

2  dependencies are constrained to versions that are older than a resolvable version.
To update these dependencies, edit pubspec.yaml, or run `dart 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:
bar           ✗1.0.0   ✗1.0.0      ✓2.0.0               ✓2.0.0  
foo           ✗1.0.0   ✗1.0.0      ✓2.0.0-nullsafety.0  ✓2.0.0  

2  dependencies are constrained to versions that are older than a resolvable version.
To update these dependencies, edit pubspec.yaml, or run `dart 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:
bar           ✗1.0.0   ✗1.0.0      ✓2.0.0               ✓2.0.0  
foo           ✗1.0.0   ✗1.0.0      ✓2.0.0-nullsafety.0  ✓2.0.0  

2  dependencies are constrained to versions that are older than a resolvable version.
To update these dependencies, edit pubspec.yaml, or run `dart pub upgrade --null-safety`.

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

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

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

## Section 11
$ pub outdated --json --no-dev-dependencies
{
  "packages": [
    {
      "package": "bar",
      "current": {
        "version": "1.0.0"
      },
      "upgradable": {
        "version": "1.0.0"
      },
      "resolvable": {
        "version": "2.0.0"
      },
      "latest": {
        "version": "2.0.0"
      }
    },
    {
      "package": "fails_analysis",
      "current": {
        "version": "1.0.0"
      },
      "upgradable": {
        "version": "1.0.0"
      },
      "resolvable": {
        "version": "2.0.0"
      },
      "latest": {
        "version": "2.0.0"
      }
    },
    {
      "package": "fails_analysis_in_dependency",
      "current": {
        "version": "1.0.0"
      },
      "upgradable": {
        "version": "1.0.0"
      },
      "resolvable": {
        "version": "2.0.0"
      },
      "latest": {
        "version": "2.0.0"
      }
    },
    {
      "package": "file_in_dependency_opts_out",
      "current": {
        "version": "1.0.0"
      },
      "upgradable": {
        "version": "1.0.0"
      },
      "resolvable": {
        "version": "2.0.0"
      },
      "latest": {
        "version": "2.0.0"
      }
    },
    {
      "package": "file_opts_out",
      "current": {
        "version": "1.0.0"
      },
      "upgradable": {
        "version": "1.0.0"
      },
      "resolvable": {
        "version": "2.0.0"
      },
      "latest": {
        "version": "2.0.0"
      }
    },
    {
      "package": "foo",
      "current": {
        "version": "1.0.0"
      },
      "upgradable": {
        "version": "1.0.0"
      },
      "resolvable": {
        "version": "2.0.0-nullsafety.0"
      },
      "latest": {
        "version": "2.0.0"
      }
    }
  ]
}

