diff --git a/.claude/settings.json b/.claude/settings.json index c3fc4a0..d008f20 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -4,11 +4,12 @@ "Bash(find:*)", "Bash(dotnet build:*)", "Bash(dotnet clean:*)", - "Bash(dotnet restore:*)", + "Bash(dotnet restore:*)", "Bash(dotnet test:*)", "Bash(grep:*)", "Bash(docker compose:*)", - "Bash(docker exec:*)" + "Bash(docker exec:*)", + "Bash(gh run view:*)" ], "deny": [] } diff --git a/scripts/run-integration-tests.ps1 b/scripts/run-integration-tests.ps1 index 5584243..70b991a 100644 --- a/scripts/run-integration-tests.ps1 +++ b/scripts/run-integration-tests.ps1 @@ -98,7 +98,7 @@ $env:SFTP_TEST_HOST = "localhost" $env:SFTP_TEST_PORT = "2222" $env:SFTP_TEST_USER = "testuser" $env:SFTP_TEST_PASS = "testpass" -$env:SFTP_TEST_ROOT = "/home/testuser/upload" +$env:SFTP_TEST_ROOT = "upload" $env:FTP_TEST_HOST = "localhost" $env:FTP_TEST_PORT = "21" diff --git a/scripts/run-integration-tests.sh b/scripts/run-integration-tests.sh index b601a57..b8b8256 100755 --- a/scripts/run-integration-tests.sh +++ b/scripts/run-integration-tests.sh @@ -79,7 +79,7 @@ export SFTP_TEST_HOST=localhost export SFTP_TEST_PORT=2222 export SFTP_TEST_USER=testuser export SFTP_TEST_PASS=testpass -export SFTP_TEST_ROOT=/home/testuser/upload +export SFTP_TEST_ROOT=upload export FTP_TEST_HOST=localhost export FTP_TEST_PORT=21 diff --git a/tests/SharpSync.Tests/Storage/FtpStorageTests.cs b/tests/SharpSync.Tests/Storage/FtpStorageTests.cs index a2ed281..16248fb 100644 --- a/tests/SharpSync.Tests/Storage/FtpStorageTests.cs +++ b/tests/SharpSync.Tests/Storage/FtpStorageTests.cs @@ -145,7 +145,7 @@ private FtpStorage CreateStorage() { useImplicitFtps: _useImplicitFtps); } - [Fact] + [SkippableFact] public async Task TestConnectionAsync_ValidCredentials_ReturnsTrue() { SkipIfIntegrationTestsDisabled(); @@ -159,7 +159,7 @@ public async Task TestConnectionAsync_ValidCredentials_ReturnsTrue() { Assert.True(result); } - [Fact] + [SkippableFact] public async Task TestConnectionAsync_InvalidCredentials_ReturnsFalse() { SkipIfIntegrationTestsDisabled(); @@ -173,7 +173,7 @@ public async Task TestConnectionAsync_InvalidCredentials_ReturnsFalse() { Assert.False(result); } - [Fact] + [SkippableFact] public async Task CreateDirectoryAsync_CreatesDirectory() { // Arrange _storage = CreateStorage(); @@ -187,7 +187,7 @@ public async Task CreateDirectoryAsync_CreatesDirectory() { Assert.True(exists); } - [Fact] + [SkippableFact] public async Task WriteFileAsync_CreatesFile() { // Arrange _storage = CreateStorage(); @@ -203,7 +203,7 @@ public async Task WriteFileAsync_CreatesFile() { Assert.True(exists); } - [Fact] + [SkippableFact] public async Task ReadFileAsync_ReturnsFileContent() { // Arrange _storage = CreateStorage(); @@ -222,7 +222,7 @@ public async Task ReadFileAsync_ReturnsFileContent() { Assert.Equal(content, result); } - [Fact] + [SkippableFact] public async Task ReadFileAsync_NonexistentFile_ThrowsException() { // Arrange _storage = CreateStorage(); @@ -231,7 +231,7 @@ public async Task ReadFileAsync_NonexistentFile_ThrowsException() { await Assert.ThrowsAsync(() => _storage.ReadFileAsync("nonexistent.txt")); } - [Fact] + [SkippableFact] public async Task ExistsAsync_ExistingFile_ReturnsTrue() { // Arrange _storage = CreateStorage(); @@ -246,7 +246,7 @@ public async Task ExistsAsync_ExistingFile_ReturnsTrue() { Assert.True(result); } - [Fact] + [SkippableFact] public async Task ExistsAsync_NonexistentFile_ReturnsFalse() { // Arrange _storage = CreateStorage(); @@ -258,7 +258,7 @@ public async Task ExistsAsync_NonexistentFile_ReturnsFalse() { Assert.False(result); } - [Fact] + [SkippableFact] public async Task DeleteAsync_ExistingFile_DeletesFile() { // Arrange _storage = CreateStorage(); @@ -274,7 +274,7 @@ public async Task DeleteAsync_ExistingFile_DeletesFile() { Assert.False(exists); } - [Fact] + [SkippableFact] public async Task DeleteAsync_Directory_DeletesDirectory() { // Arrange _storage = CreateStorage(); @@ -289,7 +289,7 @@ public async Task DeleteAsync_Directory_DeletesDirectory() { Assert.False(exists); } - [Fact] + [SkippableFact] public async Task DeleteAsync_DirectoryWithContents_DeletesRecursively() { // Arrange _storage = CreateStorage(); @@ -308,7 +308,7 @@ public async Task DeleteAsync_DirectoryWithContents_DeletesRecursively() { Assert.False(exists); } - [Fact] + [SkippableFact] public async Task MoveAsync_MovesFile() { // Arrange _storage = CreateStorage(); @@ -336,7 +336,7 @@ public async Task MoveAsync_MovesFile() { Assert.Equal(content, result); } - [Fact] + [SkippableFact] public async Task MoveAsync_ToSubdirectory_MovesCorrectly() { // Arrange _storage = CreateStorage(); @@ -358,7 +358,7 @@ public async Task MoveAsync_ToSubdirectory_MovesCorrectly() { Assert.True(targetExists); } - [Fact] + [SkippableFact] public async Task ListItemsAsync_ReturnsItems() { // Arrange _storage = CreateStorage(); @@ -388,7 +388,7 @@ public async Task ListItemsAsync_ReturnsItems() { Assert.True(directory.IsDirectory); } - [Fact] + [SkippableFact] public async Task GetItemAsync_ExistingFile_ReturnsItem() { // Arrange _storage = CreateStorage(); @@ -408,7 +408,7 @@ public async Task GetItemAsync_ExistingFile_ReturnsItem() { Assert.Equal(content.Length, item.Size); } - [Fact] + [SkippableFact] public async Task GetItemAsync_Directory_ReturnsDirectoryItem() { // Arrange _storage = CreateStorage(); @@ -424,7 +424,7 @@ public async Task GetItemAsync_Directory_ReturnsDirectoryItem() { Assert.True(item.IsDirectory); } - [Fact] + [SkippableFact] public async Task GetItemAsync_NonexistentItem_ReturnsNull() { // Arrange _storage = CreateStorage(); @@ -436,7 +436,7 @@ public async Task GetItemAsync_NonexistentItem_ReturnsNull() { Assert.Null(item); } - [Fact] + [SkippableFact] public async Task ComputeHashAsync_ReturnsConsistentHash() { // Arrange _storage = CreateStorage(); @@ -456,7 +456,7 @@ public async Task ComputeHashAsync_ReturnsConsistentHash() { Assert.Equal(hash1, hash2); } - [Fact] + [SkippableFact] public async Task GetStorageInfoAsync_ReturnsStorageInfo() { // Arrange _storage = CreateStorage(); @@ -471,7 +471,7 @@ public async Task GetStorageInfoAsync_ReturnsStorageInfo() { Assert.Equal(-1, info.UsedSpace); } - [Fact] + [SkippableFact] public async Task WriteFileAsync_LargeFile_SupportsProgressReporting() { // Arrange _storage = CreateStorage(); @@ -495,7 +495,7 @@ public async Task WriteFileAsync_LargeFile_SupportsProgressReporting() { Assert.All(progressEvents, e => Assert.Equal(StorageOperation.Upload, e.Operation)); } - [Fact] + [SkippableFact] public async Task ReadFileAsync_LargeFile_SupportsProgressReporting() { // Arrange _storage = CreateStorage(); @@ -529,7 +529,7 @@ public async Task ReadFileAsync_LargeFile_SupportsProgressReporting() { Assert.All(progressEvents, e => Assert.Equal(StorageOperation.Download, e.Operation)); } - [Fact] + [SkippableFact] public async Task WriteFileAsync_CreatesParentDirectories() { // Arrange _storage = CreateStorage(); @@ -545,7 +545,7 @@ public async Task WriteFileAsync_CreatesParentDirectories() { Assert.True(exists); } - [Fact] + [SkippableFact] public async Task DeleteAsync_NonexistentItem_DoesNotThrow() { // Arrange _storage = CreateStorage(); @@ -554,7 +554,7 @@ public async Task DeleteAsync_NonexistentItem_DoesNotThrow() { await _storage.DeleteAsync("nonexistent_file.txt"); } - [Fact] + [SkippableFact] public async Task MoveAsync_NonexistentSource_ThrowsException() { // Arrange _storage = CreateStorage(); diff --git a/tests/SharpSync.Tests/Storage/S3StorageTests.cs b/tests/SharpSync.Tests/Storage/S3StorageTests.cs index 1e0b55d..9e7d419 100644 --- a/tests/SharpSync.Tests/Storage/S3StorageTests.cs +++ b/tests/SharpSync.Tests/Storage/S3StorageTests.cs @@ -141,7 +141,7 @@ private S3Storage CreateStorage() { } } - [Fact] + [SkippableFact] public async Task TestConnectionAsync_ValidCredentials_ReturnsTrue() { SkipIfIntegrationTestsDisabled(); @@ -155,7 +155,7 @@ public async Task TestConnectionAsync_ValidCredentials_ReturnsTrue() { Assert.True(result); } - [Fact] + [SkippableFact] public async Task CreateDirectoryAsync_CreatesDirectoryMarker() { // Arrange _storage = CreateStorage(); @@ -169,7 +169,7 @@ public async Task CreateDirectoryAsync_CreatesDirectoryMarker() { Assert.True(exists); } - [Fact] + [SkippableFact] public async Task WriteFileAsync_CreatesObject() { // Arrange _storage = CreateStorage(); @@ -185,7 +185,7 @@ public async Task WriteFileAsync_CreatesObject() { Assert.True(exists); } - [Fact] + [SkippableFact] public async Task WriteFileAsync_LargeFile_UsesMultipartUpload() { // Arrange _storage = CreateStorage(); @@ -208,7 +208,7 @@ public async Task WriteFileAsync_LargeFile_UsesMultipartUpload() { Assert.Equal(largeContent.Length, item.Size); } - [Fact] + [SkippableFact] public async Task ReadFileAsync_ReturnsObjectContent() { // Arrange _storage = CreateStorage(); @@ -227,7 +227,7 @@ public async Task ReadFileAsync_ReturnsObjectContent() { Assert.Equal(content, readContent); } - [Fact] + [SkippableFact] public async Task ReadFileAsync_NonexistentFile_ThrowsFileNotFoundException() { // Arrange _storage = CreateStorage(); @@ -237,7 +237,7 @@ public async Task ReadFileAsync_NonexistentFile_ThrowsFileNotFoundException() { await Assert.ThrowsAsync(async () => await _storage.ReadFileAsync(filePath)); } - [Fact] + [SkippableFact] public async Task ListItemsAsync_EmptyDirectory_ReturnsEmpty() { // Arrange _storage = CreateStorage(); @@ -249,7 +249,7 @@ public async Task ListItemsAsync_EmptyDirectory_ReturnsEmpty() { Assert.Empty(items); } - [Fact] + [SkippableFact] public async Task ListItemsAsync_WithFiles_ReturnsFiles() { // Arrange _storage = CreateStorage(); @@ -268,7 +268,7 @@ public async Task ListItemsAsync_WithFiles_ReturnsFiles() { Assert.Contains(items, i => i.Path == "subdir" && i.IsDirectory); } - [Fact] + [SkippableFact] public async Task ListItemsAsync_Subdirectory_ReturnsOnlySubdirectoryContents() { // Arrange _storage = CreateStorage(); @@ -288,7 +288,7 @@ public async Task ListItemsAsync_Subdirectory_ReturnsOnlySubdirectoryContents() Assert.Contains(items, i => i.Path == "subdir/file2.txt"); } - [Fact] + [SkippableFact] public async Task GetItemAsync_ExistingFile_ReturnsMetadata() { // Arrange _storage = CreateStorage(); @@ -309,7 +309,7 @@ public async Task GetItemAsync_ExistingFile_ReturnsMetadata() { Assert.NotNull(item.ETag); } - [Fact] + [SkippableFact] public async Task GetItemAsync_NonexistentFile_ReturnsNull() { // Arrange _storage = CreateStorage(); @@ -322,7 +322,7 @@ public async Task GetItemAsync_NonexistentFile_ReturnsNull() { Assert.Null(item); } - [Fact] + [SkippableFact] public async Task GetItemAsync_Directory_ReturnsDirectoryMetadata() { // Arrange _storage = CreateStorage(); @@ -339,7 +339,7 @@ public async Task GetItemAsync_Directory_ReturnsDirectoryMetadata() { Assert.Equal(0, item.Size); } - [Fact] + [SkippableFact] public async Task ExistsAsync_ExistingFile_ReturnsTrue() { // Arrange _storage = CreateStorage(); @@ -354,7 +354,7 @@ public async Task ExistsAsync_ExistingFile_ReturnsTrue() { Assert.True(exists); } - [Fact] + [SkippableFact] public async Task ExistsAsync_NonexistentFile_ReturnsFalse() { // Arrange _storage = CreateStorage(); @@ -367,7 +367,7 @@ public async Task ExistsAsync_NonexistentFile_ReturnsFalse() { Assert.False(exists); } - [Fact] + [SkippableFact] public async Task DeleteAsync_ExistingFile_DeletesFile() { // Arrange _storage = CreateStorage(); @@ -383,7 +383,7 @@ public async Task DeleteAsync_ExistingFile_DeletesFile() { Assert.False(exists); } - [Fact] + [SkippableFact] public async Task DeleteAsync_Directory_DeletesAllContents() { // Arrange _storage = CreateStorage(); @@ -406,7 +406,7 @@ public async Task DeleteAsync_Directory_DeletesAllContents() { Assert.False(exists3); } - [Fact] + [SkippableFact] public async Task DeleteAsync_NonexistentFile_CompletesSuccessfully() { // Arrange _storage = CreateStorage(); @@ -416,7 +416,7 @@ public async Task DeleteAsync_NonexistentFile_CompletesSuccessfully() { await _storage.DeleteAsync(filePath); } - [Fact] + [SkippableFact] public async Task MoveAsync_ExistingFile_MovesFile() { // Arrange _storage = CreateStorage(); @@ -443,7 +443,7 @@ public async Task MoveAsync_ExistingFile_MovesFile() { Assert.Equal(content, readContent); } - [Fact] + [SkippableFact] public async Task MoveAsync_NonexistentFile_ThrowsFileNotFoundException() { // Arrange _storage = CreateStorage(); @@ -454,7 +454,7 @@ public async Task MoveAsync_NonexistentFile_ThrowsFileNotFoundException() { await Assert.ThrowsAsync(async () => await _storage.MoveAsync(sourcePath, targetPath)); } - [Fact] + [SkippableFact] public async Task ComputeHashAsync_ExistingFile_ReturnsHash() { // Arrange _storage = CreateStorage(); @@ -475,7 +475,7 @@ public async Task ComputeHashAsync_ExistingFile_ReturnsHash() { Assert.Equal(hash, hash2); } - [Fact] + [SkippableFact] public async Task ComputeHashAsync_NonexistentFile_ThrowsFileNotFoundException() { // Arrange _storage = CreateStorage(); @@ -485,7 +485,7 @@ public async Task ComputeHashAsync_NonexistentFile_ThrowsFileNotFoundException() await Assert.ThrowsAsync(async () => await _storage.ComputeHashAsync(filePath)); } - [Fact] + [SkippableFact] public async Task GetStorageInfoAsync_ReturnsInfo() { // Arrange _storage = CreateStorage(); @@ -500,7 +500,7 @@ public async Task GetStorageInfoAsync_ReturnsInfo() { Assert.Equal(-1, info.UsedSpace); } - [Fact] + [SkippableFact] public async Task ProgressChanged_LargeFileUpload_RaisesEvents() { // Arrange _storage = CreateStorage(); @@ -530,7 +530,7 @@ public async Task ProgressChanged_LargeFileUpload_RaisesEvents() { Assert.Equal(100, finalEvent.PercentComplete); } - [Fact] + [SkippableFact] public async Task ProgressChanged_LargeFileDownload_RaisesEvents() { // Arrange _storage = CreateStorage(); diff --git a/tests/SharpSync.Tests/Storage/SftpStorageTests.cs b/tests/SharpSync.Tests/Storage/SftpStorageTests.cs index 17cef52..a1219e8 100644 --- a/tests/SharpSync.Tests/Storage/SftpStorageTests.cs +++ b/tests/SharpSync.Tests/Storage/SftpStorageTests.cs @@ -139,7 +139,7 @@ private SftpStorage CreateStorage() { } } - [Fact] + [SkippableFact] public async Task TestConnectionAsync_ValidCredentials_ReturnsTrue() { SkipIfIntegrationTestsDisabled(); @@ -153,7 +153,7 @@ public async Task TestConnectionAsync_ValidCredentials_ReturnsTrue() { Assert.True(result); } - [Fact] + [SkippableFact] public async Task TestConnectionAsync_InvalidCredentials_ReturnsFalse() { SkipIfIntegrationTestsDisabled(); @@ -167,7 +167,7 @@ public async Task TestConnectionAsync_InvalidCredentials_ReturnsFalse() { Assert.False(result); } - [Fact] + [SkippableFact] public async Task CreateDirectoryAsync_CreatesDirectory() { // Arrange _storage = CreateStorage(); @@ -181,7 +181,7 @@ public async Task CreateDirectoryAsync_CreatesDirectory() { Assert.True(exists); } - [Fact] + [SkippableFact] public async Task WriteFileAsync_CreatesFile() { // Arrange _storage = CreateStorage(); @@ -197,7 +197,7 @@ public async Task WriteFileAsync_CreatesFile() { Assert.True(exists); } - [Fact] + [SkippableFact] public async Task ReadFileAsync_ReturnsFileContent() { // Arrange _storage = CreateStorage(); @@ -216,7 +216,7 @@ public async Task ReadFileAsync_ReturnsFileContent() { Assert.Equal(content, result); } - [Fact] + [SkippableFact] public async Task ReadFileAsync_NonexistentFile_ThrowsException() { // Arrange _storage = CreateStorage(); @@ -225,7 +225,7 @@ public async Task ReadFileAsync_NonexistentFile_ThrowsException() { await Assert.ThrowsAsync(() => _storage.ReadFileAsync("nonexistent.txt")); } - [Fact] + [SkippableFact] public async Task ExistsAsync_ExistingFile_ReturnsTrue() { // Arrange _storage = CreateStorage(); @@ -240,7 +240,7 @@ public async Task ExistsAsync_ExistingFile_ReturnsTrue() { Assert.True(result); } - [Fact] + [SkippableFact] public async Task ExistsAsync_NonexistentFile_ReturnsFalse() { // Arrange _storage = CreateStorage(); @@ -252,7 +252,7 @@ public async Task ExistsAsync_NonexistentFile_ReturnsFalse() { Assert.False(result); } - [Fact] + [SkippableFact] public async Task DeleteAsync_ExistingFile_DeletesFile() { // Arrange _storage = CreateStorage(); @@ -268,7 +268,7 @@ public async Task DeleteAsync_ExistingFile_DeletesFile() { Assert.False(exists); } - [Fact] + [SkippableFact] public async Task DeleteAsync_Directory_DeletesDirectory() { // Arrange _storage = CreateStorage(); @@ -283,7 +283,7 @@ public async Task DeleteAsync_Directory_DeletesDirectory() { Assert.False(exists); } - [Fact] + [SkippableFact] public async Task DeleteAsync_DirectoryWithContents_DeletesRecursively() { // Arrange _storage = CreateStorage(); @@ -302,7 +302,7 @@ public async Task DeleteAsync_DirectoryWithContents_DeletesRecursively() { Assert.False(exists); } - [Fact] + [SkippableFact] public async Task MoveAsync_MovesFile() { // Arrange _storage = CreateStorage(); @@ -330,7 +330,7 @@ public async Task MoveAsync_MovesFile() { Assert.Equal(content, result); } - [Fact] + [SkippableFact] public async Task MoveAsync_ToSubdirectory_MovesCorrectly() { // Arrange _storage = CreateStorage(); @@ -352,7 +352,7 @@ public async Task MoveAsync_ToSubdirectory_MovesCorrectly() { Assert.True(targetExists); } - [Fact] + [SkippableFact] public async Task ListItemsAsync_ReturnsItems() { // Arrange _storage = CreateStorage(); @@ -382,7 +382,7 @@ public async Task ListItemsAsync_ReturnsItems() { Assert.True(directory.IsDirectory); } - [Fact] + [SkippableFact] public async Task GetItemAsync_ExistingFile_ReturnsItem() { // Arrange _storage = CreateStorage(); @@ -402,7 +402,7 @@ public async Task GetItemAsync_ExistingFile_ReturnsItem() { Assert.Equal(content.Length, item.Size); } - [Fact] + [SkippableFact] public async Task GetItemAsync_Directory_ReturnsDirectoryItem() { // Arrange _storage = CreateStorage(); @@ -418,7 +418,7 @@ public async Task GetItemAsync_Directory_ReturnsDirectoryItem() { Assert.Equal(dirPath, item.Path); } - [Fact] + [SkippableFact] public async Task GetItemAsync_NonexistentItem_ReturnsNull() { // Arrange _storage = CreateStorage(); @@ -430,7 +430,7 @@ public async Task GetItemAsync_NonexistentItem_ReturnsNull() { Assert.Null(item); } - [Fact] + [SkippableFact] public async Task ComputeHashAsync_ReturnsConsistentHash() { // Arrange _storage = CreateStorage(); @@ -450,7 +450,7 @@ public async Task ComputeHashAsync_ReturnsConsistentHash() { Assert.Equal(hash1, hash2); } - [Fact] + [SkippableFact] public async Task ComputeHashAsync_DifferentContent_DifferentHashes() { // Arrange _storage = CreateStorage(); @@ -471,7 +471,7 @@ public async Task ComputeHashAsync_DifferentContent_DifferentHashes() { Assert.NotEqual(hash1, hash2); } - [Fact] + [SkippableFact] public async Task WriteFileAsync_LargeFile_HandlesCorrectly() { // Arrange _storage = CreateStorage(); @@ -492,7 +492,7 @@ public async Task WriteFileAsync_LargeFile_HandlesCorrectly() { Assert.Equal(largeContent.Length, item.Size); } - [Fact] + [SkippableFact] public async Task ReadFileAsync_LargeFile_ReadsCorrectly() { // Arrange _storage = CreateStorage(); @@ -514,7 +514,7 @@ public async Task ReadFileAsync_LargeFile_ReadsCorrectly() { Assert.Equal(largeContent, readContent); } - [Fact] + [SkippableFact] public async Task WriteFileAsync_EmptyFile_CreatesEmptyFile() { // Arrange _storage = CreateStorage(); @@ -533,7 +533,7 @@ public async Task WriteFileAsync_EmptyFile_CreatesEmptyFile() { Assert.Equal(0, item.Size); } - [Fact] + [SkippableFact] public async Task WriteFileAsync_OverwritesExistingFile() { // Arrange _storage = CreateStorage(); @@ -554,7 +554,7 @@ public async Task WriteFileAsync_OverwritesExistingFile() { Assert.Equal(newContent, result); } - [Fact] + [SkippableFact] public async Task CreateDirectoryAsync_AlreadyExists_DoesNotThrow() { // Arrange _storage = CreateStorage(); @@ -569,7 +569,7 @@ public async Task CreateDirectoryAsync_AlreadyExists_DoesNotThrow() { Assert.True(exists); } - [Fact] + [SkippableFact] public async Task ListItemsAsync_EmptyDirectory_ReturnsEmpty() { // Arrange _storage = CreateStorage(); @@ -583,7 +583,7 @@ public async Task ListItemsAsync_EmptyDirectory_ReturnsEmpty() { Assert.Empty(items); } - [Fact] + [SkippableFact] public async Task GetStorageInfoAsync_ReturnsInfo() { // Arrange _storage = CreateStorage(); @@ -596,7 +596,7 @@ public async Task GetStorageInfoAsync_ReturnsInfo() { // SFTP doesn't always support storage info, so we just verify it doesn't throw } - [Fact] + [SkippableFact] public async Task ProgressChanged_LargeFile_RaisesEvents() { // Arrange _storage = CreateStorage(); @@ -617,7 +617,7 @@ public async Task ProgressChanged_LargeFile_RaisesEvents() { Assert.All(progressEvents, e => Assert.Equal(filePath, e.Path)); } - [Theory] + [SkippableTheory] [InlineData("file with spaces.txt")] [InlineData("file-with-dashes.txt")] [InlineData("file_with_underscores.txt")] @@ -636,7 +636,7 @@ public async Task WriteFileAsync_SpecialFileNames_HandlesCorrectly(string fileNa Assert.True(exists); } - [Fact] + [SkippableFact] public async Task GetItemAsync_IncludesPermissions() { // Arrange _storage = CreateStorage();