From f48466ed725eb8265ee89e74f7440e5f37d81dcb Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Thu, 30 Apr 2020 15:29:57 +0800 Subject: [PATCH] make virtual file system return the root directory --- .../DictionaryBasedFileProvider.cs | 4 ++-- .../VirtualFileSystem/VirtualFilePathHelper.cs | 9 +++++++-- .../VirtualFileProvider_Tests.cs | 18 +++++++++++++++++- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/DictionaryBasedFileProvider.cs b/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/DictionaryBasedFileProvider.cs index a8ea963f0e..bd2adc5a2b 100644 --- a/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/DictionaryBasedFileProvider.cs +++ b/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/DictionaryBasedFileProvider.cs @@ -11,7 +11,7 @@ namespace Volo.Abp.VirtualFileSystem public virtual IFileInfo GetFileInfo(string subpath) { - if (string.IsNullOrEmpty(subpath)) + if (subpath == null) { return new NotFoundFileInfo(subpath); } @@ -67,4 +67,4 @@ namespace Volo.Abp.VirtualFileSystem return subpath; } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/VirtualFilePathHelper.cs b/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/VirtualFilePathHelper.cs index ea9c4daf54..45887cccfb 100644 --- a/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/VirtualFilePathHelper.cs +++ b/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/VirtualFilePathHelper.cs @@ -10,6 +10,11 @@ namespace Volo.Abp.VirtualFileSystem public static string NormalizePath(string fullPath) { + if (fullPath == "/") + { + return string.Empty; + } + var fileName = fullPath; var extension = ""; @@ -29,7 +34,7 @@ namespace Volo.Abp.VirtualFileSystem return NormalizeChars(fileName) + extension; } - + private static string NormalizeChars(string fileName) { var folderParts = fileName.Replace(".", "/").Split("/"); @@ -42,4 +47,4 @@ namespace Volo.Abp.VirtualFileSystem return folderParts.Take(folderParts.Length - 1).Select(s => s.Replace("-", "_")).JoinAsString("/") + "/" + folderParts.Last(); } } -} \ No newline at end of file +} diff --git a/framework/test/Volo.Abp.VirtualFileSystem.Tests/Volo/Abp/VirtualFileSystem/VirtualFileProvider_Tests.cs b/framework/test/Volo.Abp.VirtualFileSystem.Tests/Volo/Abp/VirtualFileSystem/VirtualFileProvider_Tests.cs index 3d69b87b56..2243d9a11a 100644 --- a/framework/test/Volo.Abp.VirtualFileSystem.Tests/Volo/Abp/VirtualFileSystem/VirtualFileProvider_Tests.cs +++ b/framework/test/Volo.Abp.VirtualFileSystem.Tests/Volo/Abp/VirtualFileSystem/VirtualFileProvider_Tests.cs @@ -1,4 +1,5 @@ -using System.IO; +using System; +using System.IO; using System.Linq; using System.Text; using Microsoft.Extensions.DependencyInjection; @@ -47,6 +48,21 @@ namespace Volo.Abp.VirtualFileSystem contentList.ShouldContain(x => x.Name == "jquery-3-1-1-min.js"); } + [Theory] + [InlineData("/")] + [InlineData("")] + public void Should_Define_And_Get_Embedded_Root_Directory_Contents(string path) + { + //Act + var contents = _virtualFileProvider.GetDirectoryContents(path); + + //Assert + contents.Exists.ShouldNotBeNull(); + + var contentList = contents.ToList(); + contentList.ShouldContain(x => x.Name == "js"); + } + [DependsOn(typeof(AbpVirtualFileSystemModule))] public class TestModule : AbpModule {