diff --git a/crates/uv-resolver/src/lock.rs b/crates/uv-resolver/src/lock.rs index 658b7972c..e5321ac1a 100644 --- a/crates/uv-resolver/src/lock.rs +++ b/crates/uv-resolver/src/lock.rs @@ -2372,6 +2372,62 @@ name = "anyio" version = "4.3.0" source = { path = "file:///foo/bar" } wheels = [{ url = "file:///foo/bar/anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8" }] +"#; + let result: Result = toml::from_str(data); + insta::assert_debug_snapshot!(result); + } + + #[test] + fn source_direct_no_subdir() { + let data = r#" +version = 1 + +[[distribution]] +name = "anyio" +version = "4.3.0" +source = { url = "https://burntsushi.net" } +"#; + let result: Result = toml::from_str(data); + insta::assert_debug_snapshot!(result); + } + + #[test] + fn source_direct_has_subdir() { + let data = r#" +version = 1 + +[[distribution]] +name = "anyio" +version = "4.3.0" +source = { url = "https://burntsushi.net", subdirectory = "wat/foo/bar" } +"#; + let result: Result = toml::from_str(data); + insta::assert_debug_snapshot!(result); + } + + #[test] + fn source_directory() { + let data = r#" +version = 1 + +[[distribution]] +name = "anyio" +version = "4.3.0" +source = { directory = "path/to/dir" } +"#; + let result: Result = toml::from_str(data); + insta::assert_debug_snapshot!(result); + } + + #[test] + fn source_editable() { + let data = r#" +version = 1 + +[[distribution]] +name = "anyio" +version = "4.3.0" +source = { editable = "path/to/dir" } "#; let result: Result = toml::from_str(data); insta::assert_debug_snapshot!(result); diff --git a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_direct_has_subdir.snap b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_direct_has_subdir.snap new file mode 100644 index 000000000..86efde2bb --- /dev/null +++ b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_direct_has_subdir.snap @@ -0,0 +1,77 @@ +--- +source: crates/uv-resolver/src/lock.rs +expression: result +--- +Ok( + Lock { + version: 1, + distributions: [ + Distribution { + id: DistributionId { + name: PackageName( + "anyio", + ), + version: "4.3.0", + source: Direct( + Url { + scheme: "https", + cannot_be_a_base: false, + username: "", + password: None, + host: Some( + Domain( + "burntsushi.net", + ), + ), + port: None, + path: "/", + query: None, + fragment: None, + }, + DirectSource { + subdirectory: Some( + "wat/foo/bar", + ), + }, + ), + }, + sdist: None, + wheels: [], + dependencies: [], + optional_dependencies: {}, + dev_dependencies: {}, + }, + ], + requires_python: None, + by_id: { + DistributionId { + name: PackageName( + "anyio", + ), + version: "4.3.0", + source: Direct( + Url { + scheme: "https", + cannot_be_a_base: false, + username: "", + password: None, + host: Some( + Domain( + "burntsushi.net", + ), + ), + port: None, + path: "/", + query: None, + fragment: None, + }, + DirectSource { + subdirectory: Some( + "wat/foo/bar", + ), + }, + ), + }: 0, + }, + }, +) diff --git a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_direct_no_subdir.snap b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_direct_no_subdir.snap new file mode 100644 index 000000000..e2785ae7e --- /dev/null +++ b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_direct_no_subdir.snap @@ -0,0 +1,73 @@ +--- +source: crates/uv-resolver/src/lock.rs +expression: result +--- +Ok( + Lock { + version: 1, + distributions: [ + Distribution { + id: DistributionId { + name: PackageName( + "anyio", + ), + version: "4.3.0", + source: Direct( + Url { + scheme: "https", + cannot_be_a_base: false, + username: "", + password: None, + host: Some( + Domain( + "burntsushi.net", + ), + ), + port: None, + path: "/", + query: None, + fragment: None, + }, + DirectSource { + subdirectory: None, + }, + ), + }, + sdist: None, + wheels: [], + dependencies: [], + optional_dependencies: {}, + dev_dependencies: {}, + }, + ], + requires_python: None, + by_id: { + DistributionId { + name: PackageName( + "anyio", + ), + version: "4.3.0", + source: Direct( + Url { + scheme: "https", + cannot_be_a_base: false, + username: "", + password: None, + host: Some( + Domain( + "burntsushi.net", + ), + ), + port: None, + path: "/", + query: None, + fragment: None, + }, + DirectSource { + subdirectory: None, + }, + ), + }: 0, + }, + }, +) diff --git a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_directory.snap b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_directory.snap new file mode 100644 index 000000000..a4dea4338 --- /dev/null +++ b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_directory.snap @@ -0,0 +1,39 @@ +--- +source: crates/uv-resolver/src/lock.rs +expression: result +--- +Ok( + Lock { + version: 1, + distributions: [ + Distribution { + id: DistributionId { + name: PackageName( + "anyio", + ), + version: "4.3.0", + source: Directory( + "path/to/dir", + ), + }, + sdist: None, + wheels: [], + dependencies: [], + optional_dependencies: {}, + dev_dependencies: {}, + }, + ], + requires_python: None, + by_id: { + DistributionId { + name: PackageName( + "anyio", + ), + version: "4.3.0", + source: Directory( + "path/to/dir", + ), + }: 0, + }, + }, +) diff --git a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_editable.snap b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_editable.snap new file mode 100644 index 000000000..ea9080472 --- /dev/null +++ b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_editable.snap @@ -0,0 +1,39 @@ +--- +source: crates/uv-resolver/src/lock.rs +expression: result +--- +Ok( + Lock { + version: 1, + distributions: [ + Distribution { + id: DistributionId { + name: PackageName( + "anyio", + ), + version: "4.3.0", + source: Editable( + "path/to/dir", + ), + }, + sdist: None, + wheels: [], + dependencies: [], + optional_dependencies: {}, + dev_dependencies: {}, + }, + ], + requires_python: None, + by_id: { + DistributionId { + name: PackageName( + "anyio", + ), + version: "4.3.0", + source: Editable( + "path/to/dir", + ), + }: 0, + }, + }, +)