<?xml version="1.0" encoding="utf-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at
  
       http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<RunSettings>
  <RunConfiguration>
    <EnvironmentVariables>
      <TESTSRC>$<SHELL_PATH:${CMAKE_CURRENT_SOURCE_DIR}></TESTSRC>
      <GFE_LOGLEVEL>config</GFE_LOGLEVEL>
      <GFE_SECLOGLEVEL>config</GFE_SECLOGLEVEL>
      <GF_JAVA>$<SHELL_PATH:${Java_JAVA_EXECUTABLE}></GF_JAVA>
      <GFE_DIR>$<SHELL_PATH:${Geode_PATH}></GFE_DIR>
      <GF_CLASSPATH>$<SHELL_PATH:${CMAKE_BINARY_DIR}/tests/javaobject/javaobject.jar></GF_CLASSPATH>
      <PATH>$<SHELL_PATH:${CMAKE_BINARY_DIR}/packages/NUnit.Runners.2.6.4/tools></PATH>
    </EnvironmentVariables>
  </RunConfiguration>
</RunSettings>
