[Deps]Upgrade System.IO.Abstractions (#35656)
Some checks failed
Spell checking / Spell checking (push) Has been cancelled
Spell checking / Update PR (push) Has been cancelled
Spell checking / Report (Push) (push) Has been cancelled
Spell checking / Report (PR) (push) Has been cancelled

* Upgrade System.IO.Abstractions to the latest stable release
This commit is contained in:
Davide Giacometti 2024-11-11 10:42:40 +01:00 committed by GitHub
parent 3d306f6177
commit 2ea9d56129
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
22 changed files with 70 additions and 53 deletions

View File

@ -321,6 +321,10 @@
"WinUI3Apps\\ReverseMarkdown.dll", "WinUI3Apps\\ReverseMarkdown.dll",
"WinUI3Apps\\SharpCompress.dll", "WinUI3Apps\\SharpCompress.dll",
"WinUI3Apps\\ZstdSharp.dll", "WinUI3Apps\\ZstdSharp.dll",
"TestableIO.System.IO.Abstractions.dll",
"WinUI3Apps\\TestableIO.System.IO.Abstractions.dll",
"TestableIO.System.IO.Abstractions.Wrappers.dll",
"WinUI3Apps\\TestableIO.System.IO.Abstractions.Wrappers.dll",
"ColorCode.Core.dll", "ColorCode.Core.dll",
"ColorCode.UWP.dll", "ColorCode.UWP.dll",
"UnitsNet.dll", "UnitsNet.dll",

View File

@ -73,8 +73,8 @@
<!-- Package System.Diagnostics.EventLog added as a hack for being able to exclude the runtime assets so they don't conflict with 8.0.1. This is a dependency of System.Data.OleDb but the 8.0.1 version wasn't published to nuget. --> <!-- Package System.Diagnostics.EventLog added as a hack for being able to exclude the runtime assets so they don't conflict with 8.0.1. This is a dependency of System.Data.OleDb but the 8.0.1 version wasn't published to nuget. -->
<PackageVersion Include="System.Diagnostics.EventLog" Version="8.0.1" /> <PackageVersion Include="System.Diagnostics.EventLog" Version="8.0.1" />
<PackageVersion Include="System.Drawing.Common" Version="8.0.7" /> <PackageVersion Include="System.Drawing.Common" Version="8.0.7" />
<PackageVersion Include="System.IO.Abstractions" Version="17.2.3" /> <PackageVersion Include="System.IO.Abstractions" Version="21.0.29" />
<PackageVersion Include="System.IO.Abstractions.TestingHelpers" Version="17.2.3" /> <PackageVersion Include="System.IO.Abstractions.TestingHelpers" Version="21.0.29" />
<PackageVersion Include="System.Management" Version="8.0.0" /> <PackageVersion Include="System.Management" Version="8.0.0" />
<PackageVersion Include="System.Reactive" Version="6.0.1" /> <PackageVersion Include="System.Reactive" Version="6.0.1" />
<PackageVersion Include="System.Runtime.Caching" Version="8.0.1" /> <PackageVersion Include="System.Runtime.Caching" Version="8.0.1" />

View File

@ -1354,8 +1354,8 @@ EXHIBIT A -Mozilla Public License.
- System.Data.SqlClient 4.8.6 - System.Data.SqlClient 4.8.6
- System.Diagnostics.EventLog 8.0.1 - System.Diagnostics.EventLog 8.0.1
- System.Drawing.Common 8.0.7 - System.Drawing.Common 8.0.7
- System.IO.Abstractions 17.2.3 - System.IO.Abstractions 21.0.29
- System.IO.Abstractions.TestingHelpers 17.2.3 - System.IO.Abstractions.TestingHelpers 21.0.29
- System.Management 8.0.0 - System.Management 8.0.0
- System.Reactive 6.0.1 - System.Reactive 6.0.1
- System.Runtime.Caching 8.0.1 - System.Runtime.Caching 8.0.1

View File

@ -4,7 +4,6 @@
using System; using System;
using System.IO; using System.IO;
using System.IO.Abstractions;
using System.Text.Json; using System.Text.Json;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
@ -23,15 +22,14 @@ namespace ManagedCommon
public static string LoadLanguage() public static string LoadLanguage()
{ {
FileSystem fileSystem = new FileSystem();
var localAppDataDir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); var localAppDataDir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
var file = localAppDataDir + SettingsFilePath + SettingsFile; var file = localAppDataDir + SettingsFilePath + SettingsFile;
if (fileSystem.File.Exists(file)) if (File.Exists(file))
{ {
try try
{ {
Stream inputStream = fileSystem.File.Open(file, FileMode.Open); var inputStream = File.Open(file, FileMode.Open);
StreamReader reader = new StreamReader(inputStream); StreamReader reader = new StreamReader(inputStream);
string data = reader.ReadToEnd(); string data = reader.ReadToEnd();
inputStream.Close(); inputStream.Close();

View File

@ -5,7 +5,7 @@
using System; using System;
using System.Diagnostics; using System.Diagnostics;
using System.Globalization; using System.Globalization;
using System.IO.Abstractions; using System.IO;
using System.Reflection; using System.Reflection;
using PowerToys.Interop; using PowerToys.Interop;
@ -14,7 +14,6 @@ namespace ManagedCommon
{ {
public static class Logger public static class Logger
{ {
private static readonly IFileSystem _fileSystem = new FileSystem();
private static readonly Assembly Assembly = Assembly.GetExecutingAssembly(); private static readonly Assembly Assembly = Assembly.GetExecutingAssembly();
private static readonly string Version = FileVersionInfo.GetVersionInfo(Assembly.Location).ProductVersion; private static readonly string Version = FileVersionInfo.GetVersionInfo(Assembly.Location).ProductVersion;
@ -41,12 +40,12 @@ namespace ManagedCommon
applicationLogPath = Constants.AppDataPath() + applicationLogPath + "\\" + Version; applicationLogPath = Constants.AppDataPath() + applicationLogPath + "\\" + Version;
} }
if (!_fileSystem.Directory.Exists(applicationLogPath)) if (!Directory.Exists(applicationLogPath))
{ {
_fileSystem.Directory.CreateDirectory(applicationLogPath); Directory.CreateDirectory(applicationLogPath);
} }
var logFilePath = _fileSystem.Path.Combine(applicationLogPath, "Log_" + DateTime.Now.ToString(@"yyyy-MM-dd", CultureInfo.InvariantCulture) + ".txt"); var logFilePath = Path.Combine(applicationLogPath, "Log_" + DateTime.Now.ToString(@"yyyy-MM-dd", CultureInfo.InvariantCulture) + ".txt");
Trace.Listeners.Add(new TextWriterTraceListener(logFilePath)); Trace.Listeners.Add(new TextWriterTraceListener(logFilePath));

View File

@ -15,7 +15,6 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="System.IO.Abstractions" />
<PackageReference Include="System.Management" /> <PackageReference Include="System.Management" />
</ItemGroup> </ItemGroup>

View File

@ -276,7 +276,7 @@ namespace Hosts.Tests
service.RemoveReadOnlyAttribute(); service.RemoveReadOnlyAttribute();
var readOnly = fileSystem.FileInfo.FromFileName(service.HostsFilePath).Attributes.HasFlag(FileAttributes.ReadOnly); var readOnly = fileSystem.FileInfo.New(service.HostsFilePath).Attributes.HasFlag(FileAttributes.ReadOnly);
Assert.IsFalse(readOnly); Assert.IsFalse(readOnly);
} }
@ -295,7 +295,7 @@ namespace Hosts.Tests
await service.WriteAsync("# Empty hosts file", Enumerable.Empty<Entry>()); await service.WriteAsync("# Empty hosts file", Enumerable.Empty<Entry>());
var hidden = fileSystem.FileInfo.FromFileName(service.HostsFilePath).Attributes.HasFlag(FileAttributes.Hidden); var hidden = fileSystem.FileInfo.New(service.HostsFilePath).Attributes.HasFlag(FileAttributes.Hidden);
Assert.IsTrue(hidden); Assert.IsTrue(hidden);
} }
} }

View File

@ -2,6 +2,7 @@
// The Microsoft Corporation licenses this file to you under the MIT license. // The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information. // See the LICENSE file in the project root for more information.
using System;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.ComponentModel; using System.ComponentModel;
using System.IO; using System.IO;
@ -9,7 +10,7 @@ using System.IO.Abstractions;
namespace Hosts.Tests.Mocks namespace Hosts.Tests.Mocks
{ {
public class MockFileSystemWatcher : FileSystemWatcherBase public partial class MockFileSystemWatcher : FileSystemWatcherBase
{ {
public override bool IncludeSubdirectories { get; set; } public override bool IncludeSubdirectories { get; set; }
@ -27,26 +28,35 @@ namespace Hosts.Tests.Mocks
public override ISynchronizeInvoke SynchronizingObject { get; set; } public override ISynchronizeInvoke SynchronizingObject { get; set; }
public override Collection<string> Filters => throw new System.NotImplementedException(); public override Collection<string> Filters => throw new NotImplementedException();
public override WaitForChangedResult WaitForChanged(WatcherChangeTypes changeType) => default; public override IFileSystem FileSystem => throw new NotImplementedException();
public override WaitForChangedResult WaitForChanged(WatcherChangeTypes changeType, int timeout) => default; public override IContainer Container => throw new NotImplementedException();
public MockFileSystemWatcher(string path) => Path = path; public override void BeginInit() => throw new NotImplementedException();
public override void EndInit() => throw new NotImplementedException();
public override IWaitForChangedResult WaitForChanged(WatcherChangeTypes changeType, TimeSpan timeout) => throw new NotImplementedException();
public override IWaitForChangedResult WaitForChanged(WatcherChangeTypes changeType) => throw new NotImplementedException();
public override IWaitForChangedResult WaitForChanged(WatcherChangeTypes changeType, int timeout) => throw new NotImplementedException();
public MockFileSystemWatcher()
{
}
public MockFileSystemWatcher(string path)
{
Path = path;
}
public MockFileSystemWatcher(string path, string filter) public MockFileSystemWatcher(string path, string filter)
{ {
Path = path; Path = path;
Filter = filter; Filter = filter;
} }
public override void BeginInit()
{
}
public override void EndInit()
{
}
} }
} }

View File

@ -2,18 +2,22 @@
// The Microsoft Corporation licenses this file to you under the MIT license. // The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information. // See the LICENSE file in the project root for more information.
using System;
using System.IO;
using System.IO.Abstractions; using System.IO.Abstractions;
namespace Hosts.Tests.Mocks namespace Hosts.Tests.Mocks
{ {
public class MockFileSystemWatcherFactory : IFileSystemWatcherFactory public class MockFileSystemWatcherFactory : IFileSystemWatcherFactory
{ {
public IFileSystemWatcher CreateNew() => new MockFileSystemWatcher(null); public IFileSystem FileSystem => throw new NotImplementedException();
public IFileSystemWatcher CreateNew(string path) => new MockFileSystemWatcher(path); public IFileSystemWatcher New() => new MockFileSystemWatcher();
public IFileSystemWatcher CreateNew(string path, string filter) => new MockFileSystemWatcher(path, filter); public IFileSystemWatcher New(string path) => new MockFileSystemWatcher(path);
public IFileSystemWatcher FromPath(string path) => new MockFileSystemWatcher(path); public IFileSystemWatcher New(string path, string filter) => new MockFileSystemWatcher(path, filter);
public IFileSystemWatcher Wrap(FileSystemWatcher fileSystemWatcher) => throw new NotImplementedException();
} }
} }

View File

@ -52,7 +52,7 @@ namespace HostsUILib.Helpers
_hostsFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), @"System32\drivers\etc\hosts"); _hostsFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), @"System32\drivers\etc\hosts");
_fileSystemWatcher = _fileSystem.FileSystemWatcher.CreateNew(); _fileSystemWatcher = _fileSystem.FileSystemWatcher.New();
_fileSystemWatcher.Path = _fileSystem.Path.GetDirectoryName(HostsFilePath); _fileSystemWatcher.Path = _fileSystem.Path.GetDirectoryName(HostsFilePath);
_fileSystemWatcher.Filter = _fileSystem.Path.GetFileName(HostsFilePath); _fileSystemWatcher.Filter = _fileSystem.Path.GetFileName(HostsFilePath);
_fileSystemWatcher.NotifyFilter = NotifyFilters.LastWrite; _fileSystemWatcher.NotifyFilter = NotifyFilters.LastWrite;
@ -130,7 +130,7 @@ namespace HostsUILib.Helpers
throw new NotRunningElevatedException(); throw new NotRunningElevatedException();
} }
if (_fileSystem.FileInfo.FromFileName(HostsFilePath).IsReadOnly) if (_fileSystem.FileInfo.New(HostsFilePath).IsReadOnly)
{ {
throw new ReadOnlyHostsException(); throw new ReadOnlyHostsException();
} }
@ -200,7 +200,7 @@ namespace HostsUILib.Helpers
} }
// FileMode.OpenOrCreate is necessary to prevent UnauthorizedAccessException when the hosts file is hidden // FileMode.OpenOrCreate is necessary to prevent UnauthorizedAccessException when the hosts file is hidden
using var stream = _fileSystem.FileStream.Create(HostsFilePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read, _defaultBufferSize, FileOptions.Asynchronous); using var stream = _fileSystem.FileStream.New(HostsFilePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read, _defaultBufferSize, FileOptions.Asynchronous);
using var writer = new StreamWriter(stream, Encoding); using var writer = new StreamWriter(stream, Encoding);
foreach (var line in lines) foreach (var line in lines)
{ {
@ -305,7 +305,7 @@ namespace HostsUILib.Helpers
public void RemoveReadOnlyAttribute() public void RemoveReadOnlyAttribute()
{ {
var fileInfo = _fileSystem.FileInfo.FromFileName(HostsFilePath); var fileInfo = _fileSystem.FileInfo.New(HostsFilePath);
if (fileInfo.IsReadOnly) if (fileInfo.IsReadOnly)
{ {
fileInfo.IsReadOnly = false; fileInfo.IsReadOnly = false;

View File

@ -31,7 +31,7 @@ namespace WorkspacesEditor.Utils
{ {
try try
{ {
using (Stream inputStream = _fileSystem.File.Open(fileName, FileMode.Open)) using (FileSystemStream inputStream = _fileSystem.File.Open(fileName, FileMode.Open))
using (StreamReader reader = new StreamReader(inputStream)) using (StreamReader reader = new StreamReader(inputStream))
{ {
string data = reader.ReadToEnd(); string data = reader.ReadToEnd();

View File

@ -31,7 +31,7 @@ namespace FancyZonesEditorCommon.Utils
{ {
try try
{ {
using (Stream inputStream = _fileSystem.File.Open(fileName, FileMode.Open)) using (FileSystemStream inputStream = _fileSystem.File.Open(fileName, FileMode.Open))
using (StreamReader reader = new StreamReader(inputStream)) using (StreamReader reader = new StreamReader(inputStream))
{ {
string data = reader.ReadToEnd(); string data = reader.ReadToEnd();

View File

@ -27,7 +27,11 @@ namespace Microsoft.FancyZonesEditor.UITests.Utils
} }
else else
{ {
_fileSystem.Directory.CreateDirectory(Path.GetDirectoryName(file)); var path = Path.GetDirectoryName(file);
if (path != null)
{
_fileSystem.Directory.CreateDirectory(path);
}
} }
} }

View File

@ -421,7 +421,7 @@ namespace ImageResizer.Properties
string jsonData = JsonSerializer.Serialize(new SettingsWrapper() { Properties = this }, _jsonSerializerOptions); string jsonData = JsonSerializer.Serialize(new SettingsWrapper() { Properties = this }, _jsonSerializerOptions);
// Create directory if it doesn't exist // Create directory if it doesn't exist
IFileInfo file = _fileSystem.FileInfo.FromFileName(SettingsPath); IFileInfo file = _fileSystem.FileInfo.New(SettingsPath);
file.Directory.Create(); file.Directory.Create();
// write string to file // write string to file

View File

@ -51,7 +51,7 @@ namespace Microsoft.Plugin.Folder.UnitTests
[DataRow(@"c:", 2, 1, false, DisplayName = "Root without \\")] [DataRow(@"c:", 2, 1, false, DisplayName = "Root without \\")]
[DataRow(@"c:\", 2, 1, false, DisplayName = "Normal root")] [DataRow(@"c:\", 2, 1, false, DisplayName = "Normal root")]
[DataRow(@"c:\Test", 2, 2, false, DisplayName = "Select yourself")] [DataRow(@"c:\Test", 2, 2, false, DisplayName = "Select yourself")]
[DataRow(@"c:\not-exist", 2, 1, false, DisplayName = "Folder not exist, return root")] [DataRow(@"c:\not-exist", 2, 0, false, DisplayName = "Folder not exist, return root")]
[DataRow(@"c:\not-exist\not-exist2", 0, 0, false, DisplayName = "Folder not exist, return root")] [DataRow(@"c:\not-exist\not-exist2", 0, 0, false, DisplayName = "Folder not exist, return root")]
[DataRow(@"c:\bla.t", 2, 1, false, DisplayName = "Partial match file")] [DataRow(@"c:\bla.t", 2, 1, false, DisplayName = "Partial match file")]
[DataRow(@"c:/bla.t", 2, 1, false, DisplayName = "Partial match file with /")] [DataRow(@"c:/bla.t", 2, 1, false, DisplayName = "Partial match file with /")]
@ -88,8 +88,8 @@ namespace Microsoft.Plugin.Folder.UnitTests
[DataTestMethod] [DataTestMethod]
[DataRow(@"c:\>", 3, 3, true, DisplayName = "Max Folder test recursive")] [DataRow(@"c:\>", 3, 3, true, DisplayName = "Max Folder test recursive")]
[DataRow(@"c:\Test>", 3, 3, true, DisplayName = "2 Folders recursive")] [DataRow(@"c:\Test>", 3, 0, true, DisplayName = "2 Folders recursive")]
[DataRow(@"c:\not-exist>", 3, 3, true, DisplayName = "Folder not exist, return root recursive")] [DataRow(@"c:\not-exist>", 3, 0, true, DisplayName = "Folder not exist, return root recursive")]
[DataRow(@"c:\not-exist\not-exist2>", 0, 0, false, DisplayName = "Folder not exist, return root recursive")] [DataRow(@"c:\not-exist\not-exist2>", 0, 0, false, DisplayName = "Folder not exist, return root recursive")]
public void Query_Recursive_WhenCalled(string search, int folders, int files, bool truncated) public void Query_Recursive_WhenCalled(string search, int folders, int files, bool truncated)
{ {

View File

@ -25,7 +25,7 @@ namespace Microsoft.Plugin.Folder.Sources
public IEnumerable<DisplayFileInfo> MatchFileSystemInfo(string search, string incompleteName, bool isRecursive) public IEnumerable<DisplayFileInfo> MatchFileSystemInfo(string search, string incompleteName, bool isRecursive)
{ {
// search folder and add results // search folder and add results
var directoryInfo = _directoryInfoFactory.FromDirectoryName(search); var directoryInfo = _directoryInfoFactory.New(search);
var fileSystemInfos = directoryInfo.EnumerateFileSystemInfos(incompleteName, new EnumerationOptions var fileSystemInfos = directoryInfo.EnumerateFileSystemInfos(incompleteName, new EnumerationOptions
{ {
MatchType = _matchType, MatchType = _matchType,

View File

@ -22,7 +22,7 @@ namespace Microsoft.Plugin.Program
public string Location { get; set; } public string Location { get; set; }
public string Name { get => name ?? FileSystem.DirectoryInfo.FromDirectoryName(Location).Name; set => name = value; } public string Name { get => name ?? FileSystem.DirectoryInfo.New(Location).Name; set => name = value; }
public bool Enabled { get; set; } = true; public bool Enabled { get; set; } = true;

View File

@ -71,8 +71,8 @@ namespace Wox.Infrastructure
} }
else else
{ {
var time1 = FileInfo.FromFileName(bundledDataPath).LastWriteTimeUtc; var time1 = FileInfo.New(bundledDataPath).LastWriteTimeUtc;
var time2 = FileInfo.FromFileName(dataPath).LastWriteTimeUtc; var time2 = FileInfo.New(dataPath).LastWriteTimeUtc;
if (time1 != time2) if (time1 != time2)
{ {
File.Copy(bundledDataPath, dataPath, true); File.Copy(bundledDataPath, dataPath, true);

View File

@ -30,7 +30,7 @@ namespace Microsoft.PowerToys.Settings.UI.Library
{ {
try try
{ {
Stream inputStream = fileSystem.File.Open(file, FileMode.Open); FileSystemStream inputStream = fileSystem.File.Open(file, FileMode.Open);
StreamReader reader = new StreamReader(inputStream); StreamReader reader = new StreamReader(inputStream);
string data = reader.ReadToEnd(); string data = reader.ReadToEnd();
inputStream.Close(); inputStream.Close();

View File

@ -102,7 +102,7 @@ namespace Microsoft.PowerToys.Settings.UI.Library
{ {
try try
{ {
Stream inputStream = fileSystem.File.Open(file, FileMode.Open); FileSystemStream inputStream = fileSystem.File.Open(file, FileMode.Open);
StreamReader reader = new StreamReader(inputStream); StreamReader reader = new StreamReader(inputStream);
string data = reader.ReadToEnd(); string data = reader.ReadToEnd();
inputStream.Close(); inputStream.Close();

View File

@ -7,7 +7,6 @@ using System.Diagnostics;
using System.IO; using System.IO;
using System.IO.Abstractions; using System.IO.Abstractions;
using System.Linq; using System.Linq;
using System.Net.NetworkInformation;
using System.Security.Principal; using System.Security.Principal;
using Microsoft.PowerToys.Settings.UI.Library.CustomAction; using Microsoft.PowerToys.Settings.UI.Library.CustomAction;
@ -63,7 +62,7 @@ namespace Microsoft.PowerToys.Settings.UI.Library.Utilities
FileSystem.Directory.CreateDirectory(path); FileSystem.Directory.CreateDirectory(path);
} }
var watcher = FileSystem.FileSystemWatcher.CreateNew(); var watcher = FileSystem.FileSystemWatcher.New();
watcher.Path = path; watcher.Path = path;
watcher.Filter = fileName; watcher.Filter = fileName;
watcher.NotifyFilter = NotifyFilters.LastWrite; watcher.NotifyFilter = NotifyFilters.LastWrite;

View File

@ -54,7 +54,7 @@ namespace Microsoft.PowerToys.Settings.UI.Views
var settingsPath = _settingsUtils.GetSettingsFilePath(_appName); var settingsPath = _settingsUtils.GetSettingsFilePath(_appName);
_fileSystemWatcher = _fileSystem.FileSystemWatcher.CreateNew(); _fileSystemWatcher = _fileSystem.FileSystemWatcher.New();
_fileSystemWatcher.Path = _fileSystem.Path.GetDirectoryName(settingsPath); _fileSystemWatcher.Path = _fileSystem.Path.GetDirectoryName(settingsPath);
_fileSystemWatcher.Filter = _fileSystem.Path.GetFileName(settingsPath); _fileSystemWatcher.Filter = _fileSystem.Path.GetFileName(settingsPath);
_fileSystemWatcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.CreationTime; _fileSystemWatcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.CreationTime;