Last active
November 18, 2016 14:57
-
-
Save DamianReeves/512a7be6b93dd8057aa92837760e599d to your computer and use it in GitHub Desktop.
Cake Alias Tests
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Cake.Core; | |
using Cake.Core.Diagnostics; | |
using Cake.Core.IO; | |
using Cake.Core.Tooling; | |
using NSubstitute; | |
namespace Mohawk.Cake.Fixtures | |
{ | |
public sealed class CakeContextFixture | |
{ | |
public IFileSystem FileSystem { get; set; } | |
public ICakeEnvironment Environment { get; set; } | |
public IGlobber Globber { get; set; } | |
public ICakeLog Log { get; set; } | |
public ICakeArguments Arguments { get; set; } | |
public IProcessRunner ProcessRunner { get; set; } | |
public IRegistry Registry { get; set; } | |
public IToolLocator Tools { get; set; } | |
public CakeContextFixture() | |
{ | |
FileSystem = Substitute.For<IFileSystem>(); | |
Environment = Substitute.For<ICakeEnvironment>(); | |
Globber = Substitute.For<IGlobber>(); | |
Log = Substitute.For<ICakeLog>(); | |
Arguments = Substitute.For<ICakeArguments>(); | |
ProcessRunner = Substitute.For<IProcessRunner>(); | |
Registry = Substitute.For<IRegistry>(); | |
Tools = Substitute.For<IToolLocator>(); | |
} | |
public CakeContext CreateContext() | |
{ | |
return new CakeContext(FileSystem, Environment, Globber, | |
Log, Arguments, ProcessRunner, Registry, Tools); | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Cake.Core; | |
using Cake.Core.IO; | |
using Cake.Testing; | |
namespace Mohawk.Cake.Fixtures | |
{ | |
internal class FileSystemFixture | |
{ | |
public ICakeEnvironment Environment { get; set; } | |
public IFileSystem FileSystem { get; set; } | |
public FileSystemFixture(bool windows = true) | |
{ | |
if (windows) | |
{ | |
Environment = FakeEnvironment.CreateWindowsEnvironment(); | |
} | |
else | |
{ | |
Environment = FakeEnvironment.CreateUnixEnvironment(); | |
} | |
FileSystem = CreateFileSystem(Environment); | |
} | |
private FakeFileSystem CreateFileSystem(ICakeEnvironment environment) | |
{ | |
var fileSystem = new FakeFileSystem(environment); | |
ConfigureFileSystem(fileSystem, environment); | |
return fileSystem; | |
} | |
protected virtual void ConfigureFileSystem(FakeFileSystem fileSystem, ICakeEnvironment environment) | |
{ | |
if (environment.Platform.IsUnix()) | |
{ | |
PrepareUnixSystem(fileSystem); | |
} | |
else | |
{ | |
PrepareWindowsSystem(fileSystem); | |
} | |
} | |
private void PrepareWindowsSystem(FakeFileSystem fileSystem) | |
{ | |
fileSystem.CreateDirectory("C:/DEV"); | |
fileSystem.CreateDirectory("C:/DEV/repos"); | |
fileSystem.CreateDirectory("C:/DEV/repos/FakeProjects"); | |
fileSystem.CreateDirectory("C:/DEV/repos/FakeProjects/Foo"); | |
fileSystem.CreateDirectory("C:/DEV/repos/FakeProjects/Foo/src"); | |
fileSystem.CreateDirectory("C:/DEV/repos/FakeProjects/Foo/src/Foo"); | |
fileSystem.CreateFile("C:/DEV/repos/FakeProjects/Foo/src/Foo/Foo.csproj"); | |
fileSystem.CreateFile("C:/DEV/repos/FakeProjects/Foo/src/Foo/Foo.xproj"); | |
fileSystem.CreateFile("C:/DEV/repos/FakeProjects/Foo/src/Foo/project.json"); | |
fileSystem.CreateFile("C:/DEV/repos/FakeProjects/Foo/src/Foo/Foo.nuspec"); | |
fileSystem.CreateDirectory("C:/DEV/repos/FakeProjects/Foo/src/Bar"); | |
fileSystem.CreateFile("C:/DEV/repos/FakeProjects/Foo/src/Bar/Bar.project.json"); | |
fileSystem.CreateDirectory("C:/DEV/repos/FakeProjects/Foo/src/Baz"); | |
fileSystem.CreateFile("C:/DEV/repos/FakeProjects/Foo/src/Baz/project.json"); | |
} | |
private void PrepareUnixSystem(FakeFileSystem fileSystem) | |
{ | |
fileSystem.CreateDirectory("/DEV"); | |
fileSystem.CreateDirectory("/DEV/repos"); | |
fileSystem.CreateDirectory("/DEV/repos/FakeProjects"); | |
fileSystem.CreateDirectory("/DEV/repos/FakeProjects/Foo"); | |
fileSystem.CreateDirectory("/DEV/repos/FakeProjects/Foo/src"); | |
fileSystem.CreateDirectory("/DEV/repos/FakeProjects/Foo/src/Foo"); | |
fileSystem.CreateFile("/DEV/repos/FakeProjects/Foo/src/Foo/Foo.csproj"); | |
fileSystem.CreateFile("/DEV/repos/FakeProjects/Foo/src/Foo/Foo.xproj"); | |
fileSystem.CreateFile("/DEV/repos/FakeProjects/Foo/src/Foo/project.json"); | |
fileSystem.CreateFile("/DEV/repos/FakeProjects/Foo/src/Foo/Foo.nuspec"); | |
fileSystem.CreateDirectory("/DEV/repos/FakeProjects/Foo/src/Bar"); | |
fileSystem.CreateFile("/DEV/repos/FakeProjects/Foo/src/Bar/Bar.project.json"); | |
fileSystem.CreateDirectory("/DEV/repos/FakeProjects/Foo/src/Baz"); | |
fileSystem.CreateFile("/DEV/repos/FakeProjects/Foo/src/Baz/project.json"); | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Threading.Tasks; | |
using Cake.Core; | |
using Cake.Core.IO; | |
using FluentAssertions; | |
using Mohawk.Cake.Fixtures; | |
using NSubstitute; | |
using Xunit; | |
namespace Mohawk.Cake | |
{ | |
public class ProjectInfoAliasesSpecs | |
{ | |
public class GetProjectsByPattern | |
{ | |
[Fact] | |
public void GlobberTest() | |
{ | |
var contextFixture = new CakeContextFixture(); | |
var fileSystemFixture = new FileSystemFixture(); | |
contextFixture.FileSystem = fileSystemFixture.FileSystem; | |
contextFixture.Globber = new Globber(fileSystemFixture.FileSystem, fileSystemFixture.Environment); | |
var context = contextFixture.CreateContext(); | |
context.Environment.WorkingDirectory = new DirectoryPath("C:/DEV/repos/FakeProjects/Foo"); | |
var results = contextFixture.Globber.Match("./**/project.json"); | |
results.Should().NotBeEmpty(); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment