Your ROOT_URL in app.ini is https://git.cloudchain.link/ but you are visiting https://dash.bss.nz/open-source-mirrors/Sonarr/commit/5251db72245657cad3ea1aae15b2c1d408e470de
You should set ROOT_URL correctly, otherwise the web may not work correctly.
3 changed files with
49 additions and
12 deletions
@ -212,6 +212,38 @@ namespace NzbDrone.Common.Test.DiskTests
Subject . GetParentFolder ( path ) . Should ( ) . Be ( parent ) ;
}
[Test]
public void RemoveEmptySubfolders_should_remove_nested_empty_folder ( )
{
var mainDir = GetTempFilePath ( ) ;
var subDir1 = Path . Combine ( mainDir , "depth1" ) ;
var subDir2 = Path . Combine ( subDir1 , "depth2" ) ;
Directory . CreateDirectory ( subDir2 ) ;
Subject . RemoveEmptySubfolders ( mainDir ) ;
Directory . Exists ( mainDir ) . Should ( ) . Be ( true ) ;
Directory . Exists ( subDir1 ) . Should ( ) . Be ( false ) ;
}
[Test]
public void RemoveEmptySubfolders_should_not_remove_nested_nonempty_folder ( )
{
var mainDir = GetTempFilePath ( ) ;
var subDir1 = Path . Combine ( mainDir , "depth1" ) ;
var subDir2 = Path . Combine ( subDir1 , "depth2" ) ;
var file = Path . Combine ( subDir1 , "file1.txt" ) ;
Directory . CreateDirectory ( subDir2 ) ;
File . WriteAllText ( file , "I should not be deleted" ) ;
Subject . RemoveEmptySubfolders ( mainDir ) ;
Directory . Exists ( mainDir ) . Should ( ) . Be ( true ) ;
Directory . Exists ( subDir1 ) . Should ( ) . Be ( true ) ;
Directory . Exists ( subDir2 ) . Should ( ) . Be ( false ) ;
File . Exists ( file ) . Should ( ) . Be ( true ) ;
}
private void DoHardLinkRename ( FileShare fileShare )
{
var sourceDir = GetTempFilePath ( ) ;
@ -145,7 +145,7 @@ namespace NzbDrone.Common.Disk
{
Ensure . That ( path , ( ) = > path ) . IsValidPath ( ) ;
return Directory . Enumerate Directo ries( path ) . Empty ( ) ;
return Directory . Enumerate FileSystemEnt ries( path ) . Empty ( ) ;
}
public string [ ] GetDirectories ( string path )
@ -489,14 +489,21 @@ namespace NzbDrone.Common.Disk
public void RemoveEmptySubfolders ( string path )
{
var subfolders = Directory . GetDirectories ( path , "*" , SearchOption . AllDirectories ) ;
var files = GetFiles ( path , SearchOption . AllDirectories ) ;
foreach ( var subfolder in subfolders )
// Depth first search for empty subdirectories
foreach ( var subdir in Directory . EnumerateDirectories ( path ) )
{
if ( files . None ( f = > subfolder . IsParentPath ( f ) ) )
RemoveEmptySubfolders ( subdir ) ;
if ( Directory . EnumerateFileSystemEntries ( subdir ) . Empty ( ) )
{
DeleteFolder ( subfolder , false ) ;
try
{
Directory . Delete ( subdir , false ) ;
}
catch ( Exception ex )
{
Logger . Warn ( ex , "Failed to remove empty directory {0}" , subdir ) ;
}
}
}
}
@ -202,14 +202,12 @@ namespace NzbDrone.Core.MediaFiles
{
if ( _configService . DeleteEmptyFolders )
{
if ( _diskProvider . GetFiles ( path , SearchOption . AllDirectories ) . Empty ( ) )
_diskProvider . RemoveEmptySubfolders ( path ) ;
if ( _diskProvider . FolderEmpty ( path ) )
{
_diskProvider . DeleteFolder ( path , true ) ;
}
else
{
_diskProvider . RemoveEmptySubfolders ( path ) ;
}
}
}