From 2fc1fd823115b870aaa1f2dbe3e308737b7ae44b Mon Sep 17 00:00:00 2001
From: "kkania@google.com"
 <kkania@google.com@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Wed, 28 Oct 2009 17:52:29 +0000
Subject: Change from absolute paths to relative paths to allow tests,etc. to
 be located in any directory, as long as the directory structure is
 maintained. Review URL: http://codereview.chromium.org/344013

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30359 0039d316-1c4b-4281-b951-d872f2087c98
---
 o3d/tests/lab/run_lab_test.py     |  27 ++----
 o3d/tests/lab/runner_constants.py | 191 +++++++++++++++++++-------------------
 o3d/tests/lab/runner_util.py      |   8 +-
 3 files changed, 112 insertions(+), 114 deletions(-)

(limited to 'o3d/tests')

diff --git a/o3d/tests/lab/run_lab_test.py b/o3d/tests/lab/run_lab_test.py
index 028c61a..aa795c5 100644
--- a/o3d/tests/lab/run_lab_test.py
+++ b/o3d/tests/lab/run_lab_test.py
@@ -62,22 +62,21 @@ SCREEN_BPP = 32
 join = os.path.join
 
 if util.IsWindows():
-  IMAGE_DIFF_PATH = join(const.O3D_PATH, 'third_party', 'pdiff', 'files', 
+  IMAGE_DIFF_PATH = join(const.BASE_PATH, 'third_party', 'pdiff', 'files',
                          'bin', 'win', 'perceptualdiff.exe')
 elif util.IsMac():
-  IMAGE_DIFF_PATH = join(const.O3D_PATH, 'third_party', 'pdiff', 'files',
+  IMAGE_DIFF_PATH = join(const.BASE_PATH, 'third_party', 'pdiff', 'files',
                          'bin', 'mac', 'perceptualdiff')
 else:
-  IMAGE_DIFF_PATH = join(const.O3D_PATH, 'third_party', 'pdiff', 'files',
+  IMAGE_DIFF_PATH = join(const.BASE_PATH, 'third_party', 'pdiff', 'files',
                          'bin', 'linux', 'perceptualdiff')
 
-SELENIUM_TEST_RUNNER_PATH = join(const.O3D_PATH, 'o3d', 'tests', 'selenium',
-                                 'main.py')
+SELENIUM_TEST_RUNNER_PATH = join(const.TEST_PATH, 'selenium', 'main.py')
 
-SELENIUM_JAR_PATH = join(const.O3D_PATH, 'third_party', 'selenium_rc', 'files',
+SELENIUM_JAR_PATH = join(const.BASE_PATH, 'third_party', 'selenium_rc', 'files',
                          'selenium-server', 'selenium-server.jar')
 
-O3D_REFERENCE_IMAGES_PATH = join(const.O3D_PATH, 'o3d', 'o3d_assets', 'tests',
+O3D_REFERENCE_IMAGES_PATH = join(const.O3D_PATH, 'o3d_assets', 'tests',
                                  'screenshots')
 
 SCREENSHOTS_PATH = join(const.RESULTS_PATH,'screenshots')
@@ -193,23 +192,17 @@ def RunTest(browser):
   Returns:
     True on success.
   """
-  # Run selenium test.
-  os.chdir(const.AUTO_PATH)
-
   if util.IsWindows(): 
     if not run_util.EnsureWindowsScreenResolution(SCREEN_WIDTH, SCREEN_HEIGHT, 
                                                   SCREEN_BPP):
-      logging.error('Failed to configure screen resolution.')
-      return 1
+      logging.warn('Could not detect/change screen resolution.')
 
-  
-    
   # Clear all screenshots.
   logging.info('** Deleting previous screenshots.')
   if os.path.exists(SCREENSHOTS_PATH):
     shutil.rmtree(SCREENSHOTS_PATH)
-    
-  os.makedirs(SCREENSHOTS_PATH)  
+
+  os.makedirs(SCREENSHOTS_PATH)
   
   logging.info('** Running selenium tests...')
 
@@ -263,7 +256,7 @@ def main(argv):
     config_path = argv[1]
   else:
     # Use default config file.
-    config_path = os.path.join(const.HOME_PATH, 'test_config.txt')
+    config_path = os.path.join(const.HOME, 'test_config.txt')
 
   # Uninstall/Install plugin.
   if not run_util.UninstallO3DPlugin():
diff --git a/o3d/tests/lab/runner_constants.py b/o3d/tests/lab/runner_constants.py
index c0e2d0d..697a7d5 100644
--- a/o3d/tests/lab/runner_constants.py
+++ b/o3d/tests/lab/runner_constants.py
@@ -1,94 +1,97 @@
-#!/usr/bin/python2.6.2
-# Copyright 2009, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-"""Defines common O3D test runner constants.
-
-"""
-
-import os
-import sys
-
-import util
-
-join = os.path.join
-
-if util.IsWindows():
-  AUTO_PATH = r'C:\auto'
-  PYTHON = r'C:\Python24\python.exe'
-  if util.IsXP():
-    HOME_PATH = r'C:\Documents and Settings\testing'
-  else:
-    HOME_PATH = r'C:\Users\testing'
-
-elif util.IsMac():
-  AUTO_PATH = '/Users/testing/auto'
-  PYTHON = 'python'
-  HOME_PATH = '/Users/testing'
-
-elif util.IsLinux():
-  AUTO_PATH = '/home/testing/auto'
-  PYTHON = 'python'
-  HOME_PATH = '/home/testing'
-
-else:
-  print 'Only Windows, Mac, and Linux are supported.'
-  sys.exit(1)
-
-O3D_PATH = join(AUTO_PATH, 'o3d')
-SCRIPTS_PATH = join(AUTO_PATH, 'scripts')
-RESULTS_PATH = join(AUTO_PATH, 'results')
-SOFTWARE_PATH = join(AUTO_PATH, 'software')
-
-# Build directories.
-if util.IsWindows():
-  BUILD_PATH = join(O3D_PATH, 'o3d', 'build')
-elif util.IsMac():
-  BUILD_PATH = join(O3D_PATH, 'xcodebuild')
-else:
-  BUILD_PATH = join(O3D_PATH, 'sconsbuild')
-  
-if os.path.exists(join(BUILD_PATH, 'Debug')):
-  PRODUCT_DIR_PATH = join(BUILD_PATH, 'Debug')
-else:
-  PRODUCT_DIR_PATH = join(BUILD_PATH, 'Release')
-  
-# Plugin locations.
-INSTALL_PATHS = []
-if util.IsWindows():
-  INSTALL_PATHS += [join(HOME_PATH, 'Application Data', 'Mozilla',
-                         'plugins', 'npo3dautoplugin.dll')]
-  INSTALL_PATHS += [join(HOME_PATH, 'Application Data', 'Google', 'O3D',
-                         'o3d_host.dll')]
-elif util.IsMac():
-  INSTALL_PATHS += ['/Library/Internet Plug-Ins/O3D.plugin']
-else:
-  INSTALL_PATHS += [join(HOME_PATH, '.mozilla', 'plugins',
-                         'libnpo3dautoplugin.so')]
+#!/usr/bin/python2.6.2
+# Copyright 2009, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+"""Defines common O3D test runner constants. This file determines paths to
+other O3D components relatively, so it must be placed in the right location.
+
+"""
+
+import os
+import sys
+
+import util
+
+join = os.path.join
+
+# Make sure OS is supported.
+if not util.IsWindows() and not util.IsMac() and not util.IsLinux():
+  print 'Only Windows, Mac, and Linux are supported.'
+  sys.exit(1)
+
+# This path should be root/o3d/tests.
+TEST_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+# This path should be root/o3d.
+O3D_PATH = os.path.dirname(TEST_PATH)
+# This path should be root, i.e., the checkout location.
+BASE_PATH = os.path.dirname(O3D_PATH)
+
+
+HOME = os.path.expanduser('~')
+if HOME == '~':
+  print 'Cannot find user home directory.'
+  sys.exit(1)
+
+if util.IsWindows():
+  PYTHON = r'C:\Python24\python.exe'
+else:
+  PYTHON = 'python'
+
+# Note: this path may or may not exist.
+RESULTS_PATH = join(TEST_PATH, 'results')
+
+# Build directories.
+if util.IsWindows():
+  BUILD_PATH = join(O3D_PATH, 'build')
+elif util.IsMac():
+  BUILD_PATH = join(BASE_PATH, 'xcodebuild')
+else:
+  BUILD_PATH = join(BASE_PATH, 'sconsbuild')
+  
+if os.path.exists(join(BUILD_PATH, 'Debug')):
+  PRODUCT_DIR_PATH = join(BUILD_PATH, 'Debug')
+elif os.path.exists(join(BUILD_PATH, 'Release')):
+  PRODUCT_DIR_PATH = join(BUILD_PATH, 'Release')
+else:
+  print 'Cannot find Debug or Release folder in ' + BUILD_PATH
+  sys.exit(1)
+  
+# Plugin locations.
+INSTALL_PATHS = []
+if util.IsWindows():
+  INSTALL_PATHS += [join(HOME, 'Application Data', 'Mozilla',
+                         'plugins', 'npo3dautoplugin.dll')]
+  INSTALL_PATHS += [join(HOME, 'Application Data', 'Google', 'O3D',
+                         'o3d_host.dll')]
+elif util.IsMac():
+  INSTALL_PATHS += ['/Library/Internet Plug-Ins/O3D.plugin']
+else:
+  INSTALL_PATHS += [join(HOME, '.mozilla', 'plugins',
+                         'libnpo3dautoplugin.so')]
diff --git a/o3d/tests/lab/runner_util.py b/o3d/tests/lab/runner_util.py
index 46bd32e..46a9ba7 100644
--- a/o3d/tests/lab/runner_util.py
+++ b/o3d/tests/lab/runner_util.py
@@ -42,8 +42,9 @@ import sys
 import runner_constants as const
 import util
 
-CHANGE_RESOLUTION_PATH = (const.O3D_PATH + '/o3d/tests/lab' 
-                          '/ChangeResolution/Debug/changeresolution.exe')
+CHANGE_RESOLUTION_PATH = os.path.join(const.TEST_PATH, 'lab', 
+                                      'ChangeResolution','Debug',
+                                      'changeresolution.exe')
 
 def EnsureWindowsScreenResolution(width, height, bpp):
   """Performs all steps needed to configure system for testing on Windows.
@@ -55,7 +56,8 @@ def EnsureWindowsScreenResolution(width, height, bpp):
   Returns:
     True on success.
   """
-  
+  if not os.path.exists(CHANGE_RESOLUTION_PATH):
+    return False
   command = 'call "%s" %d %d %d' % (CHANGE_RESOLUTION_PATH, width, height, bpp)
   
   
-- 
cgit v1.1