func TestBuildLotsOfTargets(t *testing.T) { config, _ := core.ReadConfigFiles(nil) state := core.NewBuildState(numWorkers, nil, 4, config) pkg := core.NewPackage("pkg") state.Graph.AddPackage(pkg) for i := 1; i <= size; i++ { addTarget(state, i) } var wg sync.WaitGroup wg.Add(numWorkers) for i := 0; i < numWorkers; i++ { go func() { please(i, state) wg.Done() }() } // Consume and discard any results go func() { for result := range state.Results { assert.NotEqual(t, core.TargetBuildFailed, result.Status) log.Info("%s", result.Description) } }() state.TaskDone() // Initial target adding counts as one. wg.Wait() }
func newState(label string) (*core.BuildState, *core.BuildTarget) { config, _ := core.ReadConfigFiles(nil) state := core.NewBuildState(1, nil, 4, config) target := core.NewBuildTarget(core.ParseBuildLabel(label, "")) target.Command = fmt.Sprintf("echo 'output of %s' > $OUT", target.Label) state.Graph.AddTarget(target) return state, target }
// readConfig sets various things up and reads the initial configuration. func readConfig(forceUpdate bool) *core.Configuration { if opts.AssertVersion != "" && core.PleaseVersion.String() != opts.AssertVersion { log.Fatalf("Requested Please version %s, but this is version %s", opts.AssertVersion, core.PleaseVersion) } if opts.FeatureFlags.NoHashVerification { log.Warning("You've disabled hash verification; this is intended to help temporarily while modifying build targets. You shouldn't use this regularly.") } config, err := core.ReadConfigFiles([]string{ path.Join(core.RepoRoot, core.ConfigFileName), path.Join(core.RepoRoot, core.ArchConfigFileName), core.MachineConfigFileName, path.Join(core.RepoRoot, core.LocalConfigFileName), }) if err != nil { log.Fatalf("Error reading config file: %s", err) } else if err := config.ApplyOverrides(opts.BuildFlags.Option); err != nil { log.Fatalf("Can't override requested config setting: %s", err) } update.CheckAndUpdate(config, !opts.FeatureFlags.NoUpdate, forceUpdate, opts.Update.Force) return config }