System.IO.Abstractions.TestingHelpers 19.2.4

.NET 5.0 .NET Standard 2.0 .NET Framework 4.6.1
dotnet add package System.IO.Abstractions.TestingHelpers --version 19.2.4
NuGet\Install-Package System.IO.Abstractions.TestingHelpers -Version 19.2.4
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="19.2.4" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add System.IO.Abstractions.TestingHelpers --version 19.2.4
#r "nuget: System.IO.Abstractions.TestingHelpers, 19.2.4"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install System.IO.Abstractions.TestingHelpers as a Cake Addin
#addin nuget:?package=System.IO.Abstractions.TestingHelpers&version=19.2.4

// Install System.IO.Abstractions.TestingHelpers as a Cake Tool
#tool nuget:?package=System.IO.Abstractions.TestingHelpers&version=19.2.4

System.IO.Abstractions NuGet Continuous Integration Codacy Badge Renovate enabled FOSSA Status

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

dotnet add package TestableIO.System.IO.Abstractions

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.

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.

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.

[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.AreEqual("We can't go on together. It's not me, it's you.", ex.Message);
        return;
    }

    Assert.Fail("The expected exception was not thrown.");
}

We even support casting from the .NET Framework's untestable types to our testable wrappers:

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:

[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);
        }
    }
}
Product Versions
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows net7.0 net7.0-android net7.0-ios net7.0-maccatalyst net7.0-macos net7.0-tvos net7.0-windows
.NET Core netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1
.NET Standard netstandard2.0 netstandard2.1
.NET Framework net461 net462 net463 net47 net471 net472 net48 net481
MonoAndroid monoandroid
MonoMac monomac
MonoTouch monotouch
Tizen tizen40 tizen60
Xamarin.iOS xamarinios
Xamarin.Mac xamarinmac
Xamarin.TVOS xamarintvos
Xamarin.WatchOS xamarinwatchos
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (8)

Showing the top 5 NuGet packages that depend on System.IO.Abstractions.TestingHelpers:

Package Downloads
Reo.Core.Testing

Package Description

Glob.cs

File system path globbing library (wildcards like in bash).

Noggog.Testing

Package Description

Smusdi.Testing

Utilities to test .NET services.

CreativeCoders.UnitTests

Package Description

GitHub repositories (38)

Showing the top 5 popular GitHub repositories that depend on System.IO.Abstractions.TestingHelpers:

