<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>