mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-26 04:11:25 -07:00
Fix CaptureStd in validate-modules to work on both py3 and py2 (#35060)
This commit is contained in:
parent
d8329e530c
commit
3742ff9230
1 changed files with 10 additions and 3 deletions
|
@ -24,6 +24,13 @@ from io import BytesIO, TextIOWrapper
|
||||||
import yaml
|
import yaml
|
||||||
import yaml.reader
|
import yaml.reader
|
||||||
|
|
||||||
|
from ansible.module_utils._text import to_text
|
||||||
|
|
||||||
|
|
||||||
|
class AnsibleTextIOWrapper(TextIOWrapper):
|
||||||
|
def write(self, s):
|
||||||
|
super(AnsibleTextIOWrapper, self).write(to_text(s, self.encoding, errors='replace'))
|
||||||
|
|
||||||
|
|
||||||
def find_globals(g, tree):
|
def find_globals(g, tree):
|
||||||
"""Uses AST to find globals in an ast tree"""
|
"""Uses AST to find globals in an ast tree"""
|
||||||
|
@ -54,8 +61,8 @@ class CaptureStd():
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
self.sys_stdout = sys.stdout
|
self.sys_stdout = sys.stdout
|
||||||
self.sys_stderr = sys.stderr
|
self.sys_stderr = sys.stderr
|
||||||
sys.stdout = self.stdout = TextIOWrapper(BytesIO(), encoding=self.sys_stdout.encoding)
|
sys.stdout = self.stdout = AnsibleTextIOWrapper(BytesIO(), encoding=self.sys_stdout.encoding)
|
||||||
sys.stderr = self.stderr = TextIOWrapper(BytesIO(), encoding=self.sys_stderr.encoding)
|
sys.stderr = self.stderr = AnsibleTextIOWrapper(BytesIO(), encoding=self.sys_stderr.encoding)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def __exit__(self, exc_type, exc_value, traceback):
|
def __exit__(self, exc_type, exc_value, traceback):
|
||||||
|
@ -65,7 +72,7 @@ class CaptureStd():
|
||||||
def get(self):
|
def get(self):
|
||||||
"""Return ``(stdout, stderr)``"""
|
"""Return ``(stdout, stderr)``"""
|
||||||
|
|
||||||
return self.stdout.getvalue(), self.stderr.getvalue()
|
return self.stdout.buffer.getvalue(), self.stderr.buffer.getvalue()
|
||||||
|
|
||||||
|
|
||||||
def parse_yaml(value, lineno, module, name, load_all=False):
|
def parse_yaml(value, lineno, module, name, load_all=False):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue