public void SourceLink(DebugInformationFormat format) { string source = @" using System; class C { public static void Main() { Console.WriteLine(); } } "; var sourceLinkBlob = Encoding.UTF8.GetBytes(@" { ""documents"": { ""f:/build/*"" : ""https://raw.githubusercontent.com/my-org/my-project/1111111111111111111111111111111111111111/*"" } } "); var c = CreateCompilation(Parse(source, "f:/build/goo.cs"), options: TestOptions.DebugDll); var pdbStream = new MemoryStream(); c.EmitToArray(EmitOptions.Default.WithDebugInformationFormat(format), pdbStream: pdbStream, sourceLinkStream: new MemoryStream(sourceLinkBlob)); var actualData = PdbValidation.GetSourceLinkData(pdbStream); AssertEx.Equal(sourceLinkBlob, actualData); }
private void TestEmit(DebugInformationFormat format) { var script = CSharpScript.Create( "1 + 2", options: ScriptOptions.Default.WithEmitDebugInformation(true) ); var compilation = script.GetCompilation(); var emitOptions = ScriptBuilder .GetEmitOptions(emitDebugInformation: true) .WithDebugInformationFormat(format); var peStream = new MemoryStream(); var pdbStream = new MemoryStream(); var emitResult = ScriptBuilder.Emit( peStream, pdbStream, compilation, emitOptions, cancellationToken: default ); peStream.Position = 0; pdbStream.Position = 0; PdbValidation.ValidateDebugDirectory( peStream, portablePdbStreamOpt: (format == DebugInformationFormat.PortablePdb) ? pdbStream : null, pdbPath: compilation.AssemblyName + ".pdb", hashAlgorithm: default,
public void SourceLink_Empty(DebugInformationFormat format) { string source = @" using System; class C { public static void Main() { Console.WriteLine(); } } "; var sourceLinkBlob = new byte[0]; var c = CreateCompilation(Parse(source, "f:/build/goo.cs"), options: TestOptions.DebugDll); var pdbStream = new MemoryStream(); c.EmitToArray(EmitOptions.Default.WithDebugInformationFormat(format), pdbStream: pdbStream, sourceLinkStream: new MemoryStream(sourceLinkBlob)); pdbStream.Position = 0; var bs = Roslyn.Utilities.StreamExtensions.ReadAllBytes(pdbStream); var actualData = PdbValidation.GetSourceLinkData(pdbStream); AssertEx.Equal(sourceLinkBlob, actualData); }
public static void TestSequencePoints( string markup, CSharpCompilationOptions compilationOptions, CSharpParseOptions parseOptions = null, string methodName = "" ) { int? position; TextSpan?expectedSpan; string source; MarkupTestFile.GetPositionAndSpan(markup, out source, out position, out expectedSpan); var compilation = CreateCompilationWithMscorlib40AndSystemCore( source, options: compilationOptions, parseOptions: parseOptions ); compilation .GetDiagnostics() .Where(d => d.Severity == DiagnosticSeverity.Error) .Verify(); var pdb = PdbValidation.GetPdbXml(compilation, qualifiedMethodName: methodName); bool hasBreakpoint = CheckIfSpanWithinSequencePoints( expectedSpan.GetValueOrDefault(), source, pdb ); Assert.True(hasBreakpoint); }