# Copyright 2015 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.
{
  'conditions': [
    ['OS=="linux" or OS=="mac" or OS=="win"', {
      'variables': {
        'files': [
          'test/data/',
          '../testing/test_env.py',
          '<(PRODUCT_DIR)/cc_unittests<(EXECUTABLE_SUFFIX)',
        ],
      },
    }],
    ['OS=="linux"', {
      'variables': {
        'command': [
          '../testing/xvfb.py',
          '<(PRODUCT_DIR)',
          '<(PRODUCT_DIR)/cc_unittests',
          '--brave-new-test-launcher',
          '--test-launcher-bot-mode',
          '--asan=<(asan)',
          '--lsan=<(lsan)',
          '--msan=<(msan)',
          '--tsan=<(tsan)',
        ],
        'files': [
          '../testing/xvfb.py',
          '<(PRODUCT_DIR)/libffmpegsumo.so',
          '<(PRODUCT_DIR)/libosmesa.so',
        ],
      },
    }],
    ['OS=="linux" and use_ozone==0', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/xdisplaycheck',
        ],
      },
    }],
    ['OS=="mac"', {
      'variables': {
        'command': [
          '../testing/test_env.py',
          '<(PRODUCT_DIR)/cc_unittests',
          '--brave-new-test-launcher',
          '--test-launcher-bot-mode',
          '--asan=<(asan)',
          '--lsan=<(lsan)',
          '--msan=<(msan)',
          '--tsan=<(tsan)',
        ],
        'files': [
          '<(PRODUCT_DIR)/ffmpegsumo.so',
          '<(PRODUCT_DIR)/osmesa.so',
        ],
      },
    }],
    ['OS=="win"', {
      'variables': {
        'command': [
          '../testing/test_env.py',
          '<(PRODUCT_DIR)/cc_unittests.exe',
          '--brave-new-test-launcher',
          '--test-launcher-bot-mode',
          '--asan=<(asan)',
          '--lsan=<(lsan)',
          '--msan=<(msan)',
          '--tsan=<(tsan)',
        ],
        'files': [
          '<(PRODUCT_DIR)/ffmpegsumo.dll',
          '<(PRODUCT_DIR)/osmesa.dll',
        ],
      },
    }],
    ['OS=="win" and (fastbuild==0 or fastbuild==1)', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/cc_unittests.exe.pdb',
        ],
      },
    }],
    ['OS=="mac" and asan==1 and fastbuild==0', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/cc_unittests.dSYM/',
        ],
      },
    }],
  ],
  'includes': [
    '../base/base.isolate',
  ],
}
