public void TestDirectoryGetFiles() { var file1 = Mocks.Of <IPackageEntry>() .Where(info => info.FullPath == @"a%60b\c%60d.txt") .First(); var file2 = Mocks.Of <IPackageEntry>() .Where(info => info.FullPath == @"e%60f\g%60h.txt") .First(); var directory = Mocks.Of <IPackageFile>() .Where(info => info.Entries == new[] { file1, file2 }) .First(); var wrapper = new TransformingWrapperPackageFile(directory, new UrlTransformation()); var files = wrapper.Entries.ToArray(); Assert.Equal(2, files.Length); Assert.Equal(@"a`b\c`d.txt", files[0].FullPath); Assert.Equal(@"e`f\g`h.txt", files[1].FullPath); }
private void CreateJob(PackageProject metadata, byte[] data) { string directory = Path.Combine(metadata.Name, metadata.Version.Name); Directory.CreateDirectory(Path.Combine(configuration.DataPath, directory)); string file = Path.Combine(configuration.DataPath, directory, metadata.Name + ".symbols.zip"); File.WriteAllBytes(file, data); using (var zipMemoryStream = new MemoryStream(data)) using (var zipfile = ZipFile.Read(zipMemoryStream)) { var zipInfo = new TransformingWrapperPackageFile(new ZipPackageFile(zipfile), new UrlTransformation()); var addInfo = addInfoBuilder.Build(zipInfo); string binariesDirectory = Path.Combine(directory, "Binaries"); Directory.CreateDirectory(Path.Combine(configuration.DataPath, binariesDirectory)); string sourcesDirectory = Path.Combine(directory, "Sources"); Directory.CreateDirectory(Path.Combine(configuration.DataPath, sourcesDirectory)); foreach (var binaryInfo in addInfo.Binaries) { if (binaryInfo.SymbolInfo == null) { continue; } string binaryDirectory = Path.Combine(binariesDirectory, binaryInfo.Name, binaryInfo.SymbolHash); Directory.CreateDirectory(Path.Combine(configuration.DataPath, binaryDirectory)); using (var binaryInfoStream = binaryInfo.File.Stream) using (var binaryStream = File.OpenWrite(Path.Combine(configuration.DataPath, binaryDirectory, binaryInfo.Name + "." + binaryInfo.Type))) binaryInfoStream.CopyTo(binaryStream); using (var symbolInfoStream = binaryInfo.SymbolInfo.File.Stream) using (var symbolStream = File.OpenWrite(Path.Combine(configuration.DataPath, binaryDirectory, binaryInfo.Name + "." + binaryInfo.SymbolInfo.Type))) symbolInfoStream.CopyTo(symbolStream); string indexDirectory = Path.Combine(configuration.IndexPath, binaryInfo.Name); Directory.CreateDirectory(indexDirectory); File.AppendAllText(Path.Combine(indexDirectory, binaryInfo.SymbolHash + ".txt"), binaryDirectory + Environment.NewLine); var sourceIndex = new List <string>(); foreach (var sourceInfo in binaryInfo.SymbolInfo.SourceInfos.Where(info => info.ActualPath != null)) { string sourcePath = Path.Combine(sourcesDirectory, sourceInfo.KeyPath); Directory.CreateDirectory(Path.Combine(configuration.DataPath, Path.GetDirectoryName(sourcePath))); sourceIndex.Add(sourceInfo.OriginalPath + "|" + sourceInfo.KeyPath); using (var sourceInfoStream = sourceInfo.ActualPath.Stream) using (var convertedStream = SourceConverter.Convert(sourceInfoStream)) using (var sourceStream = File.OpenWrite(Path.Combine(configuration.DataPath, sourcePath))) convertedStream.CopyTo(sourceStream); File.WriteAllLines(Path.Combine(configuration.DataPath, binaryDirectory, binaryInfo.Name + ".txt"), sourceIndex); } } } File.Delete(file); }