-
Edward Lemur authored
This is a reland of 5d284fdf Always convert the input to bytes and write to sys.stdout (in Python2) and sys.stdout.buffer (in Python 3). Original change's description: > gclient_utils: buffer output as bytestrings in Annotated > > In Python 3 byestrings and normal strings can't be concatenated. > To fix this we buffer as bytestrings in the Annotated wrapper. > We can't decode to a string because the output might come byte-by-byte, so it doesn't work with Unicode characters like
✔ . > > Also had to update gclient_test.py, where double-wrapping stdout with Annotated caused made output not work and include_zero=True working caused other unintended side-effects. > > Example error from "fetch chromium": > Traceback (most recent call last): > File "C:\Google\depot_tools\gclient_scm.py", line 1045, in _Clone > self._Run(clone_cmd, options, cwd=self._root_dir, retry=True, > File "C:\Google\depot_tools\gclient_scm.py", line 1370, in _Run > gclient_utils.CheckCallAndFilter(cmd, env=env, **kwargs) > File "C:\Google\depot_tools\gclient_utils.py", line 583, in CheckCallAndFilter > show_header_if_necessary(needs_header, attempt) > File "C:\Google\depot_tools\gclient_utils.py", line 533, in show_header_if_necessary > stdout_write(header.encode()) > File "C:\Google\depot_tools\gclient_utils.py", line 391, in write > obj[0] += out > TypeError: can only concatenate str (not "bytes") to str > > Bug: 984182 > Change-Id: If7037d30e9faf524f2405258281f6e6cd0bcdcae > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1778745 > Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org> > Reviewed-by: Edward Lesmes <ehmaldonado@chromium.org> > Auto-Submit: Raul Tambre <raul@tambre.ee> Bug: 984182 Change-Id: Ifafb5e16a517c4c38dd4c9d5c6d4c3f994838bc9 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1845504Reviewed-by: Anthony Polito <apolito@google.com> Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>cb1eb489