Пример #1
0
        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\"  />");
        }
Пример #2
0
        public void ProcessLine_Unaffected()
        {
            var inputLine = "DoesNotNeedChanging";

            var outputLine = ZipGenerator.ProcessLine(inputLine, "NewProj1");

            outputLine.Should().Be("DoesNotNeedChanging");
        }
Пример #3
0
        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");
            }
        }
Пример #4
0
        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");
                                }
                        }
                    }
                }
        }