Repository Stars
microsoft/PowerToys
Windows system utilities to maximize productivity
gitextensions/gitextensions
Git Extensions is a standalone UI tool for managing git repositories. It also integrates with Windows Explorer and Microsoft Visual Studio (2015/2017/2019).
JosefNemec/Playnite
Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games.
projectkudu/kudu
Kudu is the engine behind git/hg deployments, WebJobs, and various other features in Azure Web Sites. It can also run outside of Azure.
Lidarr/Lidarr
Looks and smells like Sonarr but made for music.
Version Downloads Last updated
19.2.4 13,898 3/13/2023
19.2.1 14,814 3/2/2023
19.1.18 36,055 2/14/2023
19.1.14 19,946 1/31/2023
19.1.13 20,670 1/24/2023
19.1.5 85,687 12/19/2022
19.1.1 11,993 12/13/2022
19.0.1 25,891 12/8/2022
18.0.1 19,567 11/28/2022
17.2.26 36,125 11/18/2022
17.2.3 316,609 9/16/2022
17.2.1 43,891 9/10/2022
17.1.1 78,163 8/15/2022
17.0.28 931 8/15/2022
17.0.24 173,263 7/19/2022
17.0.23 12,192 7/15/2022
17.0.21 35,377 7/4/2022
17.0.18 103,202 6/9/2022
17.0.15 72,201 5/20/2022
17.0.14 16,373 5/18/2022
17.0.13 8,981 5/17/2022
17.0.12 8,955 5/16/2022
17.0.11 1,958 5/15/2022
17.0.10 41,630 5/12/2022
17.0.9 736 5/11/2022
17.0.8 1,501 5/11/2022
17.0.7 373 5/11/2022
17.0.6 375 5/11/2022
17.0.5 358 5/11/2022
17.0.4 15,278 5/11/2022
17.0.3 61,412 4/26/2022
17.0.2 400 4/26/2022
17.0.1 3,740 4/25/2022
16.1.26 23,555 4/24/2022
16.1.25 130,285 3/23/2022
16.1.24 19,821 3/22/2022
16.1.23 16,944 3/14/2022
16.1.22 1,944 3/11/2022
16.1.21 404 3/11/2022
16.1.20 25,912 3/8/2022
16.1.19 366 3/8/2022
16.1.18 371 3/8/2022
16.1.17 422 3/8/2022
16.1.16 10,705 3/3/2022
16.1.15 78,213 2/19/2022
16.1.14 382 2/19/2022
16.1.13 574 2/19/2022
16.1.12 377 2/19/2022
16.1.11 7,039 2/17/2022
16.1.10 77,000 2/4/2022
16.1.9 4,711 2/2/2022
16.1.8 404 2/2/2022
16.1.7 4,327 1/31/2022
16.1.6 422 1/31/2022
16.1.5 634 1/31/2022
16.1.4 152,449 1/12/2022
16.1.2 1,109 1/12/2022
16.1.1 4,388 1/11/2022
16.0.8 13,619 1/9/2022
16.0.7 13,451 1/8/2022
16.0.6 282 1/8/2022
16.0.5 256 1/8/2022
16.0.4 253 1/8/2022
16.0.3 2,149 1/6/2022
16.0.2 1,202 1/6/2022
16.0.1 186,983 12/22/2021
15.0.1 1,317 12/22/2021
14.0.13 63,156 12/11/2021
14.0.12 258 12/11/2021
14.0.11 447 12/11/2021
14.0.10 410 12/11/2021
14.0.9 428 12/11/2021
14.0.8 523 12/11/2021
14.0.7 370 12/10/2021
14.0.6 276 12/10/2021
14.0.5 266 12/10/2021
14.0.4 380 12/10/2021
14.0.3 87,304 11/27/2021
14.0.2 2,178 11/26/2021
14.0.1 2,108 11/26/2021
13.2.47 478,627 8/25/2021
13.2.46 357 8/25/2021
13.2.45 353 8/25/2021
13.2.43 108,754 7/27/2021
13.2.42 18,012 7/23/2021
13.2.41 21,780 7/15/2021
13.2.40 1,447 7/14/2021
13.2.39 792 7/14/2021
13.2.38 81,367 6/15/2021
13.2.37 2,728 6/10/2021
13.2.36 394 6/10/2021
13.2.35 355 6/10/2021
13.2.34 376 6/10/2021
13.2.33 88,518 5/15/2021
13.2.32 462 5/15/2021
13.2.31 46,587 5/2/2021
13.2.30 494 5/2/2021
13.2.29 134,015 4/14/2021
13.2.28 60,368 3/25/2021
13.2.27 1,434 3/25/2021
13.2.25 166,591 3/9/2021
13.2.24 4,727 3/6/2021
13.2.23 67,053 2/24/2021
13.2.22 488 2/24/2021
13.2.20 2,793 2/23/2021
13.2.19 397 2/23/2021
13.2.18 605 2/23/2021
13.2.17 1,549 2/23/2021
13.2.16 497 2/22/2021
13.2.15 11,354 2/18/2021
13.2.14 452 2/18/2021
13.2.13 459 2/18/2021
13.2.12 401 2/18/2021
13.2.11 5,332 2/16/2021
13.2.10 97,544 2/10/2021
13.2.9 207,694 1/14/2021
13.2.8 66,898 12/22/2020
13.2.7 6,562 12/20/2020
13.2.6 7,257 12/16/2020
13.2.5 50,912 12/9/2020
13.2.4 17,919 12/5/2020
13.2.3 710 12/4/2020
13.2.2 58,643 11/26/2020
13.2.1 1,846 11/26/2020
13.1.2 556 11/25/2020
13.1.1 553 11/25/2020
13.0.1 29,722 11/21/2020
12.2.27 13,878 11/21/2020
12.2.26 1,370 11/20/2020
12.2.25 6,489 11/17/2020
12.2.24 6,358 11/15/2020
12.2.23 556 11/15/2020
12.2.22 612 11/14/2020
12.2.21 4,540 11/12/2020
12.2.20 493 11/12/2020
12.2.19 25,014 11/5/2020
12.2.7 56,638 10/15/2020
12.2.6 22,218 10/15/2020
12.2.5 4,734 10/12/2020
12.2.4 532 10/12/2020
12.2.3 48,644 10/12/2020
12.2.2 6,243 10/7/2020
12.2.1 75,976 9/28/2020
12.1.11 1,659 9/28/2020
12.1.10 7,433 9/24/2020
12.1.9 45,025 9/11/2020
12.1.2 520 9/11/2020
12.1.1 214,379 8/3/2020
12.0.13 4,463 8/2/2020
12.0.10 11,837 7/25/2020
12.0.9 13,821 7/21/2020
12.0.5 39,117 7/11/2020
12.0.4 31,141 7/2/2020
12.0.3 6,485 6/29/2020
12.0.2 58,240 6/23/2020
12.0.1 15,332 6/20/2020
11.0.18 12,254 6/20/2020
11.0.17 3,346 6/19/2020
11.0.16 665 6/18/2020
11.0.15 1,689 6/18/2020
11.0.14 828 6/17/2020
11.0.13 696 6/17/2020
11.0.12 609 6/17/2020
11.0.7 61,276 5/28/2020
11.0.6 92,006 5/8/2020
11.0.5 11,691 5/6/2020
11.0.4 12,751 5/1/2020
11.0.3 1,429 4/30/2020
11.0.2 62,765 4/26/2020
11.0.1 592 4/26/2020
10.0.10 9,221 4/20/2020
10.0.9 10,738 4/17/2020
10.0.8 33,502 4/7/2020
10.0.7 8,723 4/3/2020
10.0.6 11,250 4/1/2020
10.0.5 617 4/1/2020
10.0.4 614 4/1/2020
10.0.1 44,579 3/21/2020
9.0.6 4,663 3/19/2020
9.0.5 33,783 3/16/2020
9.0.4 135,764 2/18/2020
9.0.3 661 2/18/2020
9.0.2 8,738 2/11/2020
9.0.1 680 2/11/2020
8.1.1 962 2/11/2020
8.0.6 691 2/11/2020
8.0.5 30,359 1/29/2020
8.0.4 1,257 1/27/2020
8.0.3 10,995 1/19/2020
7.1.10 68,724 1/17/2020
7.1.8 675 1/17/2020
7.1.4 17,027 1/13/2020
7.1.3 37,361 1/6/2020
7.1.1 23,819 12/21/2019
7.0.16 5,304 12/19/2019
7.0.15 40,397 12/5/2019
7.0.7 128,984 10/21/2019
7.0.5 13,330 10/11/2019
7.0.4 230,085 9/29/2019
6.0.38 84,423 9/26/2019
6.0.36 2,053 9/24/2019
6.0.34 1,185 9/24/2019
6.0.32 30,220 9/9/2019
6.0.27 13,337 9/3/2019
6.0.25 764 9/2/2019
6.0.23 23,696 8/26/2019
6.0.21 46,597 8/12/2019
6.0.19 41,534 8/9/2019
6.0.17 7,634 8/5/2019
6.0.15 68,905 7/9/2019
6.0.14 22,669 6/29/2019
6.0.13 1,022 6/28/2019
6.0.11 16,071 6/21/2019
6.0.9 707 6/21/2019
6.0.7 13,928 6/16/2019
6.0.6 682 6/16/2019
6.0.5 2,461 6/13/2019
6.0.3 10,220 6/13/2019
6.0.1 84,426 6/7/2019
5.0.1 8,741 6/3/2019
4.2.17 2,167 5/30/2019
4.2.15 5,703 5/28/2019
4.2.13 41,676 5/15/2019
4.2.12 750 5/15/2019
4.2.10 20,173 5/10/2019
4.2.9 856 5/10/2019
4.2.8 23,622 4/28/2019
4.2.4 17,286 4/19/2019
4.1.6 80,352 4/9/2019
4.0.11 87,676 3/30/2019
3.1.1 38,573 3/10/2019
3.0.10 315,195 1/5/2019
3.0.2 56,809 12/7/2018
2.2.18-beta 627 12/3/2018
2.2.17-beta 614 12/2/2018
2.2.16-beta 580 12/1/2018
2.2.15-beta 631 12/1/2018
2.2.14-beta 593 12/1/2018
2.2.13-beta 665 12/1/2018
2.2.12-beta 629 12/1/2018
2.2.11-beta 600 12/1/2018
2.2.10-beta 598 11/28/2018
2.2.9-beta 710 11/16/2018
2.2.8-beta 669 11/9/2018
2.2.7-beta 645 11/5/2018
2.2.6-beta 664 10/30/2018
2.2.5-beta 630 10/30/2018
2.2.4-beta 643 10/30/2018
2.2.3-beta 636 10/29/2018
2.2.2-beta 634 10/25/2018
2.1.0.256 111,127 10/20/2018
2.1.0.247 27,815 10/15/2018
2.1.0.237 3,762 10/14/2018
2.1.0.236 49,652 10/10/2018
2.1.0.235 17,744 10/8/2018
2.1.0.234 935 10/8/2018
2.1.0.233 2,447 10/6/2018
2.1.0.232 1,912 10/4/2018
2.1.0.231 20,443 9/19/2018
2.1.0.230 44,308 9/8/2018
2.1.0.229 1,955 9/6/2018
2.1.0.228 9,449 8/27/2018
2.1.0.227 63,684 8/16/2018
2.1.0.226 10,231 8/14/2018
2.1.0.217 2,297 8/10/2018
2.1.0.216 4,850 8/9/2018
2.1.0.215 4,673 8/6/2018
2.1.0.214 1,302 8/5/2018
2.1.0.213 1,073 8/4/2018
2.1.0.211 26,388 7/25/2018
2.1.0.210 3,741 7/21/2018
2.1.0.209 5,180 7/20/2018
2.1.0.208 3,355 7/17/2018
2.1.0.207 1,127 7/17/2018
2.1.0.206 11,939 7/15/2018
2.1.0.205 1,360 7/12/2018
2.1.0.204 1,212 7/11/2018
2.1.0.203 1,158 7/11/2018
2.1.0.202 1,327 7/10/2018
2.1.0.201 1,672 7/10/2018
2.1.0.200 1,499 7/9/2018
2.1.0.199 1,145 7/9/2018
2.1.0.198 1,929 7/8/2018
2.1.0.197 1,134 7/8/2018
2.1.0.196 1,144 7/8/2018
2.1.0.195 1,133 7/7/2018
2.1.0.194 1,109 7/7/2018
2.1.0.193 1,140 7/7/2018
2.1.0.192 1,116 7/7/2018
2.1.0.191 1,035 7/7/2018
2.1.0.190 1,117 7/7/2018
2.1.0.189 1,140 7/7/2018
2.1.0.188 1,028 7/6/2018
2.1.0.187 7,176 7/6/2018
2.1.0.186 11,799 7/6/2018
2.1.0.185 1,126 7/5/2018
2.1.0.184 8,413 7/4/2018
2.1.0.183 1,169 7/4/2018
2.1.0.182 1,106 7/4/2018
2.1.0.181 1,122 7/4/2018
2.1.0.180 1,087 7/4/2018
2.1.0.179 1,117 7/4/2018
2.1.0.178 222,085 1/11/2018
2.1.0.177 5,232 1/2/2018
2.1.0.176 10,970 12/8/2017
2.1.0.175 24,918 11/16/2017
2.1.0.174 23,556 11/7/2017
2.1.0.173 1,063 11/7/2017
2.1.0.172 1,037 11/7/2017
2.1.0.171 1,589 11/4/2017
2.1.0.170 1,059 11/4/2017
2.1.0.169 1,056 11/4/2017
2.1.0.168 1,047 11/4/2017
2.1.0.166 1,064 11/4/2017
2.1.0.164 1,029 11/4/2017
2.1.0.163 1,015 11/4/2017
2.1.0.159 36,571 10/22/2017
2.0.0.143 488,116 4/7/2017
2.0.0.142 1,146 4/7/2017
2.0.0.141 11,097 3/2/2017
2.0.0.140 14,198 1/17/2017
2.0.0.139 22,358 1/6/2017
2.0.0.138 26,225 11/17/2016
2.0.0.137 5,083 10/14/2016
2.0.0.136 2,821 10/1/2016
2.0.0.124 172,797 2/8/2016
2.0.0.123 8,545 12/29/2015
2.0.0.122 1,164 12/28/2015
2.0.0.121 1,144 12/28/2015
2.0.0.120 6,684 12/6/2015
2.0.0.119 1,169 12/6/2015
2.0.0.118 4,061 11/4/2015
2.0.0.117 2,144 10/19/2015
2.0.0.116 9,519 7/20/2015
2.0.0.115 8,778 5/18/2015
2.0.0.114 1,306 5/18/2015
2.0.0.113 7,313 3/18/2015
2.0.0.112 1,552 3/11/2015
2.0.0.111 1,158 3/11/2015
2.0.0.110 1,196 3/11/2015
2.0.0.109 1,198 3/11/2015
2.0.0.108 1,807 3/4/2015
2.0.0.107 1,939 2/23/2015
2.0.0.106 1,976 2/20/2015
2.0.0.105 1,501 2/19/2015
2.0.0.104 1,643 2/14/2015
2.0.0.103 1,675 2/7/2015
2.0.0.102 1,211 2/7/2015
2.0.0.101 1,615 1/25/2015
2.0.0.100 1,231 1/25/2015
2.0.0.99 1,210 1/25/2015
2.0.0.98 1,263 1/25/2015
1.4.0.93 10,360 1/25/2015
1.4.0.92 17,536 9/29/2014
1.4.0.89 1,180 9/29/2014
1.4.0.88 1,197 9/29/2014
1.4.0.87 1,567 9/21/2014
1.4.0.86 6,780 5/7/2014
1.4.0.85 3,528 4/23/2014
1.4.0.84 1,520 4/7/2014
1.4.0.83 1,768 3/24/2014
1.4.0.82 1,331 3/24/2014
1.4.0.81 6,340 3/17/2014
1.4.0.80 1,273 3/17/2014
1.4.0.79 6,188 3/10/2014
1.4.0.78 1,359 3/2/2014
1.4.0.77 1,255 3/2/2014
1.4.0.76 1,486 2/21/2014
1.4.0.75 1,322 2/20/2014
1.4.0.74 26,090 1/12/2014
1.4.0.73 1,380 12/22/2013
1.4.0.72 1,681 12/1/2013
1.4.0.71 1,262 12/1/2013
1.4.0.70 1,487 11/21/2013
1.4.0.69 1,367 11/20/2013
1.4.0.68 3,006 10/15/2013
1.4.0.67 1,267 10/15/2013
1.4.0.66 2,736 7/31/2013
1.4.0.65 1,916 7/9/2013
1.4.0.64 2,177 4/26/2013
1.4.0.63 1,383 4/26/2013
1.4.0.62 1,334 4/26/2013
1.4.0.61 1,361 4/25/2013
1.4.0.60 1,307 4/25/2013
1.4.0.59 1,304 4/25/2013
1.4.0.58 1,305 4/25/2013
1.4.0.57 1,336 4/25/2013
1.4.0.56 1,353 4/25/2013
1.4.0.55 1,363 4/25/2013
1.4.0.54 1,413 4/25/2013
1.4.0.53 1,325 4/25/2013
1.4.0.52 1,407 4/25/2013
1.4.0.51 1,355 4/22/2013
1.4.0.50 1,331 4/22/2013
1.4.0.49 1,538 4/11/2013
1.4.0.48 1,435 3/24/2013
1.4.0.47 1,384 3/24/2013
1.4.0.46 1,308 3/24/2013
1.4.0.45 1,335 3/24/2013
1.4.0.44 1,766 3/16/2013
1.4.0.43 1,323 3/16/2013
1.4.0.42 1,391 3/16/2013
1.4.0.41 1,395 3/6/2013
1.4.0.40 1,915 12/24/2012
1.4.0.39 1,379 12/23/2012
1.4.0.38 1,337 12/23/2012
1.4.0.37 2,261 11/29/2012
1.4.0.36 1,441 11/29/2012
1.4.0.35 1,756 9/25/2012
1.4.0.32 2,608 7/14/2012
1.4.0.31 1,383 7/14/2012
1.4.0.30 1,408 7/12/2012
1.4.0.29 1,365 7/12/2012
1.4.0.28 1,338 7/12/2012
1.4.0.27 1,356 7/12/2012
1.4.0.26 1,443 7/2/2012
1.4.0.25 1,400 7/2/2012
1.4.0.24 1,906 5/15/2012
1.4.0.23 1,772 4/25/2012
1.4.0.22 1,405 4/25/2012
1.4.0.21 1,366 4/25/2012
1.4.0.20 1,507 4/18/2012
1.4.0.19 1,404 4/18/2012
1.4.0.18 1,407 4/18/2012
1.4.0.17 1,416 4/18/2012
1.4.0.14 1,433 4/4/2012
1.4.0.13 1,701 3/27/2012
1.4.0.12 2,008 9/16/2011
1.4.0.11 1,571 9/16/2011
1.3.0 1,786 5/27/2011
1.2.0 2,908 5/26/2011