File tree 3 files changed +29
-6
lines changed
3 files changed +29
-6
lines changed Original file line number Diff line number Diff line change 1
1
from __future__ import annotations
2
2
3
3
from typing import TYPE_CHECKING
4
+ from typing import cast
4
5
5
6
from cleo .io .null_io import NullIO
6
7
from packaging .utils import canonicalize_name
21
22
22
23
from cleo .io .io import IO
23
24
from packaging .utils import NormalizedName
25
+ from poetry .core .packages .path_dependency import PathDependency
24
26
from poetry .core .packages .project_package import ProjectPackage
25
27
26
28
from poetry .config .config import Config
@@ -336,6 +338,13 @@ def _do_install(self) -> int:
336
338
# or optional and not requested, are dropped
337
339
self ._filter_operations (ops , lockfile_repo )
338
340
341
+ # Validate the dependencies
342
+ for op in ops :
343
+ dep = op .package .to_dependency ()
344
+ if dep .is_file () or dep .is_directory ():
345
+ dep = cast ("PathDependency" , dep )
346
+ dep .validate (raise_error = True )
347
+
339
348
# Execute operations
340
349
status = self ._execute (ops )
341
350
Original file line number Diff line number Diff line change 43
43
from poetry .core .packages .directory_dependency import DirectoryDependency
44
44
from poetry .core .packages .file_dependency import FileDependency
45
45
from poetry .core .packages .package import Package
46
- from poetry .core .packages .path_dependency import PathDependency
47
46
from poetry .core .packages .url_dependency import URLDependency
48
47
from poetry .core .packages .vcs_dependency import VCSDependency
49
48
from poetry .core .version .markers import BaseMarker
@@ -560,11 +559,6 @@ def complete_package(
560
559
if locked is not None and locked .package .is_same_package_as (dep ):
561
560
continue
562
561
self .search_for_direct_origin_dependency (dep )
563
- else :
564
- for dep in _dependencies :
565
- if dep .is_file () or dep .is_directory ():
566
- dep = cast ("PathDependency" , dep )
567
- dep .validate (raise_error = True )
568
562
569
563
dependencies = self ._get_dependencies_with_overrides (
570
564
_dependencies , dependency_package
Original file line number Diff line number Diff line change @@ -437,3 +437,23 @@ def test_install_path_dependency_does_not_exist(
437
437
else :
438
438
with pytest .raises (ValueError , match = "does not exist" ):
439
439
tester .execute (options )
440
+
441
+
442
+ @pytest .mark .parametrize ("options" , ["" , "--no-directory" ])
443
+ def test_install_missing_directory_dependency_with_no_directory (
444
+ command_tester_factory : CommandTesterFactory ,
445
+ project_factory : ProjectFactory ,
446
+ fixture_dir : FixtureDirGetter ,
447
+ options : str ,
448
+ ) -> None :
449
+ poetry = _project_factory (
450
+ "missing_directory_dependency" , project_factory , fixture_dir
451
+ )
452
+ assert isinstance (poetry .locker , TestLocker )
453
+ poetry .locker .locked (True )
454
+ tester = command_tester_factory ("install" , poetry = poetry )
455
+ if options :
456
+ tester .execute (options )
457
+ else :
458
+ with pytest .raises (ValueError , match = "does not exist" ):
459
+ tester .execute (options )
You can’t perform that action at this time.
0 commit comments