Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/tests/pybin/tools.py

    red45af6 r552f5cb  
    99import stat
    1010import sys
     11import fileinput
    1112
    1213from pybin import settings
     
    3334                out, err = proc.communicate()
    3435                return proc.returncode, out
     36
     37def is_ascii(fname):
     38        if not os.path.isfile(fname):
     39                return False
     40
     41        code, out = sh("file %s" % fname, print2stdout = False)
     42        if code != 0:
     43                return False
     44
     45        match = re.search(".*: (.*)", out)
     46
     47        if not match:
     48                return False
     49
     50        return match.group(1) == "ASCII text"
    3551
    3652# Remove 1 or more files silently
     
    105121# helper function to replace patterns in a file
    106122def file_replace(fname, pat, s_after):
    107     # first, see if the pattern is even in the file.
    108     with open(fname) as f:
    109         if not any(re.search(pat, line) for line in f):
    110             return # pattern does not occur in file so we are done.
    111 
    112     # pattern is in the file, so perform replace operation.
    113     with open(fname) as f:
    114         out_fname = fname + ".tmp"
    115         out = open(out_fname, "w")
    116         for line in f:
    117             out.write(re.sub(pat, s_after, line))
    118         out.close()
    119         os.rename(out_fname, fname)
     123        file = fileinput.FileInput(fname, inplace=True, backup='.bak')
     124        for line in file:
     125                print(line.replace(pat, s_after), end='')
     126        file.close()
    120127
    121128# helper function to check if a files contains only a specific string
     
    140147# transform path to canonical form
    141148def canonicalPath(path):
    142         return os.path.join('.', os.path.normpath(path) )
     149        abspath = os.path.abspath(__main__.__file__)
     150        dname = os.path.dirname(abspath)
     151        return os.path.join(dname, os.path.normpath(path) )
    143152
    144153# compare path even if form is different
     
    151160                for name in names:
    152161                        path = os.path.join(dirname, name)
    153 
    154162                        op( path )
    155163
    156164        # Start the walk
    157         os.path.walk('.', step, '')
     165        abspath = os.path.abspath(__main__.__file__)
     166        dname = os.path.dirname(abspath)
     167        os.path.walk(dname, step, '')
    158168
    159169################################################################################
    160170#               system
    161171################################################################################
    162 
    163 # parses the Makefile to find the machine type (32-bit / 64-bit)
    164 def getMachineType():
    165         sh('echo "void ?{}(int&a,int b){}int main(){return 0;}" > .dummy.c')
    166         ret, out = make('.dummy', silent = True)
    167 
    168         if ret != 0:
    169                 print("Failed to identify architecture:")
    170                 print(out)
    171                 print("Stopping")
    172                 rm( (".dummy.c",".dummy") )
    173                 sys.exit(1)
    174 
    175         _, out = sh("file .dummy", print2stdout=False)
    176         rm( (".dummy.c",".dummy") )
    177 
    178         if settings.dry_run :
    179                 return 'x64'
    180 
    181         return re.search(r"[^,]+,([^,]+),", out).group(1).strip()
    182 
    183172# count number of jobs to create
    184173def jobCount( options, tests ):
     
    244233        else:
    245234                print(text)
    246 
    247 settings.set_machine_default( getMachineType )
Note: See TracChangeset for help on using the changeset viewer.