@@ -65,17 +65,15 @@ fn list_modules_in<'db>(
6565 db : & ' db dyn Db ,
6666 search_path : SearchPathIngredient < ' db > ,
6767) -> Vec < Module < ' db > > {
68+ tracing:: debug!( "Listing modules in search path '{}'" , search_path. path( db) ) ;
6869 let mut lister = Lister :: new ( db, search_path. path ( db) ) ;
6970 match search_path. path ( db) . as_path ( ) {
7071 SystemOrVendoredPathRef :: System ( system_search_path) => {
7172 // Read the revision on the corresponding file root to
7273 // register an explicit dependency on this directory. When
7374 // the revision gets bumped, the cache that Salsa creates
7475 // for this routine will be invalidated.
75- let root = db
76- . files ( )
77- . root ( db, system_search_path)
78- . expect ( "System search path should have a registered root" ) ;
76+ let root = db. files ( ) . expect_root ( db, system_search_path) ;
7977 let _ = root. revision ( db) ;
8078
8179 let Ok ( it) = db. system ( ) . read_directory ( system_search_path) else {
@@ -969,10 +967,6 @@ mod tests {
969967 std:: os:: unix:: fs:: symlink ( foo. as_std_path ( ) , bar. as_std_path ( ) ) ?;
970968
971969 db. files ( ) . try_add_root ( & db, & src, FileRootKind :: Project ) ;
972- db. files ( )
973- . try_add_root ( & db, & site_packages, FileRootKind :: LibrarySearchPath ) ;
974- db. files ( )
975- . try_add_root ( & db, & custom_typeshed, FileRootKind :: LibrarySearchPath ) ;
976970
977971 Program :: from_settings (
978972 & db,
@@ -1468,6 +1462,55 @@ not_a_directory
14681462 ) ;
14691463 }
14701464
1465+ #[ test]
1466+ fn editable_installs_into_first_party_search_path ( ) {
1467+ let mut db = TestDb :: new ( ) ;
1468+
1469+ let src = SystemPath :: new ( "/src" ) ;
1470+ let venv_site_packages = SystemPathBuf :: from ( "/venv-site-packages" ) ;
1471+ let site_packages_pth = venv_site_packages. join ( "foo.pth" ) ;
1472+ let editable_install_location = src. join ( "x/y/a.py" ) ;
1473+
1474+ db. write_files ( [
1475+ ( & site_packages_pth, "/src/x/y/" ) ,
1476+ ( & editable_install_location, "" ) ,
1477+ ] )
1478+ . unwrap ( ) ;
1479+
1480+ db. files ( )
1481+ . try_add_root ( & db, SystemPath :: new ( "/src" ) , FileRootKind :: Project ) ;
1482+
1483+ Program :: from_settings (
1484+ & db,
1485+ ProgramSettings {
1486+ python_version : PythonVersionWithSource :: default ( ) ,
1487+ python_platform : PythonPlatform :: default ( ) ,
1488+ search_paths : SearchPathSettings {
1489+ site_packages_paths : vec ! [ venv_site_packages] ,
1490+ ..SearchPathSettings :: new ( vec ! [ src. to_path_buf( ) ] )
1491+ }
1492+ . to_search_paths ( db. system ( ) , db. vendored ( ) )
1493+ . expect ( "Valid search path settings" ) ,
1494+ } ,
1495+ ) ;
1496+
1497+ insta:: assert_debug_snapshot!(
1498+ list_snapshot_filter( & db, |m| m. name( & db) . as_str( ) == "a" ) ,
1499+ @r#"
1500+ [
1501+ Module::File("a", "editable", "/src/x/y/a.py", Module, None),
1502+ ]
1503+ "# ,
1504+ ) ;
1505+
1506+ let editable_root = db
1507+ . files ( )
1508+ . root ( & db, & editable_install_location)
1509+ . expect ( "file root for editable install" ) ;
1510+
1511+ assert_eq ! ( editable_root. path( & db) , src) ;
1512+ }
1513+
14711514 #[ test]
14721515 fn multiple_site_packages_with_editables ( ) {
14731516 let mut db = TestDb :: new ( ) ;
@@ -1490,12 +1533,6 @@ not_a_directory
14901533
14911534 db. files ( )
14921535 . try_add_root ( & db, SystemPath :: new ( "/src" ) , FileRootKind :: Project ) ;
1493- db. files ( )
1494- . try_add_root ( & db, & venv_site_packages, FileRootKind :: LibrarySearchPath ) ;
1495- db. files ( )
1496- . try_add_root ( & db, & system_site_packages, FileRootKind :: LibrarySearchPath ) ;
1497- db. files ( )
1498- . try_add_root ( & db, SystemPath :: new ( "/x" ) , FileRootKind :: LibrarySearchPath ) ;
14991536
15001537 Program :: from_settings (
15011538 & db,
@@ -1625,8 +1662,6 @@ not_a_directory
16251662
16261663 db. files ( )
16271664 . try_add_root ( & db, & project_directory, FileRootKind :: Project ) ;
1628- db. files ( )
1629- . try_add_root ( & db, & site_packages, FileRootKind :: LibrarySearchPath ) ;
16301665
16311666 Program :: from_settings (
16321667 & db,
0 commit comments