-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Description
In System.IO.Packaging, InterleavedZipPackagePartStream.Length asserts that CanSeek is true here:
runtime/src/libraries/System.IO.Packaging/src/System/IO/Packaging/InterleavedZipPackagePartStream.cs
Line 480 in d187228
| Debug.Assert(CanSeek); |
However this is not always true, and this assert is reachable from public APIs.
Using the existing PartPieceTests test fixture and data, the following unit test will hit the Debug.Assert:
[Fact]
public void InterleavedZipPackagePartStream_Length_Assert()
{
using MemoryStream package = new(_partPieceSampleZipPackage);
using Package zipPackage = Package.Open(package, FileMode.Open, FileAccess.Read);
PackagePart partEntry = zipPackage.GetPart(new Uri("/ReadablePartPieceEntry.bin", UriKind.Relative));
using Stream stream = partEntry.GetStream(FileMode.Open);
Assert.NotEqual(0, stream.Length);
}The assertion:
Stack Trace:
at Microsoft.VisualStudio.TestPlatform.TestHost.TestHostTraceListener.GetException(String message)
at Microsoft.VisualStudio.TestPlatform.TestHost.TestHostTraceListener.Fail(String message, String detailMessage)
at System.Diagnostics.TraceInternal.Fail(String message, String detailMessage) in /Users/vcsjones/Projects/runtime/src/libraries/System.Diagnostics.TraceSource/src/System/Diagnostics/TraceInternal.cs:line 261
at System.Diagnostics.TraceInternal.TraceProvider.Fail(String message, String detailMessage) in /Users/vcsjones/Projects/runtime/src/libraries/System.Diagnostics.TraceSource/src/System/Diagnostics/TraceInternal.cs:line 17
at System.Diagnostics.Debug.Fail(String message, String detailMessage) in /Users/vcsjones/Projects/runtime/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Debug.cs:line 135
at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) in /Users/vcsjones/Projects/runtime/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Debug.cs:line 99
at System.Diagnostics.Debug.Assert(Boolean condition, String message) in /Users/vcsjones/Projects/runtime/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Debug.cs:line 88
at System.IO.Packaging.InterleavedZipPackagePartStream.get_Length() in /Users/vcsjones/Projects/runtime/src/libraries/System.IO.Packaging/src/System/IO/Packaging/InterleavedZipPackagePartStream.cs:line 480
at System.IO.Packaging.Tests.PartPieceTests.InterleavedZipPackagePartStream_Length_Assert() in /Users/vcsjones/Projects/runtime/src/libraries/System.IO.Packaging/tests/PartPieceTests.cs:line 609
Copilot