<div dir="ltr">TestDevNull fails on Windows, so I disabled it in r236126. Changing it to open "NUL" instead of "/dev/null" doesn't fix it either.</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Apr 29, 2015 at 7:53 AM, Rafael Espindola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: rafael<br>
Date: Wed Apr 29 09:53:25 2015<br>
New Revision: 236106<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=236106&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=236106&view=rev</a><br>
Log:<br>
Relax assert to avoid spurious failures with /dev/null.<br>
<br>
Modified:<br>
    llvm/trunk/include/llvm/Support/raw_ostream.h<br>
    llvm/trunk/unittests/Support/raw_pwrite_stream_test.cpp<br>
<br>
Modified: llvm/trunk/include/llvm/Support/raw_ostream.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/raw_ostream.h?rev=236106&r1=236105&r2=236106&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/raw_ostream.h?rev=236106&r1=236105&r2=236106&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/Support/raw_ostream.h (original)<br>
+++ llvm/trunk/include/llvm/Support/raw_ostream.h Wed Apr 29 09:53:25 2015<br>
@@ -323,7 +323,13 @@ public:<br>
   explicit raw_pwrite_stream(bool Unbuffered = false)<br>
       : raw_ostream(Unbuffered) {}<br>
   void pwrite(const char *Ptr, size_t Size, uint64_t Offset) {<br>
-    assert(Size + Offset <= tell() && "We don't support extending the stream");<br>
+#ifndef NDBEBUG<br>
+    uint64_t Pos = tell();<br>
+    // /dev/null always reports a pos of 0, so we cannot perform this check<br>
+    // in that case.<br>
+    if (Pos)<br>
+      assert(Size + Offset <= Pos && "We don't support extending the stream");<br>
+#endif<br>
     pwrite_impl(Ptr, Size, Offset);<br>
   }<br>
 };<br>
<br>
Modified: llvm/trunk/unittests/Support/raw_pwrite_stream_test.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Support/raw_pwrite_stream_test.cpp?rev=236106&r1=236105&r2=236106&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Support/raw_pwrite_stream_test.cpp?rev=236106&r1=236105&r2=236106&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/unittests/Support/raw_pwrite_stream_test.cpp (original)<br>
+++ llvm/trunk/unittests/Support/raw_pwrite_stream_test.cpp Wed Apr 29 09:53:25 2015<br>
@@ -9,6 +9,7 @@<br>
<br>
 #include "gtest/gtest.h"<br>
 #include "llvm/ADT/SmallString.h"<br>
+#include "llvm/Support/FileSystem.h"<br>
 #include "llvm/Support/raw_ostream.h"<br>
<br>
 using namespace llvm;<br>
@@ -30,4 +31,32 @@ TEST(raw_pwrite_ostreamTest, TestSVector<br>
 #endif<br>
 #endif<br>
 }<br>
+<br>
+TEST(raw_pwrite_ostreamTest, TestFD) {<br>
+  SmallString<64> Path;<br>
+  int FD;<br>
+  sys::fs::createTemporaryFile("foo", "bar", FD, Path);<br>
+  raw_fd_ostream OS(FD, true);<br>
+  OS << "abcd";<br>
+  StringRef Test = "test";<br>
+  OS.pwrite(Test.data(), Test.size(), 0);<br>
+  OS.pwrite(Test.data(), Test.size(), 0);<br>
+<br>
+#ifdef GTEST_HAS_DEATH_TEST<br>
+#ifndef NDEBUG<br>
+  EXPECT_DEATH(OS.pwrite("12345", 5, 0),<br>
+               "We don't support extending the stream");<br>
+#endif<br>
+#endif<br>
+}<br>
+<br>
+TEST(raw_pwrite_ostreamTest, TestDevNull) {<br>
+  int FD;<br>
+  sys::fs::openFileForWrite("/dev/null", FD, sys::fs::F_None);<br>
+  raw_fd_ostream OS(FD, true);<br>
+  OS << "abcd";<br>
+  StringRef Test = "test";<br>
+  OS.pwrite(Test.data(), Test.size(), 0);<br>
+  OS.pwrite(Test.data(), Test.size(), 0);<br>
+}<br>
 }<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>