private bool FilesAreEquivalent(AnalyzerLanguage language, out List <string> problematicRules) { problematicRules = new List <string>(); var expectedFiles = ExpectedDirectory .GetDirectories(language.GetDirectoryName()).First() .GetFiles("S*.json"); var actualFiles = AnalysisOutputDirectory .GetDirectories(language.GetDirectoryName()).First() .GetFiles("S*.json"); var problematicFileNames = expectedFiles.Select(file => file.Name) .ToImmutableHashSet() .SymmetricExcept(actualFiles.Select(file => file.Name)); if (problematicFileNames.Any()) { problematicRules.AddRange(problematicFileNames); return(false); } foreach (var expectedFile in expectedFiles) { var bytesExpected = File.ReadAllBytes(expectedFile.FullName); var bytesActual = File.ReadAllBytes(actualFiles.Single(file => file.Name == expectedFile.Name).FullName); if (!StructuralComparisons.StructuralEqualityComparer.Equals(bytesExpected, bytesActual)) { problematicRules.Add(Path.GetFileNameWithoutExtension(expectedFile.Name)); } } return(!problematicRules.Any()); }
private void CreateMissingActualDirectory(AnalyzerLanguage language) { if (!AnalysisOutputDirectory.GetDirectories(language.GetDirectoryName()).Any()) { Directory.CreateDirectory(Path.Combine( AnalysisOutputDirectory.FullName, language.GetDirectoryName())); } }