[lit] Fix several Python 2/3 compatibility issues and tests

- In Python 2.x, basestring is the base string type, but in 
  Python 3.x basestring is not defined and instead str includes 
  unicode strings.

- When Python is in a path that includes spaces, it needs to 
  be specified with quotes in the test files for it to run.

- The cache.ll test relies on files of a specific size being 
  created by Python, but on some versions of Windows the 
  files that are created by the current code are one byte 
  larger than expected. To fix the test, update file creation 
  to always make files of the expected size.

Patch by Stella Stamenova!

llvm-svn: 329466
This commit is contained in:
Aaron Smith 2018-04-07 00:21:28 +00:00
parent 045c514fb4
commit e5ee89c0d3
3 changed files with 18 additions and 12 deletions

View File

@ -38,7 +38,7 @@
; utils/bisect) to locate the optimization that inlines the call to
; f2() in f3().
; RUN: %python %S/opt-bisect-helper.py --start=0 --end=256 --optcmd=opt \
; RUN: '%python' %S/opt-bisect-helper.py --start=0 --end=256 --optcmd=opt \
; RUN: --filecheckcmd=FileCheck --test=%s \
; RUN: --prefix=CHECK-BISECT-INLINE-HELPER \
; RUN: | FileCheck %s --check-prefix=CHECK-BISECT-INLINE-RESULT

View File

@ -85,11 +85,11 @@
; RUN: rm -Rf %t.cache && mkdir %t.cache
; Create cache files with different sizes.
; Only 8B, 16B and 76B files should stay after pruning.
; RUN: %python -c "print(' ' * 1023)" > %t.cache/llvmcache-foo-1024
; RUN: %python -c "print(' ' * 15)" > %t.cache/llvmcache-foo-16
; RUN: %python -c "print(' ' * 7)" > %t.cache/llvmcache-foo-8
; RUN: %python -c "print(' ' * 75)" > %t.cache/llvmcache-foo-76
; RUN: %python -c "print(' ' * 76)" > %t.cache/llvmcache-foo-77
; RUN: "%python" -c "with open(r'%t.cache/llvmcache-foo-1024', 'w') as file: file.truncate(1024)"
; RUN: "%python" -c "with open(r'%t.cache/llvmcache-foo-16', 'w') as file: file.truncate(16)"
; RUN: "%python" -c "with open(r'%t.cache/llvmcache-foo-8', 'w') as file: file.truncate(8)"
; RUN: "%python" -c "with open(r'%t.cache/llvmcache-foo-76', 'w') as file: file.truncate(76)"
; RUN: "%python" -c "with open(r'%t.cache/llvmcache-foo-77', 'w') as file: file.truncate(77)"
; RUN: llvm-lto -thinlto-action=run -exported-symbol=globalfunc %t2.bc %t.bc -thinlto-cache-dir %t.cache --thinlto-cache-max-size-bytes 100
; RUN: ls %t.cache/llvmcache-foo-16
; RUN: ls %t.cache/llvmcache-foo-8
@ -102,11 +102,11 @@
; RUN: rm -Rf %t.cache && mkdir %t.cache
; Create cache files with different sizes.
; Only 8B and 16B files should stay after pruning.
; RUN: %python -c "print(' ' * 1023)" > %t.cache/llvmcache-foo-1024
; RUN: %python -c "print(' ' * 15)" > %t.cache/llvmcache-foo-16
; RUN: %python -c "print(' ' * 7)" > %t.cache/llvmcache-foo-8
; RUN: %python -c "print(' ' * 75)" > %t.cache/llvmcache-foo-76
; RUN: %python -c "print(' ' * 76)" > %t.cache/llvmcache-foo-77
; RUN: "%python" -c "print(' ' * 1023)" > %t.cache/llvmcache-foo-1024
; RUN: "%python" -c "print(' ' * 15)" > %t.cache/llvmcache-foo-16
; RUN: "%python" -c "print(' ' * 7)" > %t.cache/llvmcache-foo-8
; RUN: "%python" -c "print(' ' * 75)" > %t.cache/llvmcache-foo-76
; RUN: "%python" -c "print(' ' * 76)" > %t.cache/llvmcache-foo-77
; RUN: llvm-lto -thinlto-action=run -exported-symbol=globalfunc %t2.bc %t.bc -thinlto-cache-dir %t.cache --thinlto-cache-max-size-files 2
; RUN: ls %t.cache/llvmcache-foo-16
; RUN: ls %t.cache/llvmcache-foo-8

View File

@ -845,8 +845,14 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper):
# Replace uses of /dev/null with temporary files.
if kAvoidDevNull:
# In Python 2.x, basestring is the base class for all string (including unicode)
# In Python 3.x, basestring no longer exist and str is always unicode
try:
str_type = basestring
except NameError:
str_type = str
for i,arg in enumerate(args):
if isinstance(arg, basestring) and kDevNull in arg:
if isinstance(arg, str_type) and kDevNull in arg:
f = tempfile.NamedTemporaryFile(delete=False)
f.close()
named_temp_files.append(f.name)