From eb1c3f8b7a35daf6a84d0c99371fb7dc17d4eb00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Jare=C5=A1?= Date: Tue, 18 Feb 2025 09:27:33 +0100 Subject: [PATCH 1/4] Add tests --- ...aryFormatterExceptionSerializationTests.cs | 35 +++++++++++++++++++ .../TestFramework.UnitTests.csproj | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 test/UnitTests/TestFramework.UnitTests/Exceptions/BinaryFormatterExceptionSerializationTests.cs diff --git a/test/UnitTests/TestFramework.UnitTests/Exceptions/BinaryFormatterExceptionSerializationTests.cs b/test/UnitTests/TestFramework.UnitTests/Exceptions/BinaryFormatterExceptionSerializationTests.cs new file mode 100644 index 0000000000..2fd1a96e12 --- /dev/null +++ b/test/UnitTests/TestFramework.UnitTests/Exceptions/BinaryFormatterExceptionSerializationTests.cs @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +#if NETFRAMEWORK +using System.Runtime.Serialization.Formatters.Binary; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using TestFramework.ForTestingMSTest; + +namespace Microsoft.VisualStudio.TestPlatform.TestFramework.UnitTests.Attributes; + +public class BinaryFormatterExceptionSerializationTests : TestContainer +{ + public void AssertFailedExceptionCanBeSerializedAndDeserialized() + => VerifySerialization(() => Assert.AreEqual(0, 1)); + + private void VerifySerialization(Action actionThatThrows) + { + try + { + actionThatThrows(); + } + catch (Exception ex) + { + var mem = new MemoryStream(); + new BinaryFormatter().Serialize(mem, ex); + mem.Position = 0; + new BinaryFormatter().Deserialize(mem); + } + + throw new InvalidOperationException($"The provided '{nameof(actionThatThrows)}' did not throw any exception."); + } +} +#endif diff --git a/test/UnitTests/TestFramework.UnitTests/TestFramework.UnitTests.csproj b/test/UnitTests/TestFramework.UnitTests/TestFramework.UnitTests.csproj index 9f46799831..2230c33d50 100644 --- a/test/UnitTests/TestFramework.UnitTests/TestFramework.UnitTests.csproj +++ b/test/UnitTests/TestFramework.UnitTests/TestFramework.UnitTests.csproj @@ -14,7 +14,7 @@ - + From 0690eaa55ebf40b1b678fa22d839727d3b2913b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Jare=C5=A1?= Date: Tue, 18 Feb 2025 10:18:19 +0100 Subject: [PATCH 2/4] Fix binary formatter serialization for .NET Framework --- src/TestFramework/TestFramework/Constants.cs | 2 ++ .../Exceptions/AssertFailedException.cs | 19 +++++++++++++++++++ .../Exceptions/AssertInconclusiveException.cs | 19 +++++++++++++++++++ .../InternalTestFailureException.cs | 19 +++++++++++++++++++ .../Exceptions/UnitTestAssertException.cs | 19 +++++++++++++++++++ .../netframework/PublicAPI.Shipped.txt | 1 + .../netframework/PublicAPI.Unshipped.txt | 5 +++++ .../netstandard2.0/PublicAPI.Shipped.txt | 1 + .../netstandard2.0/PublicAPI.Unshipped.txt | 5 +++++ .../TestFramework/TestFramework.csproj | 6 ++++++ ...aryFormatterExceptionSerializationTests.cs | 12 +++++++++++- 11 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 src/TestFramework/TestFramework/PublicAPI/netframework/PublicAPI.Shipped.txt create mode 100644 src/TestFramework/TestFramework/PublicAPI/netframework/PublicAPI.Unshipped.txt create mode 100644 src/TestFramework/TestFramework/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt create mode 100644 src/TestFramework/TestFramework/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt diff --git a/src/TestFramework/TestFramework/Constants.cs b/src/TestFramework/TestFramework/Constants.cs index 6973e5008c..da273a2db8 100644 --- a/src/TestFramework/TestFramework/Constants.cs +++ b/src/TestFramework/TestFramework/Constants.cs @@ -9,4 +9,6 @@ namespace Microsoft.VisualStudio.TestTools.UnitTesting; internal static class Constants { internal const string PublicTypeObsoleteMessage = "We will remove or hide this type starting with v4. If you are using this type, reach out to our team on https://github.com/microsoft/testfx."; + + internal const string LegacyFormatterImplementationMessage = "This API supports obsolete formatter-based serialization. It should not be called or extended by application code."; } diff --git a/src/TestFramework/TestFramework/Exceptions/AssertFailedException.cs b/src/TestFramework/TestFramework/Exceptions/AssertFailedException.cs index 5c75c15abe..7004f3956a 100644 --- a/src/TestFramework/TestFramework/Exceptions/AssertFailedException.cs +++ b/src/TestFramework/TestFramework/Exceptions/AssertFailedException.cs @@ -1,6 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +#if NETFRAMEWORK || NETSTANDARD2_0 +using System.ComponentModel; +using System.Runtime.Serialization; +#endif + namespace Microsoft.VisualStudio.TestTools.UnitTesting; /// @@ -35,4 +40,18 @@ public AssertFailedException() : base() { } + +#if NETFRAMEWORK || NETSTANDARD2_0 + /// + /// Initializes a new instance of the class. + /// + /// Serialization info. + /// Streaming context. + [Obsolete(Constants.LegacyFormatterImplementationMessage)] + [EditorBrowsable(EditorBrowsableState.Never)] + protected AssertFailedException(SerializationInfo info, StreamingContext context) + : base(info, context) + { + } +#endif } diff --git a/src/TestFramework/TestFramework/Exceptions/AssertInconclusiveException.cs b/src/TestFramework/TestFramework/Exceptions/AssertInconclusiveException.cs index 638eb2658b..50856b996f 100644 --- a/src/TestFramework/TestFramework/Exceptions/AssertInconclusiveException.cs +++ b/src/TestFramework/TestFramework/Exceptions/AssertInconclusiveException.cs @@ -1,6 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +#if NETFRAMEWORK || NETSTANDARD2_0 +using System.ComponentModel; +using System.Runtime.Serialization; +#endif + namespace Microsoft.VisualStudio.TestTools.UnitTesting; /// @@ -35,4 +40,18 @@ public AssertInconclusiveException() : base() { } + +#if NETFRAMEWORK || NETSTANDARD2_0 + /// + /// Initializes a new instance of the class. + /// + /// Serialization info. + /// Streaming context. + [Obsolete(Constants.LegacyFormatterImplementationMessage)] + [EditorBrowsable(EditorBrowsableState.Never)] + protected AssertInconclusiveException(SerializationInfo info, StreamingContext context) + : base(info, context) + { + } +#endif } diff --git a/src/TestFramework/TestFramework/Exceptions/InternalTestFailureException.cs b/src/TestFramework/TestFramework/Exceptions/InternalTestFailureException.cs index 4a668b3a09..dbcbb09b41 100644 --- a/src/TestFramework/TestFramework/Exceptions/InternalTestFailureException.cs +++ b/src/TestFramework/TestFramework/Exceptions/InternalTestFailureException.cs @@ -1,6 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +#if NETFRAMEWORK || NETSTANDARD2_0 +using System.ComponentModel; +using System.Runtime.Serialization; +#endif + namespace Microsoft.VisualStudio.TestTools.UnitTesting; /// @@ -46,4 +51,18 @@ public InternalTestFailureException() : base() { } + +#if NETFRAMEWORK || NETSTANDARD2_0 + /// + /// Initializes a new instance of the class. + /// + /// Serialization info. + /// Streaming context. + [Obsolete(Constants.LegacyFormatterImplementationMessage)] + [EditorBrowsable(EditorBrowsableState.Never)] + protected InternalTestFailureException(SerializationInfo info, StreamingContext context) + : base(info, context) + { + } +#endif } diff --git a/src/TestFramework/TestFramework/Exceptions/UnitTestAssertException.cs b/src/TestFramework/TestFramework/Exceptions/UnitTestAssertException.cs index e5a23d79b4..a28b173f56 100644 --- a/src/TestFramework/TestFramework/Exceptions/UnitTestAssertException.cs +++ b/src/TestFramework/TestFramework/Exceptions/UnitTestAssertException.cs @@ -1,6 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +#if NETFRAMEWORK || NETSTANDARD2_0 +using System.ComponentModel; +using System.Runtime.Serialization; +#endif + namespace Microsoft.VisualStudio.TestTools.UnitTesting; /// @@ -34,4 +39,18 @@ protected UnitTestAssertException(string msg) : base(msg) { } + +#if NETFRAMEWORK || NETSTANDARD2_0 + /// + /// Initializes a new instance of the class. + /// + /// Serialization info. + /// Streaming context. + [Obsolete(Constants.LegacyFormatterImplementationMessage)] + [EditorBrowsable(EditorBrowsableState.Never)] + protected UnitTestAssertException(SerializationInfo info, StreamingContext context) + : base(info, context) + { + } +#endif } diff --git a/src/TestFramework/TestFramework/PublicAPI/netframework/PublicAPI.Shipped.txt b/src/TestFramework/TestFramework/PublicAPI/netframework/PublicAPI.Shipped.txt new file mode 100644 index 0000000000..7dc5c58110 --- /dev/null +++ b/src/TestFramework/TestFramework/PublicAPI/netframework/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/TestFramework/TestFramework/PublicAPI/netframework/PublicAPI.Unshipped.txt b/src/TestFramework/TestFramework/PublicAPI/netframework/PublicAPI.Unshipped.txt new file mode 100644 index 0000000000..0dce5db0ff --- /dev/null +++ b/src/TestFramework/TestFramework/PublicAPI/netframework/PublicAPI.Unshipped.txt @@ -0,0 +1,5 @@ +#nullable enable +Microsoft.VisualStudio.TestTools.UnitTesting.AssertInconclusiveException.AssertInconclusiveException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void +Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException.AssertFailedException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void +Microsoft.VisualStudio.TestTools.UnitTesting.InternalTestFailureException.InternalTestFailureException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void +Microsoft.VisualStudio.TestTools.UnitTesting.UnitTestAssertException.UnitTestAssertException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void diff --git a/src/TestFramework/TestFramework/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt b/src/TestFramework/TestFramework/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt new file mode 100644 index 0000000000..7dc5c58110 --- /dev/null +++ b/src/TestFramework/TestFramework/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/TestFramework/TestFramework/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt b/src/TestFramework/TestFramework/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt new file mode 100644 index 0000000000..0dce5db0ff --- /dev/null +++ b/src/TestFramework/TestFramework/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt @@ -0,0 +1,5 @@ +#nullable enable +Microsoft.VisualStudio.TestTools.UnitTesting.AssertInconclusiveException.AssertInconclusiveException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void +Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException.AssertFailedException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void +Microsoft.VisualStudio.TestTools.UnitTesting.InternalTestFailureException.InternalTestFailureException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void +Microsoft.VisualStudio.TestTools.UnitTesting.UnitTestAssertException.UnitTestAssertException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void diff --git a/src/TestFramework/TestFramework/TestFramework.csproj b/src/TestFramework/TestFramework/TestFramework.csproj index 5a7bd54160..f775436cdc 100644 --- a/src/TestFramework/TestFramework/TestFramework.csproj +++ b/src/TestFramework/TestFramework/TestFramework.csproj @@ -17,6 +17,12 @@ + + + + + + diff --git a/test/UnitTests/TestFramework.UnitTests/Exceptions/BinaryFormatterExceptionSerializationTests.cs b/test/UnitTests/TestFramework.UnitTests/Exceptions/BinaryFormatterExceptionSerializationTests.cs index 2fd1a96e12..c0e63e00b8 100644 --- a/test/UnitTests/TestFramework.UnitTests/Exceptions/BinaryFormatterExceptionSerializationTests.cs +++ b/test/UnitTests/TestFramework.UnitTests/Exceptions/BinaryFormatterExceptionSerializationTests.cs @@ -13,7 +13,13 @@ namespace Microsoft.VisualStudio.TestPlatform.TestFramework.UnitTests.Attributes public class BinaryFormatterExceptionSerializationTests : TestContainer { public void AssertFailedExceptionCanBeSerializedAndDeserialized() - => VerifySerialization(() => Assert.AreEqual(0, 1)); + => VerifySerialization(Assert.Fail); + + public void AssertInconclusiveExceptionCanBeSerializedAndDeserialized() + => VerifySerialization(Assert.Inconclusive); + + public void InternalTestFailureExceptionCanBeSerializedAndDeserialized() + => VerifySerialization(() => throw new InternalTestFailureException("Some internal error.")); private void VerifySerialization(Action actionThatThrows) { @@ -23,10 +29,14 @@ private void VerifySerialization(Action actionThatThrows) } catch (Exception ex) { + // Ensure the thrown exception can be serialized and deserialized by binary formatter to keep compatibility with it, + // even though it is obsoleted and removed in .NET. var mem = new MemoryStream(); new BinaryFormatter().Serialize(mem, ex); mem.Position = 0; new BinaryFormatter().Deserialize(mem); + + return; } throw new InvalidOperationException($"The provided '{nameof(actionThatThrows)}' did not throw any exception."); From 6d4f5ebf1974df5058b652d5f55ce2754e167277 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Jare=C5=A1?= Date: Tue, 18 Feb 2025 13:59:17 +0100 Subject: [PATCH 3/4] Add obsolete to test using obsolete api --- .../Exceptions/BinaryFormatterExceptionSerializationTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/test/UnitTests/TestFramework.UnitTests/Exceptions/BinaryFormatterExceptionSerializationTests.cs b/test/UnitTests/TestFramework.UnitTests/Exceptions/BinaryFormatterExceptionSerializationTests.cs index c0e63e00b8..9fc48a92c3 100644 --- a/test/UnitTests/TestFramework.UnitTests/Exceptions/BinaryFormatterExceptionSerializationTests.cs +++ b/test/UnitTests/TestFramework.UnitTests/Exceptions/BinaryFormatterExceptionSerializationTests.cs @@ -18,6 +18,7 @@ public void AssertFailedExceptionCanBeSerializedAndDeserialized() public void AssertInconclusiveExceptionCanBeSerializedAndDeserialized() => VerifySerialization(Assert.Inconclusive); + [Obsolete] public void InternalTestFailureExceptionCanBeSerializedAndDeserialized() => VerifySerialization(() => throw new InternalTestFailureException("Some internal error.")); From 15ee8c216f15abc679f4ce4822eb93c234c0dbd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaury=20Lev=C3=A9?= Date: Tue, 18 Feb 2025 16:00:57 +0100 Subject: [PATCH 4/4] Address review feedback --- .../MSTest.Engine/Assertions/AssertFailedException.cs | 3 +++ src/TestFramework/TestFramework/Constants.cs | 2 -- .../TestFramework/Exceptions/AssertFailedException.cs | 8 +++----- .../Exceptions/AssertInconclusiveException.cs | 8 +++----- .../Exceptions/InternalTestFailureException.cs | 8 +++----- .../TestFramework/Exceptions/UnitTestAssertException.cs | 8 +++----- .../TestFramework/PublicAPI/PublicAPI.Unshipped.txt | 4 ++++ .../PublicAPI/netframework/PublicAPI.Shipped.txt | 1 - .../PublicAPI/netframework/PublicAPI.Unshipped.txt | 5 ----- .../PublicAPI/netstandard2.0/PublicAPI.Shipped.txt | 1 - .../PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt | 5 ----- src/TestFramework/TestFramework/TestFramework.csproj | 6 ------ .../BinaryFormatterExceptionSerializationTests.cs | 6 ++---- 13 files changed, 21 insertions(+), 44 deletions(-) delete mode 100644 src/TestFramework/TestFramework/PublicAPI/netframework/PublicAPI.Shipped.txt delete mode 100644 src/TestFramework/TestFramework/PublicAPI/netframework/PublicAPI.Unshipped.txt delete mode 100644 src/TestFramework/TestFramework/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt delete mode 100644 src/TestFramework/TestFramework/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt diff --git a/src/Adapter/MSTest.Engine/Assertions/AssertFailedException.cs b/src/Adapter/MSTest.Engine/Assertions/AssertFailedException.cs index 13efec5f35..cad313aaad 100644 --- a/src/Adapter/MSTest.Engine/Assertions/AssertFailedException.cs +++ b/src/Adapter/MSTest.Engine/Assertions/AssertFailedException.cs @@ -82,6 +82,9 @@ public AssertFailedException(string message, Exception ex) { } +#if NET8_0_OR_GREATER + [Obsolete(DiagnosticId = "SYSLIB0051")] +#endif private AssertFailedException(SerializationInfo serializationInfo, StreamingContext streamingContext) { } diff --git a/src/TestFramework/TestFramework/Constants.cs b/src/TestFramework/TestFramework/Constants.cs index da273a2db8..6973e5008c 100644 --- a/src/TestFramework/TestFramework/Constants.cs +++ b/src/TestFramework/TestFramework/Constants.cs @@ -9,6 +9,4 @@ namespace Microsoft.VisualStudio.TestTools.UnitTesting; internal static class Constants { internal const string PublicTypeObsoleteMessage = "We will remove or hide this type starting with v4. If you are using this type, reach out to our team on https://github.com/microsoft/testfx."; - - internal const string LegacyFormatterImplementationMessage = "This API supports obsolete formatter-based serialization. It should not be called or extended by application code."; } diff --git a/src/TestFramework/TestFramework/Exceptions/AssertFailedException.cs b/src/TestFramework/TestFramework/Exceptions/AssertFailedException.cs index 7004f3956a..b2c5e7cdd6 100644 --- a/src/TestFramework/TestFramework/Exceptions/AssertFailedException.cs +++ b/src/TestFramework/TestFramework/Exceptions/AssertFailedException.cs @@ -1,10 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -#if NETFRAMEWORK || NETSTANDARD2_0 using System.ComponentModel; using System.Runtime.Serialization; -#endif namespace Microsoft.VisualStudio.TestTools.UnitTesting; @@ -41,17 +39,17 @@ public AssertFailedException() { } -#if NETFRAMEWORK || NETSTANDARD2_0 /// /// Initializes a new instance of the class. /// /// Serialization info. /// Streaming context. - [Obsolete(Constants.LegacyFormatterImplementationMessage)] +#if NET8_0_OR_GREATER + [Obsolete(DiagnosticId = "SYSLIB0051")] +#endif [EditorBrowsable(EditorBrowsableState.Never)] protected AssertFailedException(SerializationInfo info, StreamingContext context) : base(info, context) { } -#endif } diff --git a/src/TestFramework/TestFramework/Exceptions/AssertInconclusiveException.cs b/src/TestFramework/TestFramework/Exceptions/AssertInconclusiveException.cs index 50856b996f..a0ab122863 100644 --- a/src/TestFramework/TestFramework/Exceptions/AssertInconclusiveException.cs +++ b/src/TestFramework/TestFramework/Exceptions/AssertInconclusiveException.cs @@ -1,10 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -#if NETFRAMEWORK || NETSTANDARD2_0 using System.ComponentModel; using System.Runtime.Serialization; -#endif namespace Microsoft.VisualStudio.TestTools.UnitTesting; @@ -41,17 +39,17 @@ public AssertInconclusiveException() { } -#if NETFRAMEWORK || NETSTANDARD2_0 /// /// Initializes a new instance of the class. /// /// Serialization info. /// Streaming context. - [Obsolete(Constants.LegacyFormatterImplementationMessage)] +#if NET8_0_OR_GREATER + [Obsolete(DiagnosticId = "SYSLIB0051")] +#endif [EditorBrowsable(EditorBrowsableState.Never)] protected AssertInconclusiveException(SerializationInfo info, StreamingContext context) : base(info, context) { } -#endif } diff --git a/src/TestFramework/TestFramework/Exceptions/InternalTestFailureException.cs b/src/TestFramework/TestFramework/Exceptions/InternalTestFailureException.cs index dbcbb09b41..41e1d43342 100644 --- a/src/TestFramework/TestFramework/Exceptions/InternalTestFailureException.cs +++ b/src/TestFramework/TestFramework/Exceptions/InternalTestFailureException.cs @@ -1,10 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -#if NETFRAMEWORK || NETSTANDARD2_0 using System.ComponentModel; using System.Runtime.Serialization; -#endif namespace Microsoft.VisualStudio.TestTools.UnitTesting; @@ -52,17 +50,17 @@ public InternalTestFailureException() { } -#if NETFRAMEWORK || NETSTANDARD2_0 /// /// Initializes a new instance of the class. /// /// Serialization info. /// Streaming context. - [Obsolete(Constants.LegacyFormatterImplementationMessage)] +#if NET8_0_OR_GREATER + [Obsolete(DiagnosticId = "SYSLIB0051")] +#endif [EditorBrowsable(EditorBrowsableState.Never)] protected InternalTestFailureException(SerializationInfo info, StreamingContext context) : base(info, context) { } -#endif } diff --git a/src/TestFramework/TestFramework/Exceptions/UnitTestAssertException.cs b/src/TestFramework/TestFramework/Exceptions/UnitTestAssertException.cs index a28b173f56..d76cea2d92 100644 --- a/src/TestFramework/TestFramework/Exceptions/UnitTestAssertException.cs +++ b/src/TestFramework/TestFramework/Exceptions/UnitTestAssertException.cs @@ -1,10 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -#if NETFRAMEWORK || NETSTANDARD2_0 using System.ComponentModel; using System.Runtime.Serialization; -#endif namespace Microsoft.VisualStudio.TestTools.UnitTesting; @@ -40,17 +38,17 @@ protected UnitTestAssertException(string msg) { } -#if NETFRAMEWORK || NETSTANDARD2_0 /// /// Initializes a new instance of the class. /// /// Serialization info. /// Streaming context. - [Obsolete(Constants.LegacyFormatterImplementationMessage)] +#if NET8_0_OR_GREATER + [Obsolete(DiagnosticId = "SYSLIB0051")] +#endif [EditorBrowsable(EditorBrowsableState.Never)] protected UnitTestAssertException(SerializationInfo info, StreamingContext context) : base(info, context) { } -#endif } diff --git a/src/TestFramework/TestFramework/PublicAPI/PublicAPI.Unshipped.txt b/src/TestFramework/TestFramework/PublicAPI/PublicAPI.Unshipped.txt index 7dc5c58110..c7380b5e95 100644 --- a/src/TestFramework/TestFramework/PublicAPI/PublicAPI.Unshipped.txt +++ b/src/TestFramework/TestFramework/PublicAPI/PublicAPI.Unshipped.txt @@ -1 +1,5 @@ #nullable enable +Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException.AssertFailedException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void +Microsoft.VisualStudio.TestTools.UnitTesting.AssertInconclusiveException.AssertInconclusiveException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void +Microsoft.VisualStudio.TestTools.UnitTesting.InternalTestFailureException.InternalTestFailureException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void +Microsoft.VisualStudio.TestTools.UnitTesting.UnitTestAssertException.UnitTestAssertException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void diff --git a/src/TestFramework/TestFramework/PublicAPI/netframework/PublicAPI.Shipped.txt b/src/TestFramework/TestFramework/PublicAPI/netframework/PublicAPI.Shipped.txt deleted file mode 100644 index 7dc5c58110..0000000000 --- a/src/TestFramework/TestFramework/PublicAPI/netframework/PublicAPI.Shipped.txt +++ /dev/null @@ -1 +0,0 @@ -#nullable enable diff --git a/src/TestFramework/TestFramework/PublicAPI/netframework/PublicAPI.Unshipped.txt b/src/TestFramework/TestFramework/PublicAPI/netframework/PublicAPI.Unshipped.txt deleted file mode 100644 index 0dce5db0ff..0000000000 --- a/src/TestFramework/TestFramework/PublicAPI/netframework/PublicAPI.Unshipped.txt +++ /dev/null @@ -1,5 +0,0 @@ -#nullable enable -Microsoft.VisualStudio.TestTools.UnitTesting.AssertInconclusiveException.AssertInconclusiveException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void -Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException.AssertFailedException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void -Microsoft.VisualStudio.TestTools.UnitTesting.InternalTestFailureException.InternalTestFailureException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void -Microsoft.VisualStudio.TestTools.UnitTesting.UnitTestAssertException.UnitTestAssertException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void diff --git a/src/TestFramework/TestFramework/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt b/src/TestFramework/TestFramework/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt deleted file mode 100644 index 7dc5c58110..0000000000 --- a/src/TestFramework/TestFramework/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt +++ /dev/null @@ -1 +0,0 @@ -#nullable enable diff --git a/src/TestFramework/TestFramework/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt b/src/TestFramework/TestFramework/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt deleted file mode 100644 index 0dce5db0ff..0000000000 --- a/src/TestFramework/TestFramework/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt +++ /dev/null @@ -1,5 +0,0 @@ -#nullable enable -Microsoft.VisualStudio.TestTools.UnitTesting.AssertInconclusiveException.AssertInconclusiveException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void -Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException.AssertFailedException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void -Microsoft.VisualStudio.TestTools.UnitTesting.InternalTestFailureException.InternalTestFailureException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void -Microsoft.VisualStudio.TestTools.UnitTesting.UnitTestAssertException.UnitTestAssertException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void diff --git a/src/TestFramework/TestFramework/TestFramework.csproj b/src/TestFramework/TestFramework/TestFramework.csproj index f775436cdc..5a7bd54160 100644 --- a/src/TestFramework/TestFramework/TestFramework.csproj +++ b/src/TestFramework/TestFramework/TestFramework.csproj @@ -17,12 +17,6 @@ - - - - - - diff --git a/test/UnitTests/TestFramework.UnitTests/Exceptions/BinaryFormatterExceptionSerializationTests.cs b/test/UnitTests/TestFramework.UnitTests/Exceptions/BinaryFormatterExceptionSerializationTests.cs index 9fc48a92c3..7c3a083458 100644 --- a/test/UnitTests/TestFramework.UnitTests/Exceptions/BinaryFormatterExceptionSerializationTests.cs +++ b/test/UnitTests/TestFramework.UnitTests/Exceptions/BinaryFormatterExceptionSerializationTests.cs @@ -1,7 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -#if NETFRAMEWORK using System.Runtime.Serialization.Formatters.Binary; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -10,7 +9,8 @@ namespace Microsoft.VisualStudio.TestPlatform.TestFramework.UnitTests.Attributes; -public class BinaryFormatterExceptionSerializationTests : TestContainer +[Obsolete] +public sealed class BinaryFormatterExceptionSerializationTests : TestContainer { public void AssertFailedExceptionCanBeSerializedAndDeserialized() => VerifySerialization(Assert.Fail); @@ -18,7 +18,6 @@ public void AssertFailedExceptionCanBeSerializedAndDeserialized() public void AssertInconclusiveExceptionCanBeSerializedAndDeserialized() => VerifySerialization(Assert.Inconclusive); - [Obsolete] public void InternalTestFailureExceptionCanBeSerializedAndDeserialized() => VerifySerialization(() => throw new InternalTestFailureException("Some internal error.")); @@ -43,4 +42,3 @@ private void VerifySerialization(Action actionThatThrows) throw new InvalidOperationException($"The provided '{nameof(actionThatThrows)}' did not throw any exception."); } } -#endif