use ifdefs for creating files?

This commit is contained in:
Adam Hathcock
2026-01-08 16:52:23 +00:00
parent d1fcf31f7e
commit a35e65ee42
3 changed files with 82 additions and 13 deletions

View File

@@ -216,9 +216,9 @@
"net10.0": {
"Microsoft.NET.ILLink.Tasks": {
"type": "Direct",
"requested": "[10.0.0, )",
"resolved": "10.0.0",
"contentHash": "kICGrGYEzCNI3wPzfEXcwNHgTvlvVn9yJDhSdRK+oZQy4jvYH529u7O0xf5ocQKzOMjfS07+3z9PKRIjrFMJDA=="
"requested": "[10.0.1, )",
"resolved": "10.0.1",
"contentHash": "ISahzLHsHY7vrwqr2p1YWZ+gsxoBRtH7gWRDK8fDUst9pp2He0GiesaqEfeX0V8QMCJM3eNEHGGpnIcPjFo2NQ=="
},
"Microsoft.NETFramework.ReferenceAssemblies": {
"type": "Direct",

View File

@@ -97,17 +97,27 @@ public class AsyncTests : TestBase
public async ValueTask Writer_Async_Write_Single_File()
{
var outputPath = Path.Combine(SCRATCH_FILES_PATH, "async_test.zip");
#if NETFRAMEWORK
using (var stream = File.Create(outputPath))
#else
await using (var stream = File.Create(outputPath))
#endif
using (var writer = WriterFactory.Open(stream, ArchiveType.Zip, CompressionType.Deflate))
{
var testFile = Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz");
#if NETFRAMEWORK
using var fileStream = File.OpenRead(testFile);
#else
await using var fileStream = File.OpenRead(testFile);
#endif
await writer.WriteAsync("test_entry.bin", fileStream, new DateTime(2023, 1, 1));
}
// Verify the archive was created and contains the entry
Assert.True(File.Exists(outputPath));
using var archive = ZipArchive.Open(outputPath);
await using var archive = ZipArchive.Open(outputPath);
Assert.Single(archive.Entries.Where(e => !e.IsDirectory));
}
@@ -118,7 +128,11 @@ public class AsyncTests : TestBase
cts.CancelAfter(10000); // 10 seconds should be plenty
var testArchive = Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz");
#if NETFRAMEWORK
using var stream = File.OpenRead(testArchive);
#else
await using var stream = File.OpenRead(testArchive);
#endif
await using var reader = await ReaderFactory.OpenAsync(
new AsyncOnlyStream(stream),
cancellationToken: cts.Token
@@ -143,9 +157,14 @@ public class AsyncTests : TestBase
public async ValueTask Stream_Extensions_Async()
{
var testFile = Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz");
using var inputStream = File.OpenRead(testFile);
var outputPath = Path.Combine(SCRATCH_FILES_PATH, "async_copy.bin");
#if NETFRAMEWORK
using var inputStream = File.OpenRead(testFile);
using var outputStream = File.Create(outputPath);
#else
await using var inputStream = File.OpenRead(testFile);
await using var outputStream = File.Create(outputPath);
#endif
// Test the async extension method
var buffer = new byte[8192];
@@ -163,14 +182,22 @@ public class AsyncTests : TestBase
public async ValueTask EntryStream_ReadAsync_Works()
{
var testArchive = Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz");
#if NETFRAMEWORK
using var stream = File.OpenRead(testArchive);
#else
await using var stream = File.OpenRead(testArchive);
#endif
await using var reader = await ReaderFactory.OpenAsync(new AsyncOnlyStream(stream));
while (await reader.MoveToNextEntryAsync())
{
if (!reader.Entry.IsDirectory)
{
#if NETFRAMEWORK
using var entryStream = await reader.OpenEntryStreamAsync();
#else
await using var entryStream = await reader.OpenEntryStreamAsync();
#endif
var buffer = new byte[4096];
var totalRead = 0;
int bytesRead;
@@ -196,8 +223,13 @@ public class AsyncTests : TestBase
var compressedPath = Path.Combine(SCRATCH_FILES_PATH, "async_compressed.gz");
// Test async write with GZipStream
#if NETFRAMEWORK
using (var fileStream = File.Create(compressedPath))
using (var gzipStream = new GZipStream(fileStream, CompressionMode.Compress))
#else
await using (var fileStream = File.Create(compressedPath))
await using (var gzipStream = new GZipStream(fileStream, CompressionMode.Compress))
#endif
{
await gzipStream.WriteAsync(testData, 0, testData.Length);
await gzipStream.FlushAsync();
@@ -205,10 +237,14 @@ public class AsyncTests : TestBase
Assert.True(File.Exists(compressedPath));
Assert.True(new FileInfo(compressedPath).Length > 0);
#if NETFRAMEWORK
using (var fileStream = File.Create(compressedPath))
using (var gzipStream = new GZipStream(fileStream, CompressionMode.Compress))
#else
// Test async read with GZipStream
using (var fileStream = File.OpenRead(compressedPath))
using (var gzipStream = new GZipStream(fileStream, CompressionMode.Decompress))
await using (var fileStream = File.Create(compressedPath))
await using (var gzipStream = new GZipStream(fileStream, CompressionMode.Compress))
#endif
{
var decompressed = new byte[testData.Length];
var totalRead = 0;

View File

@@ -16,7 +16,11 @@ public class GZipArchiveAsyncTests : ArchiveTests
[Fact]
public async ValueTask GZip_Archive_Generic_Async()
{
#if NETFRAMEWORK
using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz")))
#else
await using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz")))
#endif
using (var archive = ArchiveFactory.Open(stream))
{
var entry = archive.Entries.First();
@@ -38,8 +42,12 @@ public class GZipArchiveAsyncTests : ArchiveTests
[Fact]
public async ValueTask GZip_Archive_Async()
{
#if NETFRAMEWORK
using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz")))
using (var archive = GZipArchive.Open(stream))
#else
await using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz")))
#endif
await using (var archive = GZipArchive.Open(stream))
{
var entry = archive.Entries.First();
await entry.WriteToFileAsync(Path.Combine(SCRATCH_FILES_PATH, entry.Key.NotNull()));
@@ -61,8 +69,12 @@ public class GZipArchiveAsyncTests : ArchiveTests
public async ValueTask GZip_Archive_NoAdd_Async()
{
var jpg = Path.Combine(ORIGINAL_FILES_PATH, "jpg", "test.jpg");
#if NETFRAMEWORK
using Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz"));
using var archive = GZipArchive.Open(stream);
#else
await using Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz"));
#endif
await using var archive = GZipArchive.Open(stream);
Assert.Throws<InvalidFormatException>(() => archive.AddEntry("jpg\\test.jpg", jpg));
await archive.SaveToAsync(Path.Combine(SCRATCH_FILES_PATH, "Tar.tar.gz"));
}
@@ -71,34 +83,55 @@ public class GZipArchiveAsyncTests : ArchiveTests
public async ValueTask GZip_Archive_Multiple_Reads_Async()
{
var inputStream = new MemoryStream();
using (var fileStream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz")))
#if NETFRAMEWORK
using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz")))
#else
await using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz")))
#endif
{
await fileStream.CopyToAsync(inputStream);
await stream.CopyToAsync(inputStream);
inputStream.Position = 0;
}
using var archive = GZipArchive.Open(inputStream);
await using var archive = GZipArchive.Open(inputStream);
var archiveEntry = archive.Entries.First();
MemoryStream tarStream;
#if NETFRAMEWORK
using (var entryStream = await archiveEntry.OpenEntryStreamAsync())
#else
await using (var entryStream = await archiveEntry.OpenEntryStreamAsync())
#endif
{
tarStream = new MemoryStream();
await entryStream.CopyToAsync(tarStream);
}
var size = tarStream.Length;
#if NETFRAMEWORK
using (var entryStream = await archiveEntry.OpenEntryStreamAsync())
#else
await using (var entryStream = await archiveEntry.OpenEntryStreamAsync())
#endif
{
tarStream = new MemoryStream();
await entryStream.CopyToAsync(tarStream);
}
Assert.Equal(size, tarStream.Length);
#if NETFRAMEWORK
using (var entryStream = await archiveEntry.OpenEntryStreamAsync())
#else
await using (var entryStream = await archiveEntry.OpenEntryStreamAsync())
#endif
{
var result = TarArchive.IsTarFile(entryStream);
Assert.True(result);
}
Assert.Equal(size, tarStream.Length);
#if NETFRAMEWORK
using (var entryStream = await archiveEntry.OpenEntryStreamAsync())
#else
await using (var entryStream = await archiveEntry.OpenEntryStreamAsync())
#endif
{
tarStream = new MemoryStream();
await entryStream.CopyToAsync(tarStream);