public void ProcessLine_RemovesTempDirFromWebConfig() { var inputLine = " <compilation debug=\"true\" targetFramework=\"4.5\" optimizeCompilations=\"true\" tempDirectory=\"D:\\temp\\a4vy1sad.evu\\temp\\\" />"; var outputLine = ZipGenerator.ProcessLine(inputLine, "NewProj1"); outputLine.Should().Be(" <compilation debug=\"true\" targetFramework=\"4.5\" optimizeCompilations=\"true\" />"); }
public void ProcessLine_Unaffected() { var inputLine = "DoesNotNeedChanging"; var outputLine = ZipGenerator.ProcessLine(inputLine, "NewProj1"); outputLine.Should().Be("DoesNotNeedChanging"); }
public void GuidsUsedInProjectAreKnown() { var assembly = typeof(ZipGenerator).Assembly; var allGuidsInZip = new List <string>(); var ignoredGenerateCs = false; using (var zipInputStream = assembly.GetManifestResourceStream("Lucid.Modules.ProjectCreation.Project.zip")) using (var zipFile = new ZipArchive(zipInputStream)) foreach (var zipEntry in zipFile.Entries) { var fileName = zipEntry.FullName; if (fileName.EndsWith("ProjectCreation/Module/ZipGenerator.cs")) { ignoredGenerateCs = true; continue; } if (!ZipGenerator.ShouldProcessFile(fileName)) { continue; } using (var stream = zipEntry.Open()) { var lines = ZipGenerator.ReadLines(stream); foreach (var line in lines) { foreach (Match match in ZipGenerator.GuidSearch.Matches(line)) { allGuidsInZip.Add(match.Value.ToUpper()); } } } } ignoredGenerateCs.Should().BeTrue("should have found Generate.cs"); foreach (var knownGuid in Guids.ToIgnore) { allGuidsInZip.Should().Contain(knownGuid, $"GUID {knownGuid} should remain in project"); } }
public async Task FormatIsMaintained() { var rootPath = FindRootPath(); var cmd = new GenerateProjectCommand { Name = "Lucid" }; var bytes = await cmd.ExecuteAsync(); var zipCreated = File.GetLastWriteTimeUtc(Path.Combine(rootPath, "Modules/ProjectCreation/Module/Project.zip")); var zippedFiles = new List <string>(); using (var ms = new MemoryStream(bytes)) using (var zipFile = new ZipArchive(ms)) { foreach (var zipEntry in zipFile.Entries) { var name = zipEntry.FullName; if (ZipGenerator.ShouldProcessFile(name)) { var originalFile = Path.Combine(rootPath, name); if (!File.Exists(originalFile)) { TestContext.Progress.WriteLine($"Skip checks on file not-found: {originalFile}"); continue; } var originalLastWrite = File.GetLastWriteTimeUtc(originalFile); if (originalLastWrite > zipCreated) { TestContext.Progress.WriteLine($"Skip checks on file {originalFile} as it is more recent {originalLastWrite} than zip {zipCreated}."); continue; } using (var stream = File.OpenRead(originalFile)) using (var copy = zipEntry.Open()) { var originalBom = ZipGenerator.ReadBomEncoding(stream); var copiedBom = ZipGenerator.ReadBomEncoding(copy); copiedBom.Should().Be(originalBom, $"BOM of file {name} is not the same in the generated project"); } using (var copy = zipEntry.Open()) using (var streamReader = new StreamReader(copy)) { var copyContent = streamReader.ReadToEnd(); var original = File.ReadAllText(originalFile); var copyLfCount = copyContent.Count(c => c == '\n'); var originalLfCount = original.Count(c => c == '\n'); copyLfCount.Should().Be(originalLfCount, $"{originalFile} has {originalLfCount} line-feeds, so copy should have same amount"); var copyCrCount = copyContent.Count(c => c == '\r'); var originalCrCount = original.Count(c => c == '\r'); copyCrCount.Should().Be(originalCrCount, $"{originalFile} has {originalCrCount} carriage returns, so copy should have same amount"); } } } } }