add nugets
This commit is contained in:
5
.nuget/packages/system.io.abstractions/20.0.28/.nupkg.metadata
vendored
Normal file
5
.nuget/packages/system.io.abstractions/20.0.28/.nupkg.metadata
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"contentHash": "kzx9Sy2Ek0RlJsE6bxeQBhwr7mte3CX+CreZevvYP8GAB5oJHzcWkfVNyi51GzeKpI24Ygg19a+R44o9INtJZg==",
|
||||
"source": "https://api.nuget.org/v3/index.json"
|
||||
}
|
||||
BIN
.nuget/packages/system.io.abstractions/20.0.28/.signature.p7s
vendored
Normal file
BIN
.nuget/packages/system.io.abstractions/20.0.28/.signature.p7s
vendored
Normal file
Binary file not shown.
161
.nuget/packages/system.io.abstractions/20.0.28/README.md
vendored
Normal file
161
.nuget/packages/system.io.abstractions/20.0.28/README.md
vendored
Normal file
@@ -0,0 +1,161 @@
|
||||

|
||||
[](https://www.nuget.org/packages/TestableIO.System.IO.Abstractions)
|
||||

|
||||
[](https://www.codacy.com/gh/TestableIO/System.IO.Abstractions/dashboard?utm_source=github.com&utm_medium=referral&utm_content=TestableIO/System.IO.Abstractions&utm_campaign=Badge_Grade)
|
||||
[](https://renovatebot.com/)
|
||||
[](https://app.fossa.com/projects/git%2Bgithub.com%2FTestableIO%2FSystem.IO.Abstractions?ref=badge_shield)
|
||||
|
||||
At the core of the library is `IFileSystem` and `FileSystem`. Instead of calling methods like `File.ReadAllText` directly, use `IFileSystem.File.ReadAllText`. We have exactly the same API, except that ours is injectable and testable.
|
||||
|
||||
## Usage
|
||||
|
||||
```shell
|
||||
dotnet add package TestableIO.System.IO.Abstractions.Wrappers
|
||||
```
|
||||
|
||||
*Note: This NuGet package is also published as `System.IO.Abstractions` but we suggest to use the prefix to make clear that this is not an official .NET package.*
|
||||
|
||||
```csharp
|
||||
public class MyComponent
|
||||
{
|
||||
readonly IFileSystem fileSystem;
|
||||
|
||||
// <summary>Create MyComponent with the given fileSystem implementation</summary>
|
||||
public MyComponent(IFileSystem fileSystem)
|
||||
{
|
||||
this.fileSystem = fileSystem;
|
||||
}
|
||||
/// <summary>Create MyComponent</summary>
|
||||
public MyComponent() : this(
|
||||
fileSystem: new FileSystem() //use default implementation which calls System.IO
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
public void Validate()
|
||||
{
|
||||
foreach (var textFile in fileSystem.Directory.GetFiles(@"c:\", "*.txt", SearchOption.TopDirectoryOnly))
|
||||
{
|
||||
var text = fileSystem.File.ReadAllText(textFile);
|
||||
if (text != "Testing is awesome.")
|
||||
throw new NotSupportedException("We can't go on together. It's not me, it's you.");
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Test helpers
|
||||
|
||||
The library also ships with a series of test helpers to save you from having to mock out every call, for basic scenarios. They are not a complete copy of a real-life file system, but they'll get you most of the way there.
|
||||
|
||||
```shell
|
||||
dotnet add package TestableIO.System.IO.Abstractions.TestingHelpers
|
||||
```
|
||||
|
||||
*Note: This NuGet package is also published as `System.IO.Abstractions.TestingHelpers` but we suggest to use the prefix to make clear that this is not an official .NET package.*
|
||||
|
||||
```csharp
|
||||
[Test]
|
||||
public void MyComponent_Validate_ShouldThrowNotSupportedExceptionIfTestingIsNotAwesome()
|
||||
{
|
||||
// Arrange
|
||||
var fileSystem = new MockFileSystem(new Dictionary<string, MockFileData>
|
||||
{
|
||||
{ @"c:\myfile.txt", new MockFileData("Testing is meh.") },
|
||||
{ @"c:\demo\jQuery.js", new MockFileData("some js") },
|
||||
{ @"c:\demo\image.gif", new MockFileData(new byte[] { 0x12, 0x34, 0x56, 0xd2 }) }
|
||||
});
|
||||
var component = new MyComponent(fileSystem);
|
||||
|
||||
try
|
||||
{
|
||||
// Act
|
||||
component.Validate();
|
||||
}
|
||||
catch (NotSupportedException ex)
|
||||
{
|
||||
// Assert
|
||||
Assert.That(ex.Message, Is.EqualTo("We can't go on together. It's not me, it's you."));
|
||||
return;
|
||||
}
|
||||
|
||||
Assert.Fail("The expected exception was not thrown.");
|
||||
}
|
||||
```
|
||||
|
||||
We even support casting from the .NET Framework's untestable types to our testable wrappers:
|
||||
|
||||
```csharp
|
||||
FileInfo SomeApiMethodThatReturnsFileInfo()
|
||||
{
|
||||
return new FileInfo("a");
|
||||
}
|
||||
|
||||
void MyFancyMethod()
|
||||
{
|
||||
var testableFileInfo = (FileInfoBase)SomeApiMethodThatReturnsFileInfo();
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Mock support
|
||||
|
||||
Since version 4.0 the top-level APIs expose interfaces instead of abstract base classes (these still exist, though), allowing you to completely mock the file system. Here's a small example, using [Moq](https://github.com/moq/moq4):
|
||||
|
||||
```csharp
|
||||
[Test]
|
||||
public void Test1()
|
||||
{
|
||||
var watcher = Mock.Of<IFileSystemWatcher>();
|
||||
var file = Mock.Of<IFile>();
|
||||
|
||||
Mock.Get(file).Setup(f => f.Exists(It.IsAny<string>())).Returns(true);
|
||||
Mock.Get(file).Setup(f => f.ReadAllText(It.IsAny<string>())).Throws<OutOfMemoryException>();
|
||||
|
||||
var unitUnderTest = new SomeClassUsingFileSystemWatcher(watcher, file);
|
||||
|
||||
Assert.Throws<OutOfMemoryException>(() => {
|
||||
Mock.Get(watcher).Raise(w => w.Created += null, new System.IO.FileSystemEventArgs(System.IO.WatcherChangeTypes.Created, @"C:\Some\Directory", "Some.File"));
|
||||
});
|
||||
|
||||
Mock.Get(file).Verify(f => f.Exists(It.IsAny<string>()), Times.Once);
|
||||
|
||||
Assert.True(unitUnderTest.FileWasCreated);
|
||||
}
|
||||
|
||||
public class SomeClassUsingFileSystemWatcher
|
||||
{
|
||||
private readonly IFileSystemWatcher _watcher;
|
||||
private readonly IFile _file;
|
||||
|
||||
public bool FileWasCreated { get; private set; }
|
||||
|
||||
public SomeClassUsingFileSystemWatcher(IFileSystemWatcher watcher, IFile file)
|
||||
{
|
||||
this._file = file;
|
||||
this._watcher = watcher;
|
||||
this._watcher.Created += Watcher_Created;
|
||||
}
|
||||
|
||||
private void Watcher_Created(object sender, System.IO.FileSystemEventArgs e)
|
||||
{
|
||||
FileWasCreated = true;
|
||||
|
||||
if(_file.Exists(e.FullPath))
|
||||
{
|
||||
var text = _file.ReadAllText(e.FullPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Related projects
|
||||
|
||||
- [`System.IO.Abstractions.Extensions`](https://github.com/TestableIO/System.IO.Abstractions.Extensions)
|
||||
provides convenience functionality on top of the core abstractions.
|
||||
|
||||
- [`System.IO.Abstractions.Analyzers`](https://github.com/TestableIO/System.IO.Abstractions.Analyzers)
|
||||
provides Roslyn analyzers to help use abstractions over static methods.
|
||||
|
||||
- [`Testably.Abstractions`](https://github.com/Testably/Testably.Abstractions)
|
||||
provides alternative test helpers and additional abstractions.
|
||||
43
.nuget/packages/system.io.abstractions/20.0.28/System.IO.Abstractions.nuspec
vendored
Normal file
43
.nuget/packages/system.io.abstractions/20.0.28/System.IO.Abstractions.nuspec
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
|
||||
<metadata>
|
||||
<id>System.IO.Abstractions</id>
|
||||
<version>20.0.28</version>
|
||||
<authors>Tatham Oddie & friends</authors>
|
||||
<license type="expression">MIT</license>
|
||||
<licenseUrl>https://licenses.nuget.org/MIT</licenseUrl>
|
||||
<icon>icon_256x256.png</icon>
|
||||
<readme>README.md</readme>
|
||||
<projectUrl>https://github.com/TestableIO/System.IO.Abstractions</projectUrl>
|
||||
<description>A set of abstractions to help make file system interactions testable.</description>
|
||||
<copyright>Copyright © Tatham Oddie & friends 2010-2022</copyright>
|
||||
<tags>testing</tags>
|
||||
<repository type="git" url="https://github.com/TestableIO/System.IO.Abstractions" commit="3229ce9a32f1047492d1cd75e140e16c2588a58e" />
|
||||
<dependencies>
|
||||
<group targetFramework=".NETFramework4.6.2">
|
||||
<dependency id="TestableIO.System.IO.Abstractions.Wrappers" version="20.0.28" exclude="Build,Analyzers" />
|
||||
<dependency id="TestableIO.System.IO.Abstractions" version="20.0.28" exclude="Build,Analyzers" />
|
||||
</group>
|
||||
<group targetFramework="net6.0">
|
||||
<dependency id="TestableIO.System.IO.Abstractions.Wrappers" version="20.0.28" exclude="Build,Analyzers" />
|
||||
<dependency id="TestableIO.System.IO.Abstractions" version="20.0.28" exclude="Build,Analyzers" />
|
||||
</group>
|
||||
<group targetFramework="net7.0">
|
||||
<dependency id="TestableIO.System.IO.Abstractions.Wrappers" version="20.0.28" exclude="Build,Analyzers" />
|
||||
<dependency id="TestableIO.System.IO.Abstractions" version="20.0.28" exclude="Build,Analyzers" />
|
||||
</group>
|
||||
<group targetFramework="net8.0">
|
||||
<dependency id="TestableIO.System.IO.Abstractions.Wrappers" version="20.0.28" exclude="Build,Analyzers" />
|
||||
<dependency id="TestableIO.System.IO.Abstractions" version="20.0.28" exclude="Build,Analyzers" />
|
||||
</group>
|
||||
<group targetFramework=".NETStandard2.0">
|
||||
<dependency id="TestableIO.System.IO.Abstractions.Wrappers" version="20.0.28" exclude="Build,Analyzers" />
|
||||
<dependency id="TestableIO.System.IO.Abstractions" version="20.0.28" exclude="Build,Analyzers" />
|
||||
</group>
|
||||
<group targetFramework=".NETStandard2.1">
|
||||
<dependency id="TestableIO.System.IO.Abstractions.Wrappers" version="20.0.28" exclude="Build,Analyzers" />
|
||||
<dependency id="TestableIO.System.IO.Abstractions" version="20.0.28" exclude="Build,Analyzers" />
|
||||
</group>
|
||||
</dependencies>
|
||||
</metadata>
|
||||
</package>
|
||||
BIN
.nuget/packages/system.io.abstractions/20.0.28/icon_256x256.png
vendored
Normal file
BIN
.nuget/packages/system.io.abstractions/20.0.28/icon_256x256.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.1 KiB |
8
.nuget/packages/system.io.abstractions/20.0.28/lib/net462/System.IO.Abstractions.xml
vendored
Normal file
8
.nuget/packages/system.io.abstractions/20.0.28/lib/net462/System.IO.Abstractions.xml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>System.IO.Abstractions</name>
|
||||
</assembly>
|
||||
<members>
|
||||
</members>
|
||||
</doc>
|
||||
8
.nuget/packages/system.io.abstractions/20.0.28/lib/net6.0/System.IO.Abstractions.xml
vendored
Normal file
8
.nuget/packages/system.io.abstractions/20.0.28/lib/net6.0/System.IO.Abstractions.xml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>System.IO.Abstractions</name>
|
||||
</assembly>
|
||||
<members>
|
||||
</members>
|
||||
</doc>
|
||||
8
.nuget/packages/system.io.abstractions/20.0.28/lib/net7.0/System.IO.Abstractions.xml
vendored
Normal file
8
.nuget/packages/system.io.abstractions/20.0.28/lib/net7.0/System.IO.Abstractions.xml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>System.IO.Abstractions</name>
|
||||
</assembly>
|
||||
<members>
|
||||
</members>
|
||||
</doc>
|
||||
8
.nuget/packages/system.io.abstractions/20.0.28/lib/net8.0/System.IO.Abstractions.xml
vendored
Normal file
8
.nuget/packages/system.io.abstractions/20.0.28/lib/net8.0/System.IO.Abstractions.xml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>System.IO.Abstractions</name>
|
||||
</assembly>
|
||||
<members>
|
||||
</members>
|
||||
</doc>
|
||||
8
.nuget/packages/system.io.abstractions/20.0.28/lib/netstandard2.0/System.IO.Abstractions.xml
vendored
Normal file
8
.nuget/packages/system.io.abstractions/20.0.28/lib/netstandard2.0/System.IO.Abstractions.xml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>System.IO.Abstractions</name>
|
||||
</assembly>
|
||||
<members>
|
||||
</members>
|
||||
</doc>
|
||||
8
.nuget/packages/system.io.abstractions/20.0.28/lib/netstandard2.1/System.IO.Abstractions.xml
vendored
Normal file
8
.nuget/packages/system.io.abstractions/20.0.28/lib/netstandard2.1/System.IO.Abstractions.xml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>System.IO.Abstractions</name>
|
||||
</assembly>
|
||||
<members>
|
||||
</members>
|
||||
</doc>
|
||||
BIN
.nuget/packages/system.io.abstractions/20.0.28/system.io.abstractions.20.0.28.nupkg
vendored
Normal file
BIN
.nuget/packages/system.io.abstractions/20.0.28/system.io.abstractions.20.0.28.nupkg
vendored
Normal file
Binary file not shown.
1
.nuget/packages/system.io.abstractions/20.0.28/system.io.abstractions.20.0.28.nupkg.sha512
vendored
Normal file
1
.nuget/packages/system.io.abstractions/20.0.28/system.io.abstractions.20.0.28.nupkg.sha512
vendored
Normal file
@@ -0,0 +1 @@
|
||||
BfAX14Yh1xQ6gSfU3F5VEOz7hDsDeDejmBb4gN1K/iMCbF39HKI0nR5B0bVfdoPRrq6WoKkKfaQOpxHvX2AWHQ==
|
||||
Reference in New Issue
Block a user