bugfix: Python 2.6 parsing error (#11867)
Apparently shlex.split can't deal with unicode encoded characters in Python2.6. The solution is to convert to str before calling the function.
This commit is contained in:
		
				
					committed by
					
						
						Todd Gamblin
					
				
			
			
				
	
			
			
			
						parent
						
							172fcb0225
						
					
				
				
					commit
					ab4b5deb97
				
			@@ -143,7 +143,7 @@ def expect(self, id):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def setup(self, text):
 | 
					    def setup(self, text):
 | 
				
			||||||
        if isinstance(text, string_types):
 | 
					        if isinstance(text, string_types):
 | 
				
			||||||
            text = shlex.split(text)
 | 
					            text = shlex.split(str(text))
 | 
				
			||||||
        self.text = text
 | 
					        self.text = text
 | 
				
			||||||
        self.push_tokens(self.lexer.lex(text))
 | 
					        self.push_tokens(self.lexer.lex(text))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,10 +3,7 @@
 | 
				
			|||||||
#
 | 
					#
 | 
				
			||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
 | 
					# SPDX-License-Identifier: (Apache-2.0 OR MIT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import pytest
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import json
 | 
					import json
 | 
				
			||||||
import sys
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
from jsonschema import validate
 | 
					from jsonschema import validate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -39,11 +36,6 @@ def test_specs_deps(tmpdir, config):
 | 
				
			|||||||
    validate(deps_object, specs_deps_schema)
 | 
					    validate(deps_object, specs_deps_schema)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@pytest.mark.skipif(
 | 
					 | 
				
			||||||
    sys.version_info[:2] < (2, 7),
 | 
					 | 
				
			||||||
    reason="For some reason in Python2.6 we get a utf-32 string "
 | 
					 | 
				
			||||||
           "that can't be parsed"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
def test_specs_staging(config):
 | 
					def test_specs_staging(config):
 | 
				
			||||||
    """Make sure we achieve the best possible staging for the following
 | 
					    """Make sure we achieve the best possible staging for the following
 | 
				
			||||||
spec DAG::
 | 
					spec DAG::
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -97,7 +97,7 @@ def check_parse(self, expected, spec=None):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def check_lex(self, tokens, spec):
 | 
					    def check_lex(self, tokens, spec):
 | 
				
			||||||
        """Check that the provided spec parses to the provided token list."""
 | 
					        """Check that the provided spec parses to the provided token list."""
 | 
				
			||||||
        spec = shlex.split(spec)
 | 
					        spec = shlex.split(str(spec))
 | 
				
			||||||
        lex_output = sp.SpecLexer().lex(spec)
 | 
					        lex_output = sp.SpecLexer().lex(spec)
 | 
				
			||||||
        for tok, spec_tok in zip(tokens, lex_output):
 | 
					        for tok, spec_tok in zip(tokens, lex_output):
 | 
				
			||||||
            if tok.type == sp.ID or tok.type == sp.VAL:
 | 
					            if tok.type == sp.ID or tok.type == sp.VAL:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,7 +41,7 @@ def _find_exe_from_env_var(var):
 | 
				
			|||||||
        return None, []
 | 
					        return None, []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # split env var into executable and args if needed
 | 
					    # split env var into executable and args if needed
 | 
				
			||||||
    args = shlex.split(exe)
 | 
					    args = shlex.split(str(exe))
 | 
				
			||||||
    if not args:
 | 
					    if not args:
 | 
				
			||||||
        return None, []
 | 
					        return None, []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@ class Executable(object):
 | 
				
			|||||||
    """Class representing a program that can be run on the command line."""
 | 
					    """Class representing a program that can be run on the command line."""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __init__(self, name):
 | 
					    def __init__(self, name):
 | 
				
			||||||
        self.exe = shlex.split(name)
 | 
					        self.exe = shlex.split(str(name))
 | 
				
			||||||
        self.default_env = {}
 | 
					        self.default_env = {}
 | 
				
			||||||
        self.returncode = None
 | 
					        self.returncode = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user