// Karma configuration
// Generated on Mon Apr 20 2015 06:33:20 GMT-0700 (PDT)

module.exports = function(config) {
  var configuration = {

    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: '',

    // frameworks to use
    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
    frameworks: ['mocha', 'requirejs', 'chai'],

    // list of files / patterns to load in the browser
    files: [
      {pattern: 'lib/js/amd/dart_sdk.js', included: false},
      {pattern: 'gen/codegen_output/pkg/*.js', included: false},
      {pattern: 'gen/codegen_output/language/**/*.js', included: false},
      {pattern: 'gen/codegen_output/corelib/**/*.js', included: false},
      {pattern: 'gen/codegen_output/lib/**/*.js', included: false},
      {pattern: 'test/browser/*.js', included: false},
      {pattern: 'node_modules/is_js/*.js', included: false},      
      'test-main.js',
    ],

    // list of files to exclude
    exclude: [],

    // preprocess matching files before serving them to the browser
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    preprocessors: {
    },

    client: {
      captureConsole: false,
      mocha: {
        ui: 'tdd',
        timeout : 6000
      },
    },

    // test results reporter to use
    // possible values: 'dots', 'progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ['progress'],

    // web server port
    port: 9876,

    // enable / disable colors in the output (reporters and logs)
    colors: true,

    // level of logging
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    logLevel: config.LOG_INFO,

    // enable / disable watching file and executing tests whenever any file changes
    autoWatch: true,

    browserNoActivityTimeout: 60000,
    browserDisconnectTolerance: 5,

    // start these browsers
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    customLaunchers: {
      ChromeTravis: {
        base: 'Chrome',
        flags: [ '--no-sandbox' ]
      },

      ChromeCanaryTravis: {
        base: 'ChromeCanary',
        flags: [ '--no-sandbox' ]
      },
    },

    browsers: ['Chrome'],

    // Continuous Integration mode
    // if true, Karma captures browsers, runs the tests and exits
    singleRun: false,
  };

  if (process.env.TRAVIS) {
    configuration.browsers = ['ChromeTravis'];
    configuration.autoWatch = false;
    // Enable this for more logging on Travis.  It is too much for Travis to
    // automatically display, but still results in a downloadable raw log.
    // configuration.logLevel = config.LOG_DEBUG;
    configuration.client.captureConsole = true;
  }

  if (process.env.DDC_BROWSERS) {
    configuration.browsers = process.env.DDC_BROWSERS.split(':');
  }

  config.set(configuration);
};
