Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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,
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }