# Copyright 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
{
  'includes': [
    '../base/base.isolate',
    '../third_party/angle/angle.isolate',
  ],
  'conditions': [
    # TODO(kbr): add Android when these tests are run on those bots.
    ['OS=="linux" or OS=="mac" or OS=="win"', {
      'variables': {
        'command': [
          '<(PRODUCT_DIR)/gles2_conform_test<(EXECUTABLE_SUFFIX)',
        ],
        'files': [
          '<(PRODUCT_DIR)/gles2_conform_test<(EXECUTABLE_SUFFIX)',
          '../gpu/gles2_conform_support/gles2_conform_test_expectations.txt',
        ],
      },
    }],
    # .isolate format doesn't support nested conditions.
    ['(OS=="linux" or OS=="mac" or OS=="win") and internal_gles2_conform_tests==1', {
      'variables': {
        'files': [
          '../third_party/gles2_conform/GTF_ES/',
          '<(PRODUCT_DIR)/gles2_conform_test_windowless<(EXECUTABLE_SUFFIX)',
          # Could add gles2_conform_test_angle or
          # gles2_conform_test_chromeos if the bots were testing those.
        ],
      },
    }],
  ],
}
