mirror of
				https://github.com/astral-sh/uv.git
				synced 2025-10-31 03:55:33 +00:00 
			
		
		
		
	This reverts commit aeb7ee056e from
https://github.com/astral-sh/uv/pull/15991 since it will break `uv lock
--locked --refresh` otherwise.
			
			
This commit is contained in:
		
							parent
							
								
									aeb7ee056e
								
							
						
					
					
						commit
						c21b11edb9
					
				
					 3 changed files with 1 additions and 240 deletions
				
			
		|  | @ -9,7 +9,7 @@ use owo_colors::OwoColorize; | ||||||
| use rustc_hash::{FxBuildHasher, FxHashMap}; | use rustc_hash::{FxBuildHasher, FxHashMap}; | ||||||
| use tracing::debug; | use tracing::debug; | ||||||
| 
 | 
 | ||||||
| use uv_cache::{Cache, Refresh}; | use uv_cache::Cache; | ||||||
| use uv_client::{BaseClientBuilder, FlatIndexClient, RegistryClientBuilder}; | use uv_client::{BaseClientBuilder, FlatIndexClient, RegistryClientBuilder}; | ||||||
| use uv_configuration::{ | use uv_configuration::{ | ||||||
|     Concurrency, Constraints, DependencyGroupsWithDefaults, DryRun, ExtrasSpecification, Reinstall, |     Concurrency, Constraints, DependencyGroupsWithDefaults, DryRun, ExtrasSpecification, Reinstall, | ||||||
|  | @ -84,7 +84,6 @@ pub(crate) async fn lock( | ||||||
|     locked: bool, |     locked: bool, | ||||||
|     frozen: bool, |     frozen: bool, | ||||||
|     dry_run: DryRun, |     dry_run: DryRun, | ||||||
|     refresh: Refresh, |  | ||||||
|     python: Option<String>, |     python: Option<String>, | ||||||
|     install_mirrors: PythonInstallMirrors, |     install_mirrors: PythonInstallMirrors, | ||||||
|     settings: ResolverSettings, |     settings: ResolverSettings, | ||||||
|  | @ -202,7 +201,6 @@ pub(crate) async fn lock( | ||||||
|         printer, |         printer, | ||||||
|         preview, |         preview, | ||||||
|     ) |     ) | ||||||
|     .with_refresh(&refresh) |  | ||||||
|     .execute(target) |     .execute(target) | ||||||
|     .await |     .await | ||||||
|     { |     { | ||||||
|  | @ -262,7 +260,6 @@ pub(super) enum LockMode<'env> { | ||||||
| pub(super) struct LockOperation<'env> { | pub(super) struct LockOperation<'env> { | ||||||
|     mode: LockMode<'env>, |     mode: LockMode<'env>, | ||||||
|     constraints: Vec<NameRequirementSpecification>, |     constraints: Vec<NameRequirementSpecification>, | ||||||
|     refresh: Option<&'env Refresh>, |  | ||||||
|     settings: &'env ResolverSettings, |     settings: &'env ResolverSettings, | ||||||
|     client_builder: &'env BaseClientBuilder<'env>, |     client_builder: &'env BaseClientBuilder<'env>, | ||||||
|     state: &'env UniversalState, |     state: &'env UniversalState, | ||||||
|  | @ -291,7 +288,6 @@ impl<'env> LockOperation<'env> { | ||||||
|         Self { |         Self { | ||||||
|             mode, |             mode, | ||||||
|             constraints: vec![], |             constraints: vec![], | ||||||
|             refresh: None, |  | ||||||
|             settings, |             settings, | ||||||
|             client_builder, |             client_builder, | ||||||
|             state, |             state, | ||||||
|  | @ -314,13 +310,6 @@ impl<'env> LockOperation<'env> { | ||||||
|         self |         self | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /// Set the refresh strategy for the [`LockOperation`].
 |  | ||||||
|     #[must_use] |  | ||||||
|     pub(super) fn with_refresh(mut self, refresh: &'env Refresh) -> Self { |  | ||||||
|         self.refresh = Some(refresh); |  | ||||||
|         self |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     /// Perform a [`LockOperation`].
 |     /// Perform a [`LockOperation`].
 | ||||||
|     pub(super) async fn execute(self, target: LockTarget<'_>) -> Result<LockResult, ProjectError> { |     pub(super) async fn execute(self, target: LockTarget<'_>) -> Result<LockResult, ProjectError> { | ||||||
|         match self.mode { |         match self.mode { | ||||||
|  | @ -345,7 +334,6 @@ impl<'env> LockOperation<'env> { | ||||||
|                     interpreter, |                     interpreter, | ||||||
|                     Some(existing), |                     Some(existing), | ||||||
|                     self.constraints, |                     self.constraints, | ||||||
|                     self.refresh, |  | ||||||
|                     self.settings, |                     self.settings, | ||||||
|                     self.client_builder, |                     self.client_builder, | ||||||
|                     self.state, |                     self.state, | ||||||
|  | @ -388,7 +376,6 @@ impl<'env> LockOperation<'env> { | ||||||
|                     interpreter, |                     interpreter, | ||||||
|                     existing, |                     existing, | ||||||
|                     self.constraints, |                     self.constraints, | ||||||
|                     self.refresh, |  | ||||||
|                     self.settings, |                     self.settings, | ||||||
|                     self.client_builder, |                     self.client_builder, | ||||||
|                     self.state, |                     self.state, | ||||||
|  | @ -420,7 +407,6 @@ async fn do_lock( | ||||||
|     interpreter: &Interpreter, |     interpreter: &Interpreter, | ||||||
|     existing_lock: Option<Lock>, |     existing_lock: Option<Lock>, | ||||||
|     external: Vec<NameRequirementSpecification>, |     external: Vec<NameRequirementSpecification>, | ||||||
|     refresh: Option<&Refresh>, |  | ||||||
|     settings: &ResolverSettings, |     settings: &ResolverSettings, | ||||||
|     client_builder: &BaseClientBuilder<'_>, |     client_builder: &BaseClientBuilder<'_>, | ||||||
|     state: &UniversalState, |     state: &UniversalState, | ||||||
|  | @ -758,7 +744,6 @@ async fn do_lock( | ||||||
|             &requires_python, |             &requires_python, | ||||||
|             index_locations, |             index_locations, | ||||||
|             upgrade, |             upgrade, | ||||||
|             refresh, |  | ||||||
|             &options, |             &options, | ||||||
|             &hasher, |             &hasher, | ||||||
|             state.index(), |             state.index(), | ||||||
|  | @ -973,7 +958,6 @@ impl ValidatedLock { | ||||||
|         requires_python: &RequiresPython, |         requires_python: &RequiresPython, | ||||||
|         index_locations: &IndexLocations, |         index_locations: &IndexLocations, | ||||||
|         upgrade: &Upgrade, |         upgrade: &Upgrade, | ||||||
|         refresh: Option<&Refresh>, |  | ||||||
|         options: &Options, |         options: &Options, | ||||||
|         hasher: &HashStrategy, |         hasher: &HashStrategy, | ||||||
|         index: &InMemoryIndex, |         index: &InMemoryIndex, | ||||||
|  | @ -1159,12 +1143,6 @@ impl ValidatedLock { | ||||||
|             return Ok(Self::Versions(lock)); |             return Ok(Self::Versions(lock)); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // If the user specified `--refresh`, then we have to re-resolve.
 |  | ||||||
|         if matches!(refresh, Some(Refresh::All(..) | Refresh::Packages(..))) { |  | ||||||
|             debug!("Resolving despite existing lockfile due to `--refresh`"); |  | ||||||
|             return Ok(Self::Preferable(lock)); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         // If the user provided at least one index URL (from the command line, or from a configuration
 |         // If the user provided at least one index URL (from the command line, or from a configuration
 | ||||||
|         // file), don't use the existing lockfile if it references any registries that are no longer
 |         // file), don't use the existing lockfile if it references any registries that are no longer
 | ||||||
|         // included in the current configuration.
 |         // included in the current configuration.
 | ||||||
|  |  | ||||||
|  | @ -1902,7 +1902,6 @@ async fn run_project( | ||||||
|             // Initialize the cache.
 |             // Initialize the cache.
 | ||||||
|             let cache = cache.init()?.with_refresh( |             let cache = cache.init()?.with_refresh( | ||||||
|                 args.refresh |                 args.refresh | ||||||
|                     .clone() |  | ||||||
|                     .combine(Refresh::from(args.settings.upgrade.clone())), |                     .combine(Refresh::from(args.settings.upgrade.clone())), | ||||||
|             ); |             ); | ||||||
| 
 | 
 | ||||||
|  | @ -1924,7 +1923,6 @@ async fn run_project( | ||||||
|                 args.locked, |                 args.locked, | ||||||
|                 args.frozen, |                 args.frozen, | ||||||
|                 args.dry_run, |                 args.dry_run, | ||||||
|                 args.refresh, |  | ||||||
|                 args.python, |                 args.python, | ||||||
|                 args.install_mirrors, |                 args.install_mirrors, | ||||||
|                 args.settings, |                 args.settings, | ||||||
|  |  | ||||||
|  | @ -31658,221 +31658,6 @@ fn lock_required_intersection() -> Result<()> { | ||||||
|     Ok(()) |     Ok(()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[test] |  | ||||||
| fn lock_refresh() -> Result<()> { |  | ||||||
|     let context = TestContext::new("3.12"); |  | ||||||
| 
 |  | ||||||
|     let pyproject_toml = context.temp_dir.child("pyproject.toml"); |  | ||||||
|     pyproject_toml.write_str( |  | ||||||
|         r#" |  | ||||||
|         [project] |  | ||||||
|         name = "project" |  | ||||||
|         version = "0.1.0" |  | ||||||
|         requires-python = ">=3.12" |  | ||||||
|         dependencies = ["anyio==3.7.0"] |  | ||||||
|         "#,
 |  | ||||||
|     )?; |  | ||||||
| 
 |  | ||||||
|     uv_snapshot!(context.filters(), context.lock(), @r###" |  | ||||||
|     success: true |  | ||||||
|     exit_code: 0 |  | ||||||
|     ----- stdout ----- |  | ||||||
| 
 |  | ||||||
|     ----- stderr ----- |  | ||||||
|     Resolved 4 packages in [TIME] |  | ||||||
|     "###);
 |  | ||||||
| 
 |  | ||||||
|     // Write a `uv.lock` that accidentally omits the `anyio` wheel.
 |  | ||||||
|     context.temp_dir.child("uv.lock").write_str( |  | ||||||
|         r#" |  | ||||||
|         version = 1 |  | ||||||
|         revision = 3 |  | ||||||
|         requires-python = ">=3.12" |  | ||||||
| 
 |  | ||||||
|         [options] |  | ||||||
|         exclude-newer = "2024-03-25T00:00:00Z" |  | ||||||
| 
 |  | ||||||
|         [[package]] |  | ||||||
|         name = "anyio" |  | ||||||
|         version = "3.7.0" |  | ||||||
|         source = { registry = "https://pypi.org/simple" } |  | ||||||
|         dependencies = [ |  | ||||||
|             { name = "idna" }, |  | ||||||
|             { name = "sniffio" }, |  | ||||||
|         ] |  | ||||||
|         sdist = { url = "https://files.pythonhosted.org/packages/c6/b3/fefbf7e78ab3b805dec67d698dc18dd505af7a18a8dd08868c9b4fa736b5/anyio-3.7.0.tar.gz", hash = "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce", size = 142737, upload-time = "2023-05-27T11:12:46.688Z" } |  | ||||||
| 
 |  | ||||||
|         [[package]] |  | ||||||
|         name = "idna" |  | ||||||
|         version = "3.6" |  | ||||||
|         source = { registry = "https://pypi.org/simple" } |  | ||||||
|         sdist = { url = "https://files.pythonhosted.org/packages/bf/3f/ea4b9117521a1e9c50344b909be7886dd00a519552724809bb1f486986c2/idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca", size = 175426, upload-time = "2023-11-25T15:40:54.902Z" } |  | ||||||
|         wheels = [ |  | ||||||
|             { url = "https://files.pythonhosted.org/packages/c2/e7/a82b05cf63a603df6e68d59ae6a68bf5064484a0718ea5033660af4b54a9/idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f", size = 61567, upload-time = "2023-11-25T15:40:52.604Z" }, |  | ||||||
|         ] |  | ||||||
| 
 |  | ||||||
|         [[package]] |  | ||||||
|         name = "project" |  | ||||||
|         version = "0.1.0" |  | ||||||
|         source = { virtual = "." } |  | ||||||
|         dependencies = [ |  | ||||||
|             { name = "anyio" }, |  | ||||||
|         ] |  | ||||||
| 
 |  | ||||||
|         [package.metadata] |  | ||||||
|         requires-dist = [{ name = "anyio", specifier = "==3.7.0" }] |  | ||||||
| 
 |  | ||||||
|         [[package]] |  | ||||||
|         name = "sniffio" |  | ||||||
|         version = "1.3.1" |  | ||||||
|         source = { registry = "https://pypi.org/simple" } |  | ||||||
|         sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } |  | ||||||
|         wheels = [ |  | ||||||
|             { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, |  | ||||||
|         ] |  | ||||||
|     "#,
 |  | ||||||
|     )?; |  | ||||||
| 
 |  | ||||||
|     // Run `uv lock`.
 |  | ||||||
|     uv_snapshot!(context.filters(), context.lock(), @r###" |  | ||||||
|     success: true |  | ||||||
|     exit_code: 0 |  | ||||||
|     ----- stdout ----- |  | ||||||
| 
 |  | ||||||
|     ----- stderr ----- |  | ||||||
|     Resolved 4 packages in [TIME] |  | ||||||
|     "###);
 |  | ||||||
| 
 |  | ||||||
|     let lock = context.read("uv.lock"); |  | ||||||
| 
 |  | ||||||
|     // The wheel should still be missing.
 |  | ||||||
|     insta::with_settings!({ |  | ||||||
|         filters => context.filters(), |  | ||||||
|     }, { |  | ||||||
|         assert_snapshot!( |  | ||||||
|             lock, @r#" |  | ||||||
|         version = 1 |  | ||||||
|         revision = 3 |  | ||||||
|         requires-python = ">=3.12" |  | ||||||
| 
 |  | ||||||
|         [options] |  | ||||||
|         exclude-newer = "2024-03-25T00:00:00Z" |  | ||||||
| 
 |  | ||||||
|         [[package]] |  | ||||||
|         name = "anyio" |  | ||||||
|         version = "3.7.0" |  | ||||||
|         source = { registry = "https://pypi.org/simple" } |  | ||||||
|         dependencies = [ |  | ||||||
|             { name = "idna" }, |  | ||||||
|             { name = "sniffio" }, |  | ||||||
|         ] |  | ||||||
|         sdist = { url = "https://files.pythonhosted.org/packages/c6/b3/fefbf7e78ab3b805dec67d698dc18dd505af7a18a8dd08868c9b4fa736b5/anyio-3.7.0.tar.gz", hash = "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce", size = 142737, upload-time = "2023-05-27T11:12:46.688Z" } |  | ||||||
| 
 |  | ||||||
|         [[package]] |  | ||||||
|         name = "idna" |  | ||||||
|         version = "3.6" |  | ||||||
|         source = { registry = "https://pypi.org/simple" } |  | ||||||
|         sdist = { url = "https://files.pythonhosted.org/packages/bf/3f/ea4b9117521a1e9c50344b909be7886dd00a519552724809bb1f486986c2/idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca", size = 175426, upload-time = "2023-11-25T15:40:54.902Z" } |  | ||||||
|         wheels = [ |  | ||||||
|             { url = "https://files.pythonhosted.org/packages/c2/e7/a82b05cf63a603df6e68d59ae6a68bf5064484a0718ea5033660af4b54a9/idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f", size = 61567, upload-time = "2023-11-25T15:40:52.604Z" }, |  | ||||||
|         ] |  | ||||||
| 
 |  | ||||||
|         [[package]] |  | ||||||
|         name = "project" |  | ||||||
|         version = "0.1.0" |  | ||||||
|         source = { virtual = "." } |  | ||||||
|         dependencies = [ |  | ||||||
|             { name = "anyio" }, |  | ||||||
|         ] |  | ||||||
| 
 |  | ||||||
|         [package.metadata] |  | ||||||
|         requires-dist = [{ name = "anyio", specifier = "==3.7.0" }] |  | ||||||
| 
 |  | ||||||
|         [[package]] |  | ||||||
|         name = "sniffio" |  | ||||||
|         version = "1.3.1" |  | ||||||
|         source = { registry = "https://pypi.org/simple" } |  | ||||||
|         sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } |  | ||||||
|         wheels = [ |  | ||||||
|             { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, |  | ||||||
|         ] |  | ||||||
|         "#
 |  | ||||||
|         ); |  | ||||||
|     }); |  | ||||||
| 
 |  | ||||||
|     // Re-run with `--refresh`.
 |  | ||||||
|     uv_snapshot!(context.filters(), context.lock().arg("--refresh"), @r" |  | ||||||
|     success: true |  | ||||||
|     exit_code: 0 |  | ||||||
|     ----- stdout ----- |  | ||||||
| 
 |  | ||||||
|     ----- stderr ----- |  | ||||||
|     Resolved 4 packages in [TIME] |  | ||||||
|     ");
 |  | ||||||
| 
 |  | ||||||
|     let lock = context.read("uv.lock"); |  | ||||||
| 
 |  | ||||||
|     // The wheel should be present.
 |  | ||||||
|     insta::with_settings!({ |  | ||||||
|         filters => context.filters(), |  | ||||||
|     }, { |  | ||||||
|         assert_snapshot!( |  | ||||||
|             lock, @r#" |  | ||||||
|         version = 1 |  | ||||||
|         revision = 3 |  | ||||||
|         requires-python = ">=3.12" |  | ||||||
| 
 |  | ||||||
|         [options] |  | ||||||
|         exclude-newer = "2024-03-25T00:00:00Z" |  | ||||||
| 
 |  | ||||||
|         [[package]] |  | ||||||
|         name = "anyio" |  | ||||||
|         version = "3.7.0" |  | ||||||
|         source = { registry = "https://pypi.org/simple" } |  | ||||||
|         dependencies = [ |  | ||||||
|             { name = "idna" }, |  | ||||||
|             { name = "sniffio" }, |  | ||||||
|         ] |  | ||||||
|         sdist = { url = "https://files.pythonhosted.org/packages/c6/b3/fefbf7e78ab3b805dec67d698dc18dd505af7a18a8dd08868c9b4fa736b5/anyio-3.7.0.tar.gz", hash = "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce", size = 142737, upload-time = "2023-05-27T11:12:46.688Z" } |  | ||||||
|         wheels = [ |  | ||||||
|             { url = "https://files.pythonhosted.org/packages/68/fe/7ce1926952c8a403b35029e194555558514b365ad77d75125f521a2bec62/anyio-3.7.0-py3-none-any.whl", hash = "sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0", size = 80873, upload-time = "2023-05-27T11:12:44.474Z" }, |  | ||||||
|         ] |  | ||||||
| 
 |  | ||||||
|         [[package]] |  | ||||||
|         name = "idna" |  | ||||||
|         version = "3.6" |  | ||||||
|         source = { registry = "https://pypi.org/simple" } |  | ||||||
|         sdist = { url = "https://files.pythonhosted.org/packages/bf/3f/ea4b9117521a1e9c50344b909be7886dd00a519552724809bb1f486986c2/idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca", size = 175426, upload-time = "2023-11-25T15:40:54.902Z" } |  | ||||||
|         wheels = [ |  | ||||||
|             { url = "https://files.pythonhosted.org/packages/c2/e7/a82b05cf63a603df6e68d59ae6a68bf5064484a0718ea5033660af4b54a9/idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f", size = 61567, upload-time = "2023-11-25T15:40:52.604Z" }, |  | ||||||
|         ] |  | ||||||
| 
 |  | ||||||
|         [[package]] |  | ||||||
|         name = "project" |  | ||||||
|         version = "0.1.0" |  | ||||||
|         source = { virtual = "." } |  | ||||||
|         dependencies = [ |  | ||||||
|             { name = "anyio" }, |  | ||||||
|         ] |  | ||||||
| 
 |  | ||||||
|         [package.metadata] |  | ||||||
|         requires-dist = [{ name = "anyio", specifier = "==3.7.0" }] |  | ||||||
| 
 |  | ||||||
|         [[package]] |  | ||||||
|         name = "sniffio" |  | ||||||
|         version = "1.3.1" |  | ||||||
|         source = { registry = "https://pypi.org/simple" } |  | ||||||
|         sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } |  | ||||||
|         wheels = [ |  | ||||||
|             { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, |  | ||||||
|         ] |  | ||||||
|         "#
 |  | ||||||
|         ); |  | ||||||
|     }); |  | ||||||
| 
 |  | ||||||
|     Ok(()) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /// Ensure conflicts on virtual packages (such as markers) give good error messages.
 | /// Ensure conflicts on virtual packages (such as markers) give good error messages.
 | ||||||
| #[test] | #[test] | ||||||
| fn collapsed_error_with_marker_packages() -> Result<()> { | fn collapsed_error_with_marker_packages() -> Result<()> { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Zanie Blue
						Zanie Blue