Skip to content

Commit

Permalink
Add additional prerelease case (#62)
Browse files Browse the repository at this point in the history
Adds the missing case from #57

Co-authored-by: konstin <konstin@mailbox.org>
  • Loading branch information
zanieb and konstin authored Jan 4, 2024
1 parent 764b56d commit 2c2f6aa
Show file tree
Hide file tree
Showing 4 changed files with 568 additions and 19 deletions.
86 changes: 86 additions & 0 deletions scenarios/prereleases.json
Original file line number Diff line number Diff line change
Expand Up @@ -290,5 +290,91 @@
},
"explanation": "Since the user included a dependency on `b` with a pre-release specifier, a pre-release version can be selected."
}
},
{
"name": "requires-transitive-prerelease-and-stable-dependency",
"description": "A transitive dependency has both a prerelease and a stable selector, but can only be satisfied by a prerelease",
"root": {
"requires": [
"a",
"b"
]
},
"packages": {
"a": {
"versions": {
"1.0.0": {
"requires": [
"c==2.0.0b1"
]
}
}
},
"b": {
"versions": {
"1.0.0": {
"requires": [
"c>=1.0.0,<=3.0.0"
]
}
}
},
"c": {
"versions": {
"1.0.0": {},
"2.0.0b1": {}
}
}
},
"expected": {
"satisfiable": false,
"explanation": "Since the user did not explicitly opt-in to a prerelease, it cannot be selected."
}
},
{
"name": "requires-transitive-prerelease-and-stable-dependency-opt-in",
"description": "A transitive dependency has both a prerelease and a stable selector, but can only be satisfied by a prerelease. The user includes an opt-in to prereleases of the transitive dependency.",
"root": {
"requires": [
"a",
"b",
"c>=0.0.0a1"
]
},
"packages": {
"a": {
"versions": {
"1.0.0": {
"requires": [
"c==2.0.0b1"
]
}
}
},
"b": {
"versions": {
"1.0.0": {
"requires": [
"c>=1.0.0,<=3.0.0"
]
}
}
},
"c": {
"versions": {
"1.0.0": {},
"2.0.0b1": {}
}
}
},
"expected": {
"satisfiable": true,
"packages": {
"a": "1.0.0",
"b": "1.0.0",
"c": "2.0.0b1"
},
"explanation": "Since the user explicitly opted-in to a prerelease for `c`, it can be installed."
}
}
]
192 changes: 192 additions & 0 deletions tests/__snapshots__/test_inspect.ambr
Original file line number Diff line number Diff line change
Expand Up @@ -1013,6 +1013,198 @@
" \u2514\u2500\u2500 requires python>=3.7"
]
},
{
"name": "requires-transitive-prerelease-and-stable-dependency",
"packages": {
"a": {
"versions": {
"1.0.0": {
"requires_python": ">=3.7",
"requires": [
"c==2.0.0b1"
],
"sdist": true,
"wheel": true,
"description": ""
}
}
},
"b": {
"versions": {
"1.0.0": {
"requires_python": ">=3.7",
"requires": [
"c>=1.0.0,<=3.0.0"
],
"sdist": true,
"wheel": true,
"description": ""
}
}
},
"c": {
"versions": {
"1.0.0": {
"requires_python": ">=3.7",
"requires": [],
"sdist": true,
"wheel": true,
"description": ""
},
"2.0.0b1": {
"requires_python": ">=3.7",
"requires": [],
"sdist": true,
"wheel": true,
"description": ""
}
}
}
},
"root": {
"requires_python": ">=3.7",
"requires": [
"a",
"b"
]
},
"expected": {
"satisfiable": false,
"packages": {},
"explanation": "Since the user did not explicitly opt-in to a prerelease, it cannot be selected."
},
"environment": {
"python": "3.7"
},
"template": "simple",
"description": "A transitive dependency has both a prerelease and a stable selector, but can only be satisfied by a prerelease",
"source": "[PWD]/scenarios/prereleases.json",
"prefix": "requires-transitive-prerelease-and-stable-dependency-31b546ef",
"tree": [
"\u251c\u2500\u2500 environment",
"\u2502 \u2514\u2500\u2500 python3.7",
"\u251c\u2500\u2500 root",
"\u2502 \u251c\u2500\u2500 requires a",
"\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-1.0.0",
"\u2502 \u2514\u2500\u2500 requires b",
"\u2502 \u2514\u2500\u2500 satisfied by b-1.0.0",
"\u251c\u2500\u2500 a",
"\u2502 \u2514\u2500\u2500 a-1.0.0",
"\u2502 \u251c\u2500\u2500 requires c==2.0.0b1",
"\u2502 \u2502 \u2514\u2500\u2500 satisfied by c-2.0.0b1",
"\u2502 \u2514\u2500\u2500 requires python>=3.7",
"\u251c\u2500\u2500 b",
"\u2502 \u2514\u2500\u2500 b-1.0.0",
"\u2502 \u251c\u2500\u2500 requires c>=1.0.0,<=3.0.0",
"\u2502 \u2502 \u2514\u2500\u2500 satisfied by c-1.0.0",
"\u2502 \u2514\u2500\u2500 requires python>=3.7",
"\u2514\u2500\u2500 c",
" \u251c\u2500\u2500 c-1.0.0",
" \u2502 \u2514\u2500\u2500 requires python>=3.7",
" \u2514\u2500\u2500 c-2.0.0b1",
" \u2514\u2500\u2500 requires python>=3.7"
]
},
{
"name": "requires-transitive-prerelease-and-stable-dependency-opt-in",
"packages": {
"a": {
"versions": {
"1.0.0": {
"requires_python": ">=3.7",
"requires": [
"c==2.0.0b1"
],
"sdist": true,
"wheel": true,
"description": ""
}
}
},
"b": {
"versions": {
"1.0.0": {
"requires_python": ">=3.7",
"requires": [
"c>=1.0.0,<=3.0.0"
],
"sdist": true,
"wheel": true,
"description": ""
}
}
},
"c": {
"versions": {
"1.0.0": {
"requires_python": ">=3.7",
"requires": [],
"sdist": true,
"wheel": true,
"description": ""
},
"2.0.0b1": {
"requires_python": ">=3.7",
"requires": [],
"sdist": true,
"wheel": true,
"description": ""
}
}
}
},
"root": {
"requires_python": ">=3.7",
"requires": [
"a",
"b",
"c>=0.0.0a1"
]
},
"expected": {
"satisfiable": true,
"packages": {
"a": "1.0.0",
"b": "1.0.0",
"c": "2.0.0b1"
},
"explanation": "Since the user explicitly opted-in to a prerelease for `c`, it can be installed."
},
"environment": {
"python": "3.7"
},
"template": "simple",
"description": "A transitive dependency has both a prerelease and a stable selector, but can only be satisfied by a prerelease. The user includes an opt-in to prereleases of the transitive dependency.",
"source": "[PWD]/scenarios/prereleases.json",
"prefix": "requires-transitive-prerelease-and-stable-dependency-opt-in-dd00a87f",
"tree": [
"\u251c\u2500\u2500 environment",
"\u2502 \u2514\u2500\u2500 python3.7",
"\u251c\u2500\u2500 root",
"\u2502 \u251c\u2500\u2500 requires a",
"\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-1.0.0",
"\u2502 \u251c\u2500\u2500 requires b",
"\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-1.0.0",
"\u2502 \u2514\u2500\u2500 requires c>=0.0.0a1",
"\u2502 \u251c\u2500\u2500 satisfied by c-1.0.0",
"\u2502 \u2514\u2500\u2500 satisfied by c-2.0.0b1",
"\u251c\u2500\u2500 a",
"\u2502 \u2514\u2500\u2500 a-1.0.0",
"\u2502 \u251c\u2500\u2500 requires c==2.0.0b1",
"\u2502 \u2502 \u2514\u2500\u2500 satisfied by c-2.0.0b1",
"\u2502 \u2514\u2500\u2500 requires python>=3.7",
"\u251c\u2500\u2500 b",
"\u2502 \u2514\u2500\u2500 b-1.0.0",
"\u2502 \u251c\u2500\u2500 requires c>=1.0.0,<=3.0.0",
"\u2502 \u2502 \u2514\u2500\u2500 satisfied by c-1.0.0",
"\u2502 \u2514\u2500\u2500 requires python>=3.7",
"\u2514\u2500\u2500 c",
" \u251c\u2500\u2500 c-1.0.0",
" \u2502 \u2514\u2500\u2500 requires python>=3.7",
" \u2514\u2500\u2500 c-2.0.0b1",
" \u2514\u2500\u2500 requires python>=3.7"
]
},
{
"name": "requires-package-does-not-exist",
"packages": {},
Expand Down
6 changes: 6 additions & 0 deletions tests/__snapshots__/test_list.ambr
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@
requires-transitive-package-only-prereleases-fa02005e
requires-transitive-package-only-prereleases-in-range-f859ef9f
requires-transitive-package-only-prereleases-in-range-opt-in-4ca10c42
requires-transitive-prerelease-and-stable-dependency-31b546ef
requires-transitive-prerelease-and-stable-dependency-opt-in-dd00a87f
requires-package-does-not-exist-57cd4136
requires-exact-version-does-not-exist-eaa03067
requires-greater-version-does-not-exist-6e8e01df
Expand Down Expand Up @@ -85,6 +87,8 @@
requires-transitive-package-only-prereleases-fa02005e
requires-transitive-package-only-prereleases-in-range-f859ef9f
requires-transitive-package-only-prereleases-in-range-opt-in-4ca10c42
requires-transitive-prerelease-and-stable-dependency-31b546ef
requires-transitive-prerelease-and-stable-dependency-opt-in-dd00a87f
scenarios/requires-does-not-exist.json
requires-package-does-not-exist-57cd4136
requires-exact-version-does-not-exist-eaa03067
Expand Down Expand Up @@ -125,6 +129,8 @@
requires-transitive-package-only-prereleases
requires-transitive-package-only-prereleases-in-range
requires-transitive-package-only-prereleases-in-range-opt-in
requires-transitive-prerelease-and-stable-dependency
requires-transitive-prerelease-and-stable-dependency-opt-in
scenarios/requires-does-not-exist.json
requires-package-does-not-exist
requires-exact-version-does-not-exist
Expand Down
Loading

0 comments on commit 2c2f6aa

Please sign in to comment.