public override async Task<IProject> Generate(ISolution solution, string name)
{
var shell = IoC.Get<IShell>();
var project = await base.Generate(solution, name);
var catchProjectDir = Path.Combine(solution.CurrentDirectory, "AvalonStudio.Testing.Catch");
var catchProjectFile = Path.Combine(catchProjectDir, "CatchTestFramework.acproj");
if (!Directory.Exists(catchProjectDir))
{
await
Git.ClonePublicHttpSubmodule(this, "https://github.com/VitalElement/AvalonStudio.Testing.Catch.git",
catchProjectDir);
}
// Add project
var catchProject = Solution.LoadProjectFile(solution, catchProjectFile);
catchProject.Hidden = true;
solution.AddProject(catchProject);
// Reference catch.
project.AddReference(catchProject);
await SourceFile.Create(project, "UnitTest1.cpp", new UnitTestTemplate().TransformText());
project.ToolChain = shell.ToolChains.FirstOrDefault(tc => tc is LocalGCCToolchain);
project.Debugger = shell.Debuggers.FirstOrDefault(d => d is LocalDebugAdaptor);
project.TestFramework = shell.TestFrameworks.FirstOrDefault(d => d is CatchTestFramework);
project.ToolChain.ProvisionSettings(project);
var settings = LocalGCCToolchain.GetSettings(project);
settings.CompileSettings.Exceptions = true;
settings.CompileSettings.Rtti = true;
settings.CompileSettings.Optimization = OptimizationLevel.Debug;
settings.CompileSettings.CustomFlags += " -Wno-unknown-pragmas ";
project.Save();
solution.Save();
return project;
}
}