aaron.ballman added a comment.

In D90109#2360538 <https://reviews.llvm.org/D90109#2360538>, @dsanders11 wrote:

>> What issues did you run into regarding testing, because I feel like the 
>> patch should have test coverage (esp given that color vs ANSI escape codes 
>> are a bit of an oddity to reason about)?
>
> I'm unable to create a debug build, due to issues with LLVM and Visual Studio 
> 16.7 
> <https://developercommunity.visualstudio.com/content/problem/1144371/failed-to-compile-llvm-9011001-in-vs-2019-1670.html>.
>  There's Google results on the issue, but I don't see any solution and I'm 
> using `master` and the latest version of Visual Studio. It seems you can (and 
> perhaps should?) run the tests with a Release build, so I've gone ahead and 
> done that.

Oh, how neat. The bug you linked to was closed as a dup of another bug. The 
other bug was then closed as something that's not in scope with the general 
product direction, whatever that means.

> I also wasn't seeing any of the test targets being made by CMake until I 
> included `-DLLVM_INCLUDE_TESTS=On`, I think maybe I set that to off when 
> trying to determine why the debug build was failing and didn't realize that 
> would stay in `CMakeCache.txt` until I set it back on.
>
> Removing `REQUIRES: ansi-escape-sequences` from the 
> `clang-tidy/infrastructure/use-color.cpp` test does run it on Windows and 
> does pass as expected with this change. Is that all you're looking for with 
> test coverage?

Yeah, that would be reasonable test coverage.



================
Comment at: llvm/lib/Support/Windows/Process.inc:330
     DWORD Mode;
-    GetConsoleMode(Console, &Mode);
-    Mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
-    SetConsoleMode(Console, Mode);
+    if (GetConsoleMode(Console, &Mode) != 0) {
+      Mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
----------------
dsanders11 wrote:
> aaron.ballman wrote:
> > dsanders11 wrote:
> > > Fixes a crash when calling UseANSIEscapeCodes if standard out isn't a 
> > > console.
> > If this fails, do we still want to set `UseANSI` to `enable` below? Similar 
> > if setting the mode fails?
> If we don't set `UseANSI` below then this patch won't do what it's intended 
> to do, since piped stdoutwouldn't have ANSI escape codes. This code block is 
> assuming that standard output is a console, so `GetConsoleMode` won't work on 
> redirected stdout.
> 
> You could use `llvm::sys::Process::StandardOutIsDisplayed()` to check, but 
> for Windows that's actually just doing the same thing, doing a 
> `GetConsoleMode` call and seeing if it succeeds or not.
> 
> For this patch to do what it's intended to do, `UseANSIEscapeCodes` needs to 
> turn on ANSI escape codes even if there isn't a console.
Ah, thank you for the explanation -- my complaint is more that 
`UseANSIEscapeCodes` can fail but doesn't alert the caller to the failure. 
However, that's not a new issue, so I think it's fine as-is.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D90109/new/

https://reviews.llvm.org/D90109

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to