# GENERATED BY: test/outdated/outdated_test.dart

## Section 0
$ pub outdated --json
{
  "packages": [
    {
      "package": "builder",
      "current": {
        "version": "1.2.3"
      },
      "upgradable": {
        "version": "1.3.0"
      },
      "resolvable": {
        "version": "2.0.0"
      },
      "latest": {
        "version": "2.0.0"
      }
    },
    {
      "package": "dev_trans",
      "current": {
        "version": "1.0.0"
      },
      "upgradable": null,
      "resolvable": {
        "version": "1.0.0"
      },
      "latest": {
        "version": "2.0.0"
      }
    },
    {
      "package": "foo",
      "current": {
        "version": "1.2.3"
      },
      "upgradable": {
        "version": "1.3.0"
      },
      "resolvable": {
        "version": "2.0.0"
      },
      "latest": {
        "version": "3.0.0"
      }
    },
    {
      "package": "transitive",
      "current": {
        "version": "1.2.3"
      },
      "upgradable": {
        "version": "1.3.0"
      },
      "resolvable": {
        "version": "1.3.0"
      },
      "latest": {
        "version": "2.0.0"
      }
    },
    {
      "package": "transitive2",
      "current": null,
      "upgradable": null,
      "resolvable": {
        "version": "1.0.0"
      },
      "latest": {
        "version": "1.0.0"
      }
    },
    {
      "package": "transitive3",
      "current": null,
      "upgradable": null,
      "resolvable": {
        "version": "1.0.0"
      },
      "latest": {
        "version": "1.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.2.3   *1.3.0      *2.0.0      3.0.0   

dev_dependencies:
builder       *1.2.3   *1.3.0      2.0.0       2.0.0   

transitive dependencies:
transitive    *1.2.3   *1.3.0      *1.3.0      2.0.0   
transitive2   -        -           1.0.0       1.0.0   

transitive dev_dependencies:
dev_trans     *1.0.0   -           *1.0.0      2.0.0   
transitive3   -        -           1.0.0       1.0.0   

3 upgradable dependencies are locked (in pubspec.lock) to older versions.
To update these dependencies, use `dart pub upgrade`.

3  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:
foo           *1.2.3   *1.3.0      *2.0.0      3.0.0   

dev_dependencies:
builder       *1.2.3   *1.3.0      2.0.0       2.0.0   

2 upgradable dependencies are locked (in pubspec.lock) to older versions.
To update these dependencies, use `dart pub upgrade`.

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 --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         1.0.0         1.0.0         
foo            *1.2.3        *1.3.0        *2.0.0        3.0.0         
local_package  0.0.1 (path)  0.0.1 (path)  0.0.1 (path)  0.0.1 (path)  

dev_dependencies:
builder        *1.2.3        *1.3.0        2.0.0         2.0.0         

transitive dependencies:
transitive     *1.2.3        *1.3.0        *1.3.0        2.0.0         
transitive2    -             -             1.0.0         1.0.0         

transitive dev_dependencies:
dev_trans      *1.0.0        -             *1.0.0        2.0.0         
transitive3    -             -             1.0.0         1.0.0         

3 upgradable dependencies are locked (in pubspec.lock) to older versions.
To update these dependencies, use `dart pub upgrade`.

3  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:
foo           *1.2.3   *1.3.0      *2.0.0      3.0.0        

dev_dependencies:
builder       *1.2.3   *1.3.0      *2.0.0      3.0.0-alpha  

transitive dependencies:
transitive    *1.2.3   *1.3.0      *1.3.0      2.0.0        
transitive2   -        -           1.0.0       1.0.0        

transitive dev_dependencies:
dev_trans     *1.0.0   -           *1.0.0      2.0.0        
transitive3   -        -           1.0.0       1.0.0        

3 upgradable dependencies are locked (in pubspec.lock) to older versions.
To update these dependencies, use `dart pub upgrade`.

3  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:
foo           *1.2.3   *1.3.0      3.0.0       3.0.0   

transitive dependencies:
transitive    *1.2.3   2.0.0       2.0.0       2.0.0   

2 upgradable dependencies are locked (in pubspec.lock) to older versions.
To update these dependencies, use `dart pub upgrade`.

1 dependency is constrained to a version that is older than a resolvable version.
To update it, 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:
foo           *1.2.3   *1.3.0      *2.0.0      3.0.0   

dev_dependencies:
builder       *1.2.3   *1.3.0      2.0.0       2.0.0   

transitive dependencies:
transitive    *1.2.3   *1.3.0      *1.3.0      2.0.0   
transitive2   -        -           1.0.0       1.0.0   

transitive dev_dependencies:
dev_trans     *1.0.0   -           *1.0.0      2.0.0   
transitive3   -        -           1.0.0       1.0.0   

3 upgradable dependencies are locked (in pubspec.lock) to older versions.
To update these dependencies, use `dart pub upgrade`.

3  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         ✗1.0.0         ✗1.0.0         
foo            ✗1.2.3         ✗1.3.0         ✗2.0.0         ✗3.0.0         
local_package  ✗0.0.1 (path)  ✗0.0.1 (path)  ✗0.0.1 (path)  ✗0.0.1 (path)  

dev_dependencies:
builder        ✗1.2.3         ✗1.3.0         ✗2.0.0         ✗3.0.0-alpha   

2 upgradable dependencies are locked (in pubspec.lock) to older versions.
To update these dependencies, use `dart pub upgrade`.

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         ✗1.0.0         ✗1.0.0         
foo            ✗1.2.3         ✗1.3.0         ✗2.0.0         ✗3.0.0         
local_package  ✗0.0.1 (path)  ✗0.0.1 (path)  ✗0.0.1 (path)  ✗0.0.1 (path)  

dev_dependencies:
builder        ✗1.2.3         ✗1.3.0         ✗2.0.0         ✗3.0.0-alpha   

transitive dependencies:
transitive     ✗1.2.3         ✗1.3.0         ✗1.3.0         ✗2.0.0         
transitive2    -              -              ✗1.0.0         ✗1.0.0         

transitive dev_dependencies:
dev_trans      ✗1.0.0         -              ✗1.0.0         ✗2.0.0         
transitive3    -              -              ✗1.0.0         ✗1.0.0         

3 upgradable dependencies are locked (in pubspec.lock) to older versions.
To update these dependencies, use `dart pub upgrade`.

3  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         ✗1.0.0         ✗1.0.0         
foo            ✗1.2.3         ✗1.3.0         ✗2.0.0         ✗3.0.0         
local_package  ✗0.0.1 (path)  ✗0.0.1 (path)  ✗0.0.1 (path)  ✗0.0.1 (path)  

dev_dependencies:
builder        ✗1.2.3         ✗1.3.0         ✗2.0.0         ✗2.0.0         

2 upgradable dependencies are locked (in pubspec.lock) to older versions.
To update these dependencies, use `dart pub upgrade`.

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": "1.0.0",
        "nullSafety": false
      },
      "latest": {
        "version": "1.0.0",
        "nullSafety": false
      }
    },
    {
      "package": "builder",
      "current": {
        "version": "1.2.3",
        "nullSafety": false
      },
      "upgradable": {
        "version": "1.3.0",
        "nullSafety": false
      },
      "resolvable": {
        "version": "2.0.0",
        "nullSafety": false
      },
      "latest": {
        "version": "3.0.0-alpha",
        "nullSafety": false
      }
    },
    {
      "package": "dev_trans",
      "current": {
        "version": "1.0.0",
        "nullSafety": false
      },
      "upgradable": null,
      "resolvable": {
        "version": "1.0.0",
        "nullSafety": false
      },
      "latest": {
        "version": "2.0.0",
        "nullSafety": false
      }
    },
    {
      "package": "foo",
      "current": {
        "version": "1.2.3",
        "nullSafety": false
      },
      "upgradable": {
        "version": "1.3.0",
        "nullSafety": false
      },
      "resolvable": {
        "version": "2.0.0",
        "nullSafety": false
      },
      "latest": {
        "version": "3.0.0",
        "nullSafety": false
      }
    },
    {
      "package": "local_package",
      "current": {
        "version": "0.0.1",
        "nullSafety": false
      },
      "upgradable": {
        "version": "0.0.1",
        "nullSafety": false
      },
      "resolvable": {
        "version": "0.0.1",
        "nullSafety": false
      },
      "latest": {
        "version": "0.0.1",
        "nullSafety": false
      }
    },
    {
      "package": "transitive",
      "current": {
        "version": "1.2.3",
        "nullSafety": false
      },
      "upgradable": {
        "version": "1.3.0",
        "nullSafety": false
      },
      "resolvable": {
        "version": "1.3.0",
        "nullSafety": false
      },
      "latest": {
        "version": "2.0.0",
        "nullSafety": false
      }
    },
    {
      "package": "transitive2",
      "current": null,
      "upgradable": null,
      "resolvable": {
        "version": "1.0.0",
        "nullSafety": false
      },
      "latest": {
        "version": "1.0.0",
        "nullSafety": false
      }
    },
    {
      "package": "transitive3",
      "current": null,
      "upgradable": null,
      "resolvable": {
        "version": "1.0.0",
        "nullSafety": false
      },
      "latest": {
        "version": "1.0.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": "3.0.0"
      },
      "latest": {
        "version": "3.0.0"
      }
    },
    {
      "package": "transitive",
      "current": {
        "version": "1.2.3"
      },
      "upgradable": {
        "version": "2.0.0"
      },
      "resolvable": {
        "version": "2.0.0"
      },
      "latest": {
        "version": "2.0.0"
      }
    }
  ]
}

