diff options
Diffstat (limited to 'smoketest')
-rwxr-xr-x | smoketest/lodownloadtest.py (renamed from smoketest/losmoketest.py) | 253 |
1 files changed, 136 insertions, 117 deletions
diff --git a/smoketest/losmoketest.py b/smoketest/lodownloadtest.py index 7c8e6af8b310..5d488b040e12 100755 --- a/smoketest/losmoketest.py +++ b/smoketest/lodownloadtest.py @@ -1,6 +1,8 @@ #!/usr/bin/env python # Version: MPL 1.1 / GPLv3+ / LGPLv3+ +# Version: MPL 1.1 / GPLv3+ / LGPLv3+ +# # The contents of this file are subject to the Mozilla Public License Version # 1.1 (the "License"); you may not use this file except in compliance with # the License or as specified alternatively below. You may obtain a copy of @@ -11,14 +13,11 @@ # for the specific language governing rights and limitations under the # License. # -# The Initial Developer of the Original Code is -# Yifan Jiang, SUSE <yfjiang@suse.com> -# Portions created by the Initial Developer are Copyright (C) 2011 the -# Initial Developer. All Rights Reserved. -# # Major Contributor(s): +# [ Copyright (C) 2011 Yifan Jiang <yfjiang@suse.com> (initial developer) ] +# [ Copyright (C) 2011 Petr Mladek <pmladek@suse.cz> ] # -# Portions created by the Ted are Copyright (C) 2010 Ted. All Rights Reserved. +# All Rights Reserved. # # For minor contributions see the git repository. # @@ -51,15 +50,21 @@ except ImportError: build_version = "3.5" tag_version = "3-5" # devel build -install_dirname="lo-dev" -branding_pack="libo-dev" -basis_pack="libobasis-dev" -ure_pack="lodev" +branding_pack="lodev" +basis_pack="lodevbasis" # stable build -#install_dirname="libreoffice" + build_version #branding_pack="libreoffice" #basis_pack="libobasis" -#ure_pack="libreoffice" + +# possible program files of libreoffice, put all platform paths are +# expected in this list +lo_all_paths = [ + "/opt/lodev" + build_version, \ + "/opt/libreoffice" + build_version, \ + "/usr/lib/libreoffice", \ + "/usr/lib64/libreoffice", \ + "C:\program file\libreoffice", \ + ] build_check_interval = 5 #seconds @@ -76,20 +81,19 @@ DOWNLOAD_DIR = os.path.join(root_dir, "_download") USR_DIR = os.path.join(root_dir, "_libo_smoke_user") LOCAL_BUILD_INFO_FILE = os.path.join(root_dir, "build.cfg") -ROOT_DIR_LIB = os.path.join(root_dir, 'lib') -ROOT_DIR_LIB32 = os.path.join(root_dir, 'lib32') -ROOT_DIR_LIB64 = os.path.join(root_dir, 'lib64') -ROOT_DIR_BIN32 = os.path.join(root_dir, 'bin32') -ROOT_DIR_BIN64 = os.path.join(root_dir, 'bin64') - -CPPUNITTESTER = os.path.join(root_dir, 'cppunittester') - # INSTALL_DIR = os.path.join(root_dir, "_libo_smoke_installation") INSTALL_DIR = "" # Installation dir # SOFFICE_BIN bin if platform.system() == "Linux": - SOFFICE_BIN= INSTALL_DIR + os.sep + "opt" + os.sep + install_dirname + os.sep + "program" + os.sep + "soffice" + SOFFICE_BIN = "soffice" + LOSMOKETEST_BIN = "losmoketest" +elif platform.system() == "Windows": + SOFFICE_BIN = "soffice.exe" + LOSMOKETEST_BIN = "losmoketest" +else: + SOFFICE_BIN = "soffice" + LOSMOKETEST_BIN = "losmoketest" # Relative build url ## pre-releases @@ -170,7 +174,14 @@ def local_build_info(t): build_name = '' build_time = datetime.datetime.min - return build_name, build_time + try: + testpack_name = config.get(t, 'testpack_name').strip('\n') + testpack_build_time = datetime.datetime.strptime(config.get(t, 'testpack_build_time').strip('\n'), '%d-%b-%Y %H:%M') + except ValueError: + testpack_name = '' + testpack_build_time = datetime.datetime.min + + return build_name, build_time, testpack_name, testpack_build_time def get_url_regexp(t, package, arch): ''' @@ -184,86 +195,89 @@ def get_url_regexp(t, package, arch): package and its timestamp ''' url = "" - reg = re.compile('^$') + reg_lo = re.compile('^$') + reg_tst = re.compile('^$') pck = package arc = arch if t == 'pre-releases': if pck == "rpm" and arc == "x86": url = SERVER_URL + "/" + PR_RPM_X86_PATH - reg = re.compile('\<a\ href=\"(LibO_\d.*x86_install-rpm.*en-US.*\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_lo = re.compile('\<a\ href=\"(LibO_\d.*x86_install-rpm.*en-US.*\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_tst = re.compile('\<a\ href=\"(LibO-Test.*.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') elif pck == "rpm" and arc == "x86_64": url = SERVER_URL + "/" + PR_RPM_X86_64_PATH - reg = re.compile('\<a\ href=\"(LibO_\d.*x86-64_install-rpm.*en-US.*\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_lo = re.compile('\<a\ href=\"(LibO_\d.*x86-64_install-rpm.*en-US.*\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_tst = re.compile('\<a\ href=\"(LibO-Test.*.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') elif pck == "deb" and arc == "x86": url = SERVER_URL + "/" + PR_DEB_X86_PATH - reg = re.compile('\<a\ href=\"(LibO_\d.*x86_install-deb.*en-US.*\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_lo = re.compile('\<a\ href=\"(LibO_\d.*x86_install-deb.*en-US.*\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') elif pck == "deb" and arc == "x86_64": url = SERVER_URL + "/" + PR_DEB_X86_64_PATH - reg = re.compile('\<a\ href=\"(LibO_\d.*x86-64_install-deb.*en-US.*\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_lo = re.compile('\<a\ href=\"(LibO_\d.*x86-64_install-deb.*en-US.*\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') elif pck == "exe" and arc == "x86": url = SERVER_URL + "/" + PR_WIN_X86_PATH - reg = re.compile('\<a\ href=\"(LibO_\d.*Win_x86_install_multi.exe)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_lo = re.compile('\<a\ href=\"(LibO_\d.*Win_x86_install_multi.exe)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') elif pck == "dmg" and arc == "x86": url = SERVER_URL + "/" + PR_MAC_X86_PATH - reg = re.compile('\<a\ href=\"(LibO_\d.*MacOS_x86_install_en-US.dmg)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_lo = re.compile('\<a\ href=\"(LibO_\d.*MacOS_x86_install_en-US.dmg)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') elif pck == "dmg" and arc == "ppc": url = SERVER_URL + "/" + PR_MAC_PPC_PATH - reg = re.compile('\<a\ href=\"(LibO_\d.*MacOS_PPC_install_en-US.dmg)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_lo = re.compile('\<a\ href=\"(LibO_\d.*MacOS_PPC_install_en-US.dmg)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') else: logger.error("Unable to handle the system or arch!") elif t == 'daily_master': if pck == "rpm" and arc == "x86": url = SERVER_URL + "/" + DAILY_MASTER_RPM_X86_PATH - reg = re.compile('\<a\ href=\"(master\~\d.*LibO-Dev_.*x86_install-rpm_en-US.tar.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_lo = re.compile('\<a\ href=\"(master\~\d.*LibO-Dev_.*x86_install-rpm_en-US.tar.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') elif pck == "rpm" and arc == "x86_64": url = SERVER_URL + "/" + DAILY_MASTER_RPM_X86_64_PATH - reg = re.compile('\<a\ href=\"(master\~\d.*LibO-Dev_.*x86-64_install-rpm_en-US.tar.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_lo = re.compile('\<a\ href=\"(master\~\d.*LibO-Dev_.*x86-64_install-rpm_en-US.tar.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') elif pck == "deb" and arc == "x86": url = SERVER_URL + "/" + DAILY_MASTER_DEB_X86_PATH - reg = re.compile('\<a\ href=\"(master\~\d.*LibO-Dev_.*x86_install-deb_en-US.tar.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_lo = re.compile('\<a\ href=\"(master\~\d.*LibO-Dev_.*x86_install-deb_en-US.tar.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') elif pck == "deb" and arc == "x86_64": url = SERVER_URL + "/" + DAILY_MASTER_DEB_X86_64_PATH - reg = re.compile('^$') # No build yet + reg_lo = re.compile('^$') # No build yet elif pck == "exe" and arc == "x86": url = SERVER_URL + "/" + DAILY_MASTER_WIN_X86_PATH - reg = re.compile('^$') # No build yet + reg_lo = re.compile('^$') # No build yet elif pck == "dmg" and arc == "x86": url = SERVER_URL + "/" + DAILY_MASTER_MAC_X86_PATH - reg = re.compile('\<a\ href=\"(master\~\d.*LibO-Dev_.*x86_install_en-US.dmg)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_lo = re.compile('\<a\ href=\"(master\~\d.*LibO-Dev_.*x86_install_en-US.dmg)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') elif pck == "dmg" and arc == "ppc": url = SERVER_URL + "/" + DAILY_MASTER_MAC_PPC_PATH - reg = re.compile('^$') # No build yet + reg_lo = re.compile('^$') # No build yet else: logger.error("Unable to handle the system or arch!") elif t == 'daily_branch': if pck == "rpm" and arc == "x86": url = SERVER_URL + "/" + DAILY_BRANCH_RPM_X86_PATH - reg = re.compile('\<a\ href=\"(.*LibO_.*x86_install-rpm_en-US\.tar\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_lo = re.compile('\<a\ href=\"(.*LibO_.*x86_install-rpm_en-US\.tar\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') elif pck == "rpm" and arc == "x86_64": url = SERVER_URL + "/" + DAILY_BRANCH_RPM_X86_64_PATH - reg = re.compile('\<a\ href=\"(.*LibO_.*x86-64_install-rpm_en-US\.tar\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_lo = re.compile('\<a\ href=\"(.*LibO_.*x86-64_install-rpm_en-US\.tar\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') elif pck == "deb" and arc == "x86": url = SERVER_URL + "/" + DAILY_BRANCH_DEB_X86_PATH - reg = re.compile('\<a\ href=\"(.*LibO_.*x86_install-deb_en-US\.tar\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_lo = re.compile('\<a\ href=\"(.*LibO_.*x86_install-deb_en-US\.tar\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') elif pck == "deb" and arc == "x86_64": url = SERVER_URL + "/" + DAILY_BRANCH_DEB_X86_64_PATH - reg = re.compile('\<a\ href=\"(.*LibO_.*x86-64_install-deb_en-US\.tar\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_lo = re.compile('\<a\ href=\"(.*LibO_.*x86-64_install-deb_en-US\.tar\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') elif pck == "exe" and arc == "x86": url = SERVER_URL + "/" + DAILY_BRANCH_WIN_X86_PATH - reg = re.compile('\<a\ href=\"(.*LibO_.*install_.*\.exe)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') + reg_lo = re.compile('\<a\ href=\"(.*LibO_.*install_.*\.exe)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*') elif pck == "dmg" and arc == "x86": url = SERVER_URL + "/" + DAILY_BRANCH_MAC_X86_PATH - reg = re.compile('^$') # No build yet + reg_lo = re.compile('^$') # No build yet elif pck == "dmg" and arc == "ppc": url = SERVER_URL + "/" + DAILY_BRANCH_MAC_PPC_PATH - reg = re.compile('^$') # No build yet + reg_lo = re.compile('^$') # No build yet else: logger.error("Unable to handle the system or arch!") else: logger.error("Error build type! The build type has to be:\n pre-releases, daily_master, daily_branch") - return url, reg + return url, reg_lo, reg_tst def remote_build_info(url_reg): ''' Get the latest proper build info (build_name, build_time) from @@ -273,15 +287,20 @@ def remote_build_info(url_reg): pck = p[1] arc = p[2] r = url_reg[1] + r_t = url_reg[2] f = urllib2.urlopen(url_reg[0]) c = ''.join(f.readlines()) f.close() build_list = r.findall(c) + test_list = r_t.findall(c) build_name = '' build_time = datetime.datetime.min + testpack_build_time = datetime.datetime.min + testpack_name = '' + for b in build_list: if datetime.datetime.strptime(b[1] + ' ' + b[2], '%d-%b-%Y %H:%M') > build_time: @@ -291,7 +310,15 @@ def remote_build_info(url_reg): except: print "remote_build_info: wrong time date&format" - return build_name, build_time + for t in test_list: + if datetime.datetime.strptime(t[1] + ' ' + t[2], '%d-%b-%Y %H:%M') > testpack_build_time: + testpack_name = t[0] + try: + testpack_build_time = datetime.datetime.strptime(t[1] + ' ' + t[2], '%d-%b-%Y %H:%M') + except: + print "remote_build_info: wrong time date&format" + + return build_name, build_time, testpack_name, testpack_build_time # return True when something was downloaded def download(url_reg, build_type): @@ -301,17 +328,22 @@ def download(url_reg, build_type): remote_build = remote_build_info(url_reg) local_build = local_build_info(build_type) -# print 'remote_build[1]=' + remote_build[1].isoformat() -# print 'local_build[1]=' + local_build[1].isoformat() if remote_build[1] > local_build[1]: - logger.info('Found New build: ' + remote_build[0]) + logger.info('Found New LO build: ' + remote_build[0]) if fetch_build(url_reg[0], remote_build[0]): set_build_config(build_type, 'build_name', remote_build[0]) set_build_config(build_type, 'build_time', datetime.datetime.strftime(remote_build[1], '%d-%b-%Y %H:%M')) else: - logger.error('Download build failed!') - else: - return False + logger.error('Download libreoffice build failed!') + + if remote_build[3] > local_build[3] and (remote_build[1] - remote_build[3]) < datetime.timedelta(hours=1): + logger.info('Found a relevant smoketest package: ' + remote_build[2]) + if fetch_build(url_reg[0], remote_build[2]): + set_build_config(build_type, 'testpack_name', remote_build[2]) + set_build_config(build_type, 'testpack_build_time', datetime.datetime.strftime(remote_build[3], '%d-%b-%Y %H:%M')) + return True + else: + logger.warning("Failed to find corresponding smoketest package") except urllib2.URLError, HTTPError: logger.error('Error fetch remote build info.') @@ -319,10 +351,10 @@ def download(url_reg, build_type): except KeyboardInterrupt: sys.exit() except: - print "Some Error" + logger.error('Error fetch remote build info.') return False - return True + return False def fetch_build(url, filename): ''' Download a build from address url/filename ''' @@ -350,17 +382,24 @@ def set_build_config(section, option, value): with open(LOCAL_BUILD_INFO_FILE, 'wb') as cfgfile: config.write(cfgfile) -def uninstall(): +def uninstall(build_type): ''' Kill libreoffice processes and uninstall all previously installed libreoffice packages ''' + if build_type == "pre-releases": + branding_pack="libreoffice" + basis_pack="libobasis" + logger.info("Uninstalling ...") pck = platform_info()[1] if pck == 'rpm': cmd_query = ["rpm", "-qa"] - cmd_filter = ["grep", "-e", branding_pack+build_version, "-e", basis_pack+build_version, "-e", ure_pack+build_version] + cmd_filter = ["grep", \ + "-e", branding_pack+build_version, \ + "-e", basis_pack+build_version, \ + ] P_query = subprocess.Popen(cmd_query, stdout = subprocess.PIPE) P_filter = subprocess.Popen(cmd_filter, stdin = P_query.stdout, stdout = subprocess.PIPE) @@ -373,7 +412,7 @@ def uninstall(): else: cmd = ["sudo", "rpm", "-e"] + str_filter.split() elif pck == 'deb': - cmd_query = ["dpkg", "--get-selections", branding_pack+build_version+"*", basis_pack+build_version+"*", ure_pack+build_version+"*"] + cmd_query = ["dpkg", "--get-selections", branding_pack+build_version+"*", basis_pack+build_version+"*"] cmd_filter = ["cut", "-f", "1"] P_query = subprocess.Popen(cmd_query, stdout = subprocess.PIPE) @@ -413,42 +452,23 @@ def init_testing(): init_build_cfg = '[daily_branch]' + os.linesep\ + 'build_name =' + os.linesep\ + 'build_time =' + os.linesep\ + + 'testpack_name =' + os.linesep\ + + 'testpack_build_time =' + os.linesep\ + '[daily_master]' + os.linesep\ + 'build_name =' + os.linesep\ + 'build_time =' + os.linesep\ + + 'testpack_name =' + os.linesep\ + + 'testpack_build_time =' + os.linesep\ + '[pre-releases]' + os.linesep\ + 'build_name =' + os.linesep\ - + 'build_time =' + os.linesep + + 'build_time =' + os.linesep \ + + 'testpack_name =' + os.linesep\ + + 'testpack_build_time =' + os.linesep with open(LOCAL_BUILD_INFO_FILE, 'w+') as f: f.write(init_build_cfg) f.close() - # create set up links - try: - if platform.system() == "Linux": - # remove old symlinks if they exists - for p in ROOT_DIR_LIB, CPPUNITTESTER: - if os.path.exists(p) and os.path.islink(p): - os.remove(p) - - if platform_info()[2] == "x86": - os.symlink(ROOT_DIR_LIB32, ROOT_DIR_LIB) - os.symlink(os.path.join(ROOT_DIR_BIN32, 'cppunittester'), CPPUNITTESTER) - elif platform_info()[2] == "x86_64": - os.symlink(ROOT_DIR_LIB64, ROOT_DIR_LIB) - os.symlink(os.path.join(ROOT_DIR_BIN64, 'cppunittester'), CPPUNITTESTER) - else: - pass - - elif platform.system() == "Windows" and platform_info()[2] == "x86": - pass - else: - pass - - except OSError: - pass - def post_testing(): logger.info("Cleaning up ...") @@ -493,18 +513,20 @@ def install(filename): for root, dirs, files in os.walk(DOWNLOAD_DIR): if 'RPMS' in root or 'DEBS' in root: pcklist = pcklist + [os.path.join(root_dir, root, f) for f in files] - pcklist = filter(_is_not_filtered, pcklist) + install_pcklist = filter(_is_not_filtered, pcklist) # install if platform_info()[1] == 'rpm': - install_cmd = ["sudo", "rpm", "-iv"] + pcklist + install_cmd = ["sudo", "rpm", "-iv"] + install_pcklist + clean_tmp_cmd = ["sudo", "rm", "-f"] + pcklist elif platform_info()[1] == 'deb': - install_cmd = ["sudo", "dpkg", "-i"] + pcklist + install_cmd = ["sudo", "dpkg", "-i"] + install_pcklist else: logger.error('Cannot generate install command') return subprocess.check_call(install_cmd) + subprocess.check_call(clean_tmp_cmd) else: logger.info("Unrecognized file extension") @@ -517,32 +539,25 @@ def verify_smoketest(headless): pck = p[1] arc = p[2] - if s == "Linux": - if headless: - os.environ['SAL_USE_VCLPLUGIN'] = "svp" - os.environ['LD_LIBRARY_PATH'] = "" - os.environ['LD_LIBRARY_PATH'] = ':'.join([os.path.join(root_dir, 'lib'), INSTALL_DIR + '/opt/' + install_dirname + '/ure/lib', os.environ['LD_LIBRARY_PATH']]) - cmd_cppu = [ - CPPUNITTESTER, - "-env:UNO_SERVICES=file://"+ INSTALL_DIR + "/opt/" + install_dirname + "/ure/share/misc/services.rdb", - "-env:UNO_TYPES=" + os.path.join(os.path.join(root_dir, 'lib'), "types.rdb"), - "-env:arg-soffice=path:" + SOFFICE_BIN, - "-env:arg-user=" + USR_DIR, - "-env:arg-env=" + os.environ['LD_LIBRARY_PATH'], - "-env:arg-testarg.smoketest.doc=" + os.path.join(root_dir, "doc/smoketestdoc.sxw"), - "--protector", - os.path.join(root_dir, "lib/unoexceptionprotector.so"), "unoexceptionprotector", - os.path.join(root_dir, "lib/libsmoketest.so") - ] + lo_testable_paths = filter(lambda p: \ + os.path.exists(p + os.sep + "program" + os.sep + LOSMOKETEST_BIN) and \ + os.path.exists(p + os.sep + "program" + os.sep + SOFFICE_BIN), \ + lo_all_paths) + + if not lo_testable_paths: + logger.error("Not found any Libreoffice or Test packages!") + sys.exit(1) else: - logger.warning('The smoketest does not support this platform yet!') + cmd_smoketests = [ p + os.sep + "program" + os.sep + LOSMOKETEST_BIN for p in lo_testable_paths ] - try: - subprocess.check_call(cmd_cppu) - logger.info(" Smoketest PASSED") - except: - logger.error(" Smoketest FAILED") - + if len(lo_testable_paths) > 1: + logger.info("++More than one testable build is found, test them one by one.") + + # subprocess.call(cmd_smoketest); + for c in cmd_smoketests: + pattern = re.compile(LOSMOKETEST_BIN + "$") + logger.info(" Test Binary: " + pattern.sub(SOFFICE_BIN, c)) + subprocess.call(c) def usage(): @@ -601,11 +616,12 @@ def main(): sys.exit() elif o in ("-i", "--install"): init_testing() - uninstall() + uninstall(build_type) install(DOWNLOAD_DIR + os.sep + local_build_info(build_type)[0]) + install(DOWNLOAD_DIR + os.sep + local_build_info(build_type)[2]) sys.exit() elif o in ("-u", "--uninstall"): - uninstall() + uninstall(build_type) sys.exit() elif o in ("-d", "--download"): init_testing() @@ -628,18 +644,21 @@ def main(): try: # FIXME: uninstall script fails but it need not break the whole game; so try it twice try: - uninstall() + uninstall(build_type) except: - logger.error("Some errors happend during uninstall. Trying once again.") - uninstall() + logger.error("Some errors happened during uninstall. Trying once again.") + uninstall(build_type) install(DOWNLOAD_DIR + os.sep + local_build_info(build_type)[0]) + install(DOWNLOAD_DIR + os.sep + local_build_info(build_type)[2]) verify_smoketest(headless) except KeyboardInterrupt: sys.exit() except: - pass + continue + else: + logger.warning("No new build found.") if loop: time.sleep(build_check_interval) @@ -653,7 +672,7 @@ if __name__ == '__main__': logger = logging.getLogger('') logger.setLevel(logging.DEBUG) - fh = logging.FileHandler('losmoketest.log') + fh = logging.FileHandler(os.path.basename(__file__) + '.log') ch = logging.StreamHandler() formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') |