55using System.Linq;
66using System.Security.Cryptography;
77using Xunit;
8+ using Xunit.Abstractions;
89
910namespace System.IO.Tests
1011{
@@ -236,6 +237,17 @@ public void WindowsAlternateDataStream(string defaultStream, string alternateStr
236237 File.WriteAllText(testFile2DefaultStream, "Bar");
237238 Assert.Throws<IOException>(() => Copy(testFile2DefaultStream, testFileAlternateStream));
238239
240+ try
241+ {
242+ Copy(testFile2DefaultStream, testFileAlternateStream);
243+ Assert.Fail();
244+ }
245+ catch (IOException e)
246+ {
247+ // Error code for "the file exists".
248+ Assert.Equal(-2147024816, e.HResult);
249+ }
250+
239251 // This always throws as you can't copy an alternate stream out (oddly)
240252 Assert.Throws<IOException>(() => Copy(testFileAlternateStream, testFile2));
241253 Assert.Throws<IOException>(() => Copy(testFileAlternateStream, testFile2 + alternateStream));
@@ -275,6 +287,12 @@ public void OverwriteCopyOntoLink()
275287
276288 public class File_Copy_str_str_b : File_Copy_str_str
277289 {
290+ private ITestOutputHelper _output;
291+ public File_Copy_str_str_b(ITestOutputHelper output)
292+ {
293+ _output = output;
294+ }
295+
278296 protected override void Copy(string source, string dest)
279297 {
280298 File.Copy(source, dest, false);
@@ -352,6 +370,8 @@ public void WindowsAlternateDataStreamOverwrite(string defaultStream, string alt
352370
353371 // Copy the default stream into an alternate stream
354372 File.WriteAllText(testFileDefaultStream, "Foo");
373+ Assert.Equal("Foo", File.ReadAllText(testFileDefaultStream));
374+ _output.WriteLine("Copying default stream into alternate stream.");
355375 Copy(testFileDefaultStream, testFileAlternateStream);
356376 Assert.Equal(testFile, testDirectory.GetFiles().Single().FullName);
357377 Assert.Equal("Foo", File.ReadAllText(testFileDefaultStream));
@@ -361,6 +381,11 @@ public void WindowsAlternateDataStreamOverwrite(string defaultStream, string alt
361381 string testFile2 = Path.Combine(testDirectory.FullName, GetTestFileName());
362382 string testFile2DefaultStream = testFile2 + defaultStream;
363383 File.WriteAllText(testFile2DefaultStream, "Bar");
384+ Assert.Equal("Bar", File.ReadAllText(testFile2DefaultStream));
385+ Assert.Equal("Foo", File.ReadAllText(testFileAlternateStream));
386+ _output.WriteLine($"Attributes for '{testFile2DefaultStream}': {File.GetAttributes(testFile2DefaultStream)}");
387+ _output.WriteLine($"Attributes for '{testFileAlternateStream}': {File.GetAttributes(testFileAlternateStream)}");
388+ _output.WriteLine("Overwriting alternate stream.");
364389 Copy(testFile2DefaultStream, testFileAlternateStream, overwrite: true);
365390 Assert.Equal("Foo", File.ReadAllText(testFileDefaultStream));
366391 Assert.Equal("Bar", File.ReadAllText(testFileAlternateStream));
0 commit comments