Changeset f3b9efc for src/tests/pybin


Ignore:
Timestamp:
Dec 5, 2017, 1:29:12 PM (7 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
86ad276
Parents:
099a40d
Message:

Tests now properly work with multiple architectures

Location:
src/tests/pybin
Files:
3 edited

Legend:

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

    r099a40d rf3b9efc  
     1import sys
    12
    23class Architecture:
    3         def __init__(self, cmd):
    4                 if cmd:
     4        KnownArchitectures = {
     5                'x64'                   : 'x64',
     6                'x86-64'                : 'x64',
     7                'x86'                   : 'x86',
     8                'i386'          : 'x86',
     9                'i486'          : 'x86',
     10                'i686'          : 'x86',
     11                'Intel 80386'   : 'x86',
     12                'arm'                   : 'arm',
     13                'ARM'                   : 'arm',
     14        }
     15
     16        def __init__(self, arch):
     17                if arch:
    518                        self.cross_compile = True
    6                         self.target = cmd
     19                        try:
     20                                self.target = Architecture.makeCanonical( arch )
     21                        except KeyError:
     22                                print("Unkown architecture %s" % arch)
     23                                sys.exit(1)
    724                else:
    825                        self.cross_compile = False
    9                         self.target = 'x64'
     26                        try:
     27                                arch = machine_default()
     28                                self.target = Architecture.makeCanonical( arch )
     29                        except KeyError:
     30                                print("Running on unkown architecture %s" % arch)
     31                                sys.exit(1)
    1032
    11         def toString(self):
    12                 return self.target
     33                self.string = self.target
     34
     35        def update(self):
     36                if not self.cross_compile:
     37                        self.target = machine_default()
     38                        self.string = self.target
     39                        print("updated to %s" % self.target)
     40
     41        def match(self, arch):
     42                return True if not arch else self.target == arch
     43
     44        @classmethod
     45        def makeCanonical(_, arch):
     46                return Architecture.KnownArchitectures[arch]
     47
     48
     49class Debug:
     50        def __init__(self, value):
     51                self.string = "debug" if value else "no debug"
     52                self.flags  = """DEBUG_FLAGS="%s" """ % ("-debug" if value else "-nodebug")
    1353
    1454def init( options ):
     
    2060        global debugFlag
    2161
    22         arch       = Architecture(options.arch)
    2362        dry_run    = options.dry_run
    2463        generating = options.regenerate_expected
    25         make       = './make_command_not_initialized'
    26         debug        = "debug" if options.debug else "no debug"
    27         debugFlag  = """DEBUG_FLAGS="%s" """ % ("-debug" if debug else "-nodebug")
     64        make       = 'make'
     65        debug        = Debug(options.debug)
     66        arch       = Architecture(options.arch)
    2867
    2968def updateMakeCmd(force, jobs):
    3069        global make
    3170
    32         make = "make" if force else ("make -j%i" % jobs)
     71        make = "make" if not force else ("make -j%i" % jobs)
     72
     73
     74def set_machine_default( func ):
     75        global machine_default
     76
     77        machine_default = func
  • src/tests/pybin/test_run.py

    r099a40d rf3b9efc  
    2121
    2222        def expect(self):
    23                 return ("%s/.expect/%s.txt" % (self.path, self.name))
     23                return ("%s/.expect/%s%s.txt" % (self.path, self.name, '' if not self.arch else ".%s" % self.arch))
    2424
    2525        def error_log(self):
     
    3939
    4040        @classmethod
    41         def valid_name(cls, name):
     41        def valid_name(_, name):
    4242                return not name.endswith( ('.c', '.cc', '.cpp', '.cfa') )
    4343
    4444        @classmethod
    45         def from_target(cls, target):
     45        def from_target(_, target):
    4646                test = Test()
    4747                test.name = os.path.basename(target)
  • src/tests/pybin/tools.py

    r099a40d rf3b9efc  
    7676                '-s' if silent else '',
    7777                test_param,
    78                 settings.debugFlag,
     78                settings.debug.flags,
    7979                flags,
    8080                target,
     
    147147# parses the Makefile to find the machine type (32-bit / 64-bit)
    148148def getMachineType():
    149         return 'x64'
    150149        sh('echo "void ?{}(int&a,int b){}int main(){return 0;}" > .dummy.c')
    151150        ret, out = make('.dummy', silent = True)
     
    161160        rm( (".dummy.c",".dummy") )
    162161
    163         return out
    164         return re.search("ELF\s([0-9]+)-bit", out).group(1)
     162        if settings.dry_run :
     163                return 'x64'
     164
     165        return re.search(r"[^,]+,([^,]+),", out).group(1).strip()
    165166
    166167# count number of jobs to create
     
    213214        raise argparse.ArgumentTypeError(msg)
    214215        return False
     216
     217
     218settings.set_machine_default( getMachineType )
Note: See TracChangeset for help on using the changeset viewer.