# 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',
    '../ui/gl/gl.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': [
          '../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.
        ],
      },
    }],
  ],
}
