Changeset 3122 for pjproject/trunk


Ignore:
Timestamp:
Mar 27, 2010 2:35:06 AM (15 years ago)
Author:
bennylp
Message:

Ticket #1041 (Unit test):

  • Initial Windows/MSVC work
Location:
pjproject/trunk/tests
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/tests/automated

    • Property svn:ignore set to
      tmp
      *.xml
  • pjproject/trunk/tests/automated/configure.py

    r3120 r3122  
    99 
    1010PROG = "r" + "$Rev: 17 $".strip("$ ").replace("Rev: ", "") 
     11PYTHON = os.path.basename(sys.executable) 
     12build_type = "" 
     13vs_target = "" 
    1114 
    1215# 
     
    2730    return "gcc-" + ver 
    2831 
     32# 
     33# Get Visual Studio version 
     34# 
     35class VSVersion: 
     36    def __init__(self): 
     37            self.version = "8" 
     38            self.release = "2005" 
     39 
     40            proc = subprocess.Popen("cl", stdout=subprocess.PIPE, 
     41                                    stderr=subprocess.STDOUT) 
     42            while True: 
     43                s = proc.stdout.readline() 
     44                if s=="": 
     45                    break 
     46                pos = s.find("Version") 
     47                if pos > 0: 
     48                    proc.wait() 
     49                    s = s[pos+8:] 
     50                    ver = s.split(None, 1)[0] 
     51                    major = ver[0:2] 
     52                    if major=="12": 
     53                        self.version = "6" 
     54                        self.release = "98" 
     55                        break 
     56                    elif major=="13": 
     57                        self.version = "7" 
     58                        self.release = "2003" 
     59                        break 
     60                    elif major=="14": 
     61                        self.version = "8" 
     62                        self.release = "2005" 
     63                        break 
     64                    elif major=="15": 
     65                        self.version = "9" 
     66                        self.release = "2008" 
     67                        break 
     68                    else: 
     69                        self.version = "10" 
     70                        self.release = "2010" 
     71                        break 
     72            proc.wait() 
     73            self.vs_version = "vs" + self.version 
     74            self.vs_release = "vs" + self.release 
     75     
     76 
    2977def replace_vars(text): 
     78        global vs_target, build_type 
     79        suffix = "" 
     80        os_info = platform.system() + platform.release() + "-" + platform.machine() 
     81 
     82        # osinfo 
     83        if platform.system().lower() == "windows" or platform.system().lower() == "microsoft": 
     84                if platform.system().lower() == "microsoft": 
     85                        os_info = platform.release() + "-" + platform.version() + "-" + platform.win32_ver()[2] 
     86        elif platform.system().lower() == "linux": 
     87                os_info =  + "-" + "-".join(platform.linux_distribution()[0:2]) 
     88 
     89        # Build vs_target 
     90        if not vs_target and text.find("$(VSTARGET)") >= 0: 
     91                if build_type != "vs": 
     92                        sys.stderr.write("Error: $(VSTARGET) only valid for Visual Studio\n") 
     93                        sys.exit(1) 
     94                else: 
     95                        print "Enter Visual Studio vs_target name (e.g. Release, Debug) [Release]: ", 
     96                        vs_target = sys.stdin.readline().replace("\n", "").replace("\r", "") 
     97                        if not vs_target: 
     98                                vs_target = "Release" 
     99 
     100        # Suffix 
     101        if build_type == "vs": 
     102                suffix = "i386-Win32-vc8-" + vs_target 
     103        elif build_type == "gnu": 
     104                proc = subprocess.Popen("sh config.guess", cwd="../..", 
     105                                        shell=True, stdout=subprocess.PIPE) 
     106                suffix = proc.stdout.readline().rstrip(" \r\n") 
     107        else: 
     108                sys.stderr.write("Error: unsupported built type " + build_type + "\n") 
     109                sys.exit(1) 
     110 
    30111        while True: 
    31112                if text.find("$(PJSUA-TESTS)") >= 0: 
    32                         proc = subprocess.Popen("python runall.py --list-xml", cwd="../pjsua", 
     113                        # Determine pjsua exe to use 
     114                        exe = "../../pjsip-apps/bin/pjsua-" + suffix 
     115                        proc = subprocess.Popen(PYTHON + " runall.py --list-xml -e " + exe,  
     116                                                cwd="../pjsua", 
    33117                                                shell=True, stdout=subprocess.PIPE) 
    34118                        content = proc.stdout.read() 
     
    36120                elif text.find("$(GCC)") >= 0: 
    37121                        text = text.replace("$(GCC)", gcc_version("gcc")) 
     122                elif text.find("$(VS)") >= 0: 
     123                        vsver = VSVersion() 
     124                        text = text.replace("$(VS)", vsver.vs_release) 
     125                elif text.find("$(VSTARGET)") >= 0: 
     126                        text = text.replace("$(VSTARGET)", vs_target) 
    38127                elif text.find("$(DISABLED)") >= 0: 
    39128                        text = text.replace("$(DISABLED)", "0") 
    40129                elif text.find("$(OS)") >= 0: 
    41                         os_info = platform.system() + platform.release() + "-" + platform.machine() 
    42                         if platform.system().lower() == "linux": 
    43                                 os_info =  os_info + "-" + "-".join(platform.linux_distribution()[0:2]) 
    44                         text = text.replace("$OS", os_info) 
     130                        text = text.replace("$(OS)", os_info) 
    45131                elif text.find("$(SUFFIX)") >= 0: 
    46                         proc = subprocess.Popen("sh config.guess", cwd="../..", 
    47                                                 shell=True, stdout=subprocess.PIPE) 
    48                         plat = proc.stdout.readline().rstrip(" \r\n") 
    49                         text = text.replace("$(SUFFIX)", plat) 
     132                        text = text.replace("$(SUFFIX)", suffix) 
    50133                elif text.find("$(HOSTNAME)") >= 0: 
    51134                        text = text.replace("$(HOSTNAME)", socket.gethostname()) 
     
    60143 
    61144def main(args): 
    62         usage = """Usage: configure.py scenario_template_file 
     145        global vs_target, build_type 
     146        usage = """Usage: configure.py [OPTIONS] scenario_template_file 
     147 
     148Where OPTIONS: 
     149  -t TYPE           Specify build type for Windows since we support both 
     150                    Visual Studio and Mingw. If not specified, it will be 
     151                    asked if necessary. Values are:  
     152                       vs:    Visual Studio 
     153                       gnu:   Makefile based 
     154  -T TARGETNAME     Specify Visual Studio target name if build type is set 
     155                    to "vs", e.g. Release or Debug. If not specified then  
     156                    it will be asked. 
    63157""" 
    64158 
    65159        args.pop(0) 
    66         if not len(args): 
     160        while len(args): 
     161                if args[0]=='-T': 
     162                        args.pop(0) 
     163                        if len(args): 
     164                                vs_target = args[0] 
     165                                args.pop(0) 
     166                        else: 
     167                                sys.stderr.write("Error: needs value for -T\n") 
     168                                sys.exit(1) 
     169                elif args[0]=='-t': 
     170                        args.pop(0) 
     171                        if len(args): 
     172                                build_type = args[0].lower() 
     173                                args.pop(0) 
     174                        else: 
     175                                sys.stderr.write("Error: needs value for -t\n") 
     176                                sys.exit(1) 
     177                        if not ["vs", "gnu"].count(build_type): 
     178                                sys.stderr.write("Error: invalid -t argument value\n") 
     179                                sys.exit(1) 
     180                else: 
     181                        break 
     182 
     183        if len(args) != 1: 
    67184                print usage 
    68185                return 1 
    69186         
     187        if not build_type and (platform.system().lower() == "windows" or platform.system().lower() == "microsoft"): 
     188            print "Enter the build type (values: vs, gnu) [vs]: ", 
     189            build_type = sys.stdin.readline().replace("\n", "").replace("\r", "") 
     190            if not build_type: 
     191                   build_type = "vs" 
     192                 
     193 
    70194        tpl_file = args[len(args)-1] 
    71195        if not os.path.isfile(tpl_file): 
  • pjproject/trunk/tests/pjsua/runall.py

    r3120 r3122  
    66import shutil 
    77 
     8PYTHON = os.path.basename(sys.executable) 
    89 
    910# Usage: 
     
    103104                        tname = mod[4:mod.find(".py")] + "_" + \ 
    104105                                param[param.find("/")+1:param.find(".py")] 
    105                         tcmd = 'python run.py ' + t 
     106                        c = "" 
     107                        if len(sys.argv): 
     108                                c = " ".join(sys.argv) + " " 
     109                        tcmd = PYTHON + ' run.py ' + c + t 
    106110                        print '\t\t<Test name="%s" cmd="%s" wdir="tests/pjsua" />' % (tname, tcmd) 
    107111                sys.exit(0) 
Note: See TracChangeset for help on using the changeset viewer.