###############################################################################
# Copyright (c) 2004, 2006 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################

#platform=win32-win32-x86_64_6.0
platform=win32.win32.x86_64_7.0

#directory on test machine where automated testing framework will be installed
#testDir=${testDir}

#name of zip file containing automated testing framework and JUnit test plug-ins
testFramework=${testDir}\\eclipse-Automated-Tests-${buildId}.zip

#name of runtime to install and test
#runtime=eclipse-SDK-${buildId}-win32-x86_64.zip
runtime=eclipse-SDK-${buildId}-win32.zip

#name of deltaPack to install and test
runtimeDeltapack=eclipse-${buildId}-delta-pack.zip

#name of Platform runtime to install and test
runtimePlatform=eclipse-platform-${buildId}-win32.zip

# Not currently used on eclipse.org tests
previousRuntimePlatform=eclipse-platform-3.7.1-win32.zip


#directory where test scripts are launched
executionDir=${testDir}\\eclipse-testing

testExecutable=cmd

#name of script to execute on remote machine
#testScript=start /min /wait ${executionDir}\\testAll.bat
testScript=${executionDir}\\testAll.bat

#Bug 384974 - consider explicit argument for tests to run
args=
