Skip to content

Commit

Permalink
Replaced FileNotFoundException with log instead (Shazwazza#199)
Browse files Browse the repository at this point in the history
  • Loading branch information
LennardF1989 committed Dec 19, 2023
1 parent 994e945 commit 26c0c30
Show file tree
Hide file tree
Showing 11 changed files with 82 additions and 39 deletions.
5 changes: 2 additions & 3 deletions Nuget.config
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<add key="AspNetCiDev" value="https://www.myget.org/F/aspnetcidev/api/v3/index.json" />
<add key="XUnitDev" value="https://www.myget.org/F/xunit/api/v3/index.json" />
</packageSources>
</configuration>
</configuration>
15 changes: 10 additions & 5 deletions src/Smidge.Core/Cache/PhysicalFileCacheFileSystem.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Smidge.Hashing;
using Smidge.Models;
using System;
Expand All @@ -13,7 +14,8 @@ public class PhysicalFileCacheFileSystem : ICacheFileSystem
public static PhysicalFileCacheFileSystem CreatePhysicalFileCacheFileSystem(
IHasher hasher,
ISmidgeConfig config,
IHostEnvironment hosting)
IHostEnvironment hosting,
ILogger logger)
{
var cacheFolder = Path.Combine(hosting.ContentRootPath, config.DataFolder, "Cache", Environment.MachineName.ReplaceNonAlphanumericChars('-'));

Expand All @@ -22,18 +24,21 @@ public class PhysicalFileCacheFileSystem : ICacheFileSystem

var cacheFileProvider = new PhysicalFileProvider(cacheFolder);

return new PhysicalFileCacheFileSystem(cacheFileProvider, hasher);
return new PhysicalFileCacheFileSystem(cacheFileProvider, hasher, logger);
}

private readonly IHasher _hasher;
private readonly PhysicalFileProvider _fileProvider;
private readonly ILogger _logger;

public PhysicalFileCacheFileSystem(
PhysicalFileProvider cacheFileProvider,
IHasher hasher)
IHasher hasher,
ILogger logger)
{
_fileProvider = cacheFileProvider;
_hasher = hasher;
_logger = logger;
}

public IFileInfo GetRequiredFileInfo(string filePath)
Expand All @@ -42,7 +47,7 @@ public IFileInfo GetRequiredFileInfo(string filePath)

if (!fileInfo.Exists)
{
throw new FileNotFoundException($"No such file exists {fileInfo.PhysicalPath ?? fileInfo.Name} (mapped from {filePath})", fileInfo.PhysicalPath ?? fileInfo.Name);
_logger.LogError("No such file exists {FileName} (mapped from {FilePath})", fileInfo.PhysicalPath ?? fileInfo.Name, filePath);
}

return fileInfo;
Expand Down
10 changes: 7 additions & 3 deletions src/Smidge.Core/SmidgeFileSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
using Smidge.Options;
using Smidge.Cache;
using System.Linq;
using Microsoft.Extensions.Logging;

namespace Smidge
{
Expand All @@ -21,17 +22,20 @@ public sealed class SmidgeFileSystem : ISmidgeFileSystem
private readonly IWebsiteInfo _siteInfo;
private readonly IFileProvider _sourceFileProvider;
private readonly IFileProviderFilter _fileProviderFilter;
private readonly ILogger _logger;

public SmidgeFileSystem(
IFileProvider sourceFileProvider,
IFileProviderFilter fileProviderFilter,
ICacheFileSystem cacheFileProvider,
IWebsiteInfo siteInfo)
IWebsiteInfo siteInfo,
ILogger logger)
{
_sourceFileProvider = sourceFileProvider;
_fileProviderFilter = fileProviderFilter;
CacheFileSystem = cacheFileProvider;
_siteInfo = siteInfo;
_logger = logger;
}

public ICacheFileSystem CacheFileSystem { get; }
Expand All @@ -43,7 +47,7 @@ public IFileInfo GetRequiredFileInfo(IWebFile webfile)

if (!fileInfo.Exists)
{
throw new FileNotFoundException($"No such file exists {fileInfo.PhysicalPath ?? fileInfo.Name} (mapped from {path})", fileInfo.PhysicalPath ?? fileInfo.Name);
_logger.LogError("No such file exists {FileName} (mapped from {FilePath})", fileInfo.PhysicalPath ?? fileInfo.Name, path);
}

return fileInfo;
Expand All @@ -56,7 +60,7 @@ public IFileInfo GetRequiredFileInfo(string filePath)

if (!fileInfo.Exists)
{
throw new FileNotFoundException($"No such file exists {fileInfo.PhysicalPath ?? fileInfo.Name} (mapped from {filePath})", fileInfo.PhysicalPath ?? fileInfo.Name);
_logger.LogError("No such file exists {FileName} (mapped from {FilePath})", fileInfo.PhysicalPath ?? fileInfo.Name, filePath);
}

return fileInfo;
Expand Down
12 changes: 9 additions & 3 deletions src/Smidge.InMemory/ConfiguredCacheFileSystem.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Hosting;
Expand All @@ -10,6 +10,7 @@
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;

