Ejemplo n.º 1
0
        public void Equals_OtherIsSame_ReturnsTrue()
        {
            // Arrange
            var log = SignatureLog.Error(NuGetLogCode.NU3000, "unit_test_message");

            // Act
            var equals = log.Equals(log);

            // Assert
            equals.Should().BeTrue();
        }
Ejemplo n.º 2
0
        public void Equals_OtherIsNull_ReturnsFalse()
        {
            // Arrange
            var message = "unit_test_message";
            var code    = NuGetLogCode.NU3000;
            var log     = SignatureLog.Error(code, message);

            // Act
            var equals = log.Equals(null);

            // Assert
            equals.Should().BeFalse();
        }
Ejemplo n.º 3
0
        private static SignatureLog CreateSignatureLog()
        {
            SignatureLog signatureLog = SignatureLog.Error(NuGetLogCode.NU3031, Message);

            signatureLog.Code         = NuGetLogCode.NU3017;
            signatureLog.Level        = LogLevel.Verbose;
            signatureLog.LibraryId    = "b";
            signatureLog.ProjectPath  = "c";
            signatureLog.Time         = DateTimeOffset.UtcNow;
            signatureLog.WarningLevel = WarningLevel.Important;

            return(signatureLog);
        }
Ejemplo n.º 4
0
        public void Error_InitializesProperties()
        {
            // Arrange
            var message = "unit_test_message";
            var code    = NuGetLogCode.NU3000;

            // Act
            var log = SignatureLog.Error(code, message);

            // Assert
            log.Message.Should().Be(message);
            log.Code.Should().Be(code);
            log.Level.Should().Be(LogLevel.Error);
        }
Ejemplo n.º 5
0
        public void Equals_OtherIsDifferent_ReturnsFalse(SignatureLog other)
        {
            // Arrange
            var log = SignatureLog.Error(NuGetLogCode.NU3000, "unit_test_message");

            log.ProjectPath = Guid.NewGuid().ToString();
            log.LibraryId   = Guid.NewGuid().ToString();

            // Act
            var equals = log.Equals(other);

            // Assert
            equals.Should().BeFalse();
        }
Ejemplo n.º 6
0
        public void Equals_OtherIsEquivalent_ReturnsFalse()
        {
            // Arrange
            var log = SignatureLog.Error(NuGetLogCode.NU3000, "unit_test_message");

            log.ProjectPath = "unit_test_project_path";
            log.LibraryId   = "unit_test_library_id";

            var other = SignatureLog.Error(NuGetLogCode.NU3000, "unit_test_message");

            other.ProjectPath = "unit_test_project_path";
            other.LibraryId   = "unit_test_library_id";

            // Act
            var equals = log.Equals(log);

            // Assert
            equals.Should().BeTrue();
        }
