constructor()

in lib/taskScheduler.ts [41:86]


  constructor(private config: Config) {
    let excludes = ConfigParser.resolveFilePatterns(config.exclude, true, config.configDir);
    let allSpecs =
        ConfigParser.resolveFilePatterns(ConfigParser.getSpecs(config), false, config.configDir)
            .filter((path: string) => {
              return excludes.indexOf(path) < 0;
            });

    let taskQueues: Array<TaskQueue> = [];
    config.multiCapabilities.forEach((capabilities) => {
      let capabilitiesSpecs = allSpecs;
      if (capabilities.specs) {
        let capabilitiesSpecificSpecs =
            ConfigParser.resolveFilePatterns(capabilities.specs, false, config.configDir);
        capabilitiesSpecs = capabilitiesSpecs.concat(capabilitiesSpecificSpecs);
      }

      if (capabilities.exclude) {
        let capabilitiesSpecExcludes =
            ConfigParser.resolveFilePatterns(capabilities.exclude, true, config.configDir);
        capabilitiesSpecs = capabilitiesSpecs.filter((path) => {
          return capabilitiesSpecExcludes.indexOf(path) < 0;
        });
      }

      let specLists: Array<Array<string>> = [];
      // If we shard, we return an array of one element arrays, each containing
      // the spec file. If we don't shard, we return an one element array
      // containing an array of all the spec files
      if (capabilities.shardTestFiles) {
        capabilitiesSpecs.forEach((spec) => {
          specLists.push([spec]);
        });
      } else {
        specLists.push(capabilitiesSpecs);
      }

      capabilities.count = capabilities.count || 1;

      for (let i = 0; i < capabilities.count; ++i) {
        taskQueues.push(new TaskQueue(capabilities, specLists));
      }
    });
    this.taskQueues = taskQueues;
    this.rotationIndex = 0;  // Helps suggestions to rotate amongst capabilities
  }