namespace Smidge.InMemory
{
Expand All @@ -31,14 +32,19 @@ public ConfiguredCacheFileSystem(IOptions<SmidgeOptions> options, IServiceProvid

if (_options.CacheOptions.UseInMemoryCache)
{
_wrapped = new MemoryCacheFileSystem(hasher);
var logger = services.GetRequiredService<ILogger<MemoryCacheFileSystem>>();

_wrapped = new MemoryCacheFileSystem(hasher, logger);
}
else
{
var logger = services.GetRequiredService<ILogger<PhysicalFileCacheFileSystem>>();

_wrapped = PhysicalFileCacheFileSystem.CreatePhysicalFileCacheFileSystem(
hasher,
services.GetRequiredService<ISmidgeConfig>(),
services.GetRequiredService<IHostEnvironment>());
services.GetRequiredService<IHostEnvironment>(),
logger);
}
}

Expand Down
9 changes: 6 additions & 3 deletions src/Smidge.InMemory/MemoryCacheFileSystem.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
using Dazinator.Extensions.FileProviders;
using Dazinator.Extensions.FileProviders;
using Dazinator.Extensions.FileProviders.InMemory;
using Dazinator.Extensions.FileProviders.InMemory.Directory;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Logging;
using Smidge.Cache;
using Smidge.Hashing;
using Smidge.Models;
Expand All @@ -17,12 +18,14 @@ public class MemoryCacheFileSystem : ICacheFileSystem
private readonly IDirectory _directory;
private readonly IHasher _hasher;
private readonly IFileProvider _fileProvider;
private readonly ILogger _logger;

public MemoryCacheFileSystem(IHasher hasher)
public MemoryCacheFileSystem(IHasher hasher, ILogger logger)
{
_directory = new InMemoryDirectory();
_fileProvider = new InMemoryFileProvider(_directory);
_hasher = hasher;
_logger = logger;
}

public IFileInfo GetRequiredFileInfo(string filePath)
Expand All @@ -31,7 +34,7 @@ public IFileInfo GetRequiredFileInfo(string filePath)

if (!fileInfo.Exists)
{
throw new FileNotFoundException($"No such file exists {fileInfo.PhysicalPath ?? fileInfo.Name} (mapped from {filePath})", fileInfo.PhysicalPath ?? fileInfo.Name);
_logger.LogError("No such file exists {FileName} (mapped from {FilePath})", fileInfo.PhysicalPath ?? fileInfo.Name, filePath);
}

return fileInfo;
Expand Down
10 changes: 7 additions & 3 deletions src/Smidge/SmidgeStartup.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.Infrastructure;
Expand All @@ -17,6 +17,7 @@
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using Microsoft.Extensions.Logging;

[assembly: InternalsVisibleTo("Smidge.Tests")]

Expand Down Expand Up @@ -47,20 +48,23 @@ public static IServiceCollection AddSmidge(this IServiceCollection services, ICo
services.AddSingleton<ISmidgeFileSystem>(p =>
{
var hosting = p.GetRequiredService<IWebHostEnvironment>();
var logger = p.GetRequiredService<ILogger<SmidgeFileSystem>>();
//resolve the ISmidgeFileProvider if there is one
var provider = p.GetService<ISmidgeFileProvider>() ?? hosting.WebRootFileProvider;
return new SmidgeFileSystem(
provider,
p.GetRequiredService<IFileProviderFilter>(),
p.GetRequiredService<ICacheFileSystem>(),
p.GetRequiredService<IWebsiteInfo>());
p.GetRequiredService<IWebsiteInfo>(),
logger);
});

services.AddSingleton<ICacheFileSystem>(p => PhysicalFileCacheFileSystem.CreatePhysicalFileCacheFileSystem(
p.GetRequiredService<IHasher>(),
p.GetRequiredService<ISmidgeConfig>(),
p.GetRequiredService<IHostEnvironment>()));
p.GetRequiredService<IHostEnvironment>(),
p.GetRequiredService<ILogger<PhysicalFileCacheFileSystem>>()));