Ejemplo n.º 7
0
        public ILogMessage?Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
        {
            if (reader.TryReadNil())
            {
                return(null);
            }

            // stack overflow mitigation - see https://github.com/neuecc/MessagePack-CSharp/security/advisories/GHSA-7q36-4xx7-xcxf
            options.Security.DepthStep(ref reader);

            try
            {
                NuGetLogCode?  code              = null;
                int?           endColumnNumber   = null;
                int?           endLineNumber     = null;
                string?        filePath          = null;
                string?        libraryId         = null;
                LogLevel?      logLevel          = null;
                string?        message           = null;
                string?        projectPath       = null;
                bool?          shouldDisplay     = null;
                int?           startColumnNumber = null;
                int?           startLineNumber   = null;
                List <string>? targetGraphs      = null;
                DateTimeOffset?time              = null;
                string?        typeName          = null;
                WarningLevel?  warningLevel      = null;

                int propertyCount = reader.ReadMapHeader();

                for (var propertyIndex = 0; propertyIndex < propertyCount; ++propertyIndex)
                {
                    switch (reader.ReadString())
                    {
                    case CodePropertyName:
                        code = options.Resolver.GetFormatter <NuGetLogCode>().Deserialize(ref reader, options);
                        break;

                    case EndColumnNumberPropertyName:
                        endColumnNumber = reader.ReadInt32();
                        break;

                    case EndLineNumberPropertyName:
                        endLineNumber = reader.ReadInt32();
                        break;

                    case FilePathPropertyName:
                        filePath = reader.ReadString();
                        break;

                    case LevelPropertyName:
                        logLevel = options.Resolver.GetFormatter <LogLevel>().Deserialize(ref reader, options);
                        break;

                    case LibraryIdPropertyName:
                        libraryId = reader.ReadString();
                        break;

                    case MessagePropertyName:
                        message = reader.ReadString();
                        break;

                    case ProjectPathPropertyName:
                        projectPath = reader.ReadString();
                        break;

                    case ShouldDisplayPropertyName:
                        shouldDisplay = reader.ReadBoolean();
                        break;

                    case StartColumnNumberPropertyName:
                        startColumnNumber = reader.ReadInt32();
                        break;

                    case StartLineNumberPropertyName:
                        startLineNumber = reader.ReadInt32();
                        break;

                    case TargetGraphsPropertyName:
                        if (!reader.TryReadNil())
                        {
                            targetGraphs = new List <string>();

                            int targetGraphsCount = reader.ReadArrayHeader();

                            for (var i = 0; i < targetGraphsCount; ++i)
                            {
                                string targetGraph = reader.ReadString();

                                targetGraphs.Add(targetGraph);
                            }
                        }
                        break;

                    case TimePropertyName:
                        time = options.Resolver.GetFormatter <DateTimeOffset>().Deserialize(ref reader, options);
                        break;

                    case TypeNamePropertyName:
                        typeName = reader.ReadString();
                        break;

                    case WarningLevelPropertyName:
                        warningLevel = options.Resolver.GetFormatter <WarningLevel>().Deserialize(ref reader, options);
                        break;

                    default:
                        reader.Skip();
                        break;
                    }
                }

                Assumes.NotNullOrEmpty(typeName);
                Assumes.True(code.HasValue);
                Assumes.True(logLevel.HasValue);
                Assumes.NotNull(message);
                Assumes.True(time.HasValue);
                Assumes.True(warningLevel.HasValue);

                ILogMessage?logMessage = null;

                if (typeName == LogMessageTypeName)
                {
                    logMessage = new LogMessage(logLevel.Value, message)
                    {
                        Code         = code.Value,
                        ProjectPath  = projectPath,
                        Time         = time.Value,
                        WarningLevel = warningLevel.Value
                    };
                }
                else if (typeName == PackagingLogMessageTypeName)
                {
                    Assumes.True(endColumnNumber.HasValue);
                    Assumes.True(endLineNumber.HasValue);
                    Assumes.True(startColumnNumber.HasValue);
                    Assumes.True(startLineNumber.HasValue);

                    PackagingLogMessage packagingLogMessage = PackagingLogMessage.CreateError(message, code.Value);

                    packagingLogMessage.Code              = code.Value;
                    packagingLogMessage.EndColumnNumber   = endColumnNumber.Value;
                    packagingLogMessage.EndLineNumber     = endLineNumber.Value;
                    packagingLogMessage.FilePath          = filePath;
                    packagingLogMessage.Level             = logLevel.Value;
                    packagingLogMessage.ProjectPath       = projectPath;
                    packagingLogMessage.StartColumnNumber = startColumnNumber.Value;
                    packagingLogMessage.StartLineNumber   = startLineNumber.Value;
                    packagingLogMessage.Time              = time.Value;
                    packagingLogMessage.WarningLevel      = warningLevel.Value;

                    logMessage = packagingLogMessage;
                }
                else if (typeName == RestoreLogMessageTypeName)
                {
                    Assumes.True(endColumnNumber.HasValue);
                    Assumes.True(endLineNumber.HasValue);
                    Assumes.True(shouldDisplay.HasValue);
                    Assumes.True(startColumnNumber.HasValue);
                    Assumes.True(startLineNumber.HasValue);

                    logMessage = new RestoreLogMessage(logLevel.Value, message)
                    {
                        Code              = code.Value,
                        EndColumnNumber   = endColumnNumber.Value,
                        EndLineNumber     = endLineNumber.Value,
                        FilePath          = filePath,
                        Level             = logLevel.Value,
                        LibraryId         = libraryId,
                        Message           = message,
                        ProjectPath       = projectPath,
                        ShouldDisplay     = shouldDisplay.Value,
                        StartColumnNumber = startColumnNumber.Value,
                        StartLineNumber   = startLineNumber.Value,
                        TargetGraphs      = targetGraphs,
                        Time              = time.Value,
                        WarningLevel      = warningLevel.Value
                    };
                }
                else if (typeName == SignatureLogTypeName)
                {
                    SignatureLog signatureLog = SignatureLog.Error(code.Value, message);

                    signatureLog.Code         = code.Value;
                    signatureLog.Level        = logLevel.Value;
                    signatureLog.LibraryId    = libraryId;
                    signatureLog.ProjectPath  = projectPath;
                    signatureLog.Time         = time.Value;
                    signatureLog.WarningLevel = warningLevel.Value;

                    logMessage = signatureLog;
                }
                else
                {
                    throw new InvalidOperationException();
                }

                return(logMessage);
            }
            finally
            {
                // stack overflow mitigation - see https://github.com/neuecc/MessagePack-CSharp/security/advisories/GHSA-7q36-4xx7-xcxf
                reader.Depth--;
            }
        }