services.AddSingleton<ISmidgeConfig>((p) =>
{
Expand Down
10 changes: 7 additions & 3 deletions test/Smidge.Tests/BundleFileSetGeneratorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using Smidge.Hashing;
using Smidge.Options;
using System.Linq;
using Microsoft.Extensions.Logging;
using Smidge.FileProcessors;
using Microsoft.Extensions.Options;
using Smidge.Cache;
Expand All @@ -28,9 +29,10 @@ public void Get_Ordered_File_Set_No_Duplicates()

var fileProvider = new Mock<IFileProvider>();
var cacheProvider = new Mock<ICacheFileSystem>();
var logger = new Mock<ILogger>();
var fileProviderFilter = new DefaultFileProviderFilter();

var fileSystemHelper = new SmidgeFileSystem(fileProvider.Object, fileProviderFilter, cacheProvider.Object, Mock.Of<IWebsiteInfo>());
var fileSystemHelper = new SmidgeFileSystem(fileProvider.Object, fileProviderFilter, cacheProvider.Object, Mock.Of<IWebsiteInfo>(), logger.Object);
var pipeline = new PreProcessPipeline(Enumerable.Empty<IPreProcessor>());
var smidgeOptions = new Mock<IOptions<SmidgeOptions>>();
smidgeOptions.Setup(opt => opt.Value).Returns(new SmidgeOptions());
Expand Down Expand Up @@ -58,9 +60,10 @@ public void Get_Ordered_File_External_Set()

var fileProvider = new Mock<IFileProvider>();
var cacheProvider = new Mock<ICacheFileSystem>();
var logger = new Mock<ILogger>();
var fileProviderFilter = new DefaultFileProviderFilter();

var fileSystemHelper = new SmidgeFileSystem(fileProvider.Object, fileProviderFilter, cacheProvider.Object, Mock.Of<IWebsiteInfo>());
var fileSystemHelper = new SmidgeFileSystem(fileProvider.Object, fileProviderFilter, cacheProvider.Object, Mock.Of<IWebsiteInfo>(), logger.Object);
var pipeline = new PreProcessPipeline(Enumerable.Empty<IPreProcessor>());
var smidgeOptions = new Mock<IOptions<SmidgeOptions>>();
smidgeOptions.Setup(opt => opt.Value).Returns(new SmidgeOptions());
Expand Down Expand Up @@ -89,9 +92,10 @@ public void Get_Ordered_File_Set_Correct_Order()

var fileProvider = new Mock<IFileProvider>();
var cacheProvider = new Mock<ICacheFileSystem>();
var logger = new Mock<ILogger>();
var fileProviderFilter = new DefaultFileProviderFilter();

var fileSystemHelper = new SmidgeFileSystem(fileProvider.Object, fileProviderFilter, cacheProvider.Object, Mock.Of<IWebsiteInfo>());
var fileSystemHelper = new SmidgeFileSystem(fileProvider.Object, fileProviderFilter, cacheProvider.Object, Mock.Of<IWebsiteInfo>(), logger.Object);
var pipeline = new PreProcessPipeline(Enumerable.Empty<IPreProcessor>());
var smidgeOptions = new Mock<IOptions<SmidgeOptions>>();
smidgeOptions.Setup(opt => opt.Value).Returns(new SmidgeOptions());
Expand Down
8 changes: 5 additions & 3 deletions test/Smidge.Tests/CssImportProcessorTests.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Logging;
using Moq;
using Smidge.Cache;
using Smidge.FileProcessors;
Expand Down Expand Up @@ -69,7 +70,8 @@ private ISmidgeFileSystem GetFileSystem()
Mock.Of<IFileProvider>(),
Mock.Of<IFileProviderFilter>(),
Mock.Of<ICacheFileSystem>(),
Mock.Of<IWebsiteInfo>());
Mock.Of<IWebsiteInfo>(),
Mock.Of<ILogger>());
return fileSystem;
}

Expand All @@ -81,4 +83,4 @@ private IWebsiteInfo GetWebsiteInfo()
return websiteInfo.Object;
}
}
}
}
7 changes: 5 additions & 2 deletions test/Smidge.Tests/FileBatcherTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Infrastructure;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Logging;
using Xunit;
using Smidge.Hashing;
using Smidge.Cache;
Expand All @@ -28,10 +29,11 @@ public void Get_Composite_File_Collection_For_Url_Generation_No_Duplicates()

var fileProvider = new Mock<IFileProvider>();
var cacheProvider = new Mock<ICacheFileSystem>();
var logger = new Mock<ILogger>();
var fileProviderFilter = new DefaultFileProviderFilter();

var hasher = Mock.Of<IHasher>();
var fileSystemHelper = new SmidgeFileSystem(fileProvider.Object, fileProviderFilter, cacheProvider.Object, Mock.Of<IWebsiteInfo>());
var fileSystemHelper = new SmidgeFileSystem(fileProvider.Object, fileProviderFilter, cacheProvider.Object, Mock.Of<IWebsiteInfo>(), logger.Object);
var batcher = new FileBatcher(fileSystemHelper, urlHelper, hasher);

var file = new Mock<IFileInfo>();
Expand Down Expand Up @@ -59,9 +61,10 @@ public void Get_Composite_File_Collection_For_Url_Generation()

var fileProvider = new Mock<IFileProvider>();
var cacheProvider = new Mock<ICacheFileSystem>();
var logger = new Mock<ILogger>();
var fileProviderFilter = new DefaultFileProviderFilter();
var hasher = Mock.Of<IHasher>();
var fileSystemHelper = new SmidgeFileSystem(fileProvider.Object, fileProviderFilter, cacheProvider.Object, Mock.Of<IWebsiteInfo>());
var fileSystemHelper = new SmidgeFileSystem(fileProvider.Object, fileProviderFilter, cacheProvider.Object, Mock.Of<IWebsiteInfo>(), logger.Object);
var batcher = new FileBatcher(fileSystemHelper, urlHelper, hasher);

var file = new Mock<IFileInfo>();
Expand Down

0 comments on commit 26c0c30

Please sign in to comment.