// TestResolveJenkinsfileAndDockerfile ensures that if a repo has a Jenkinsfile // and a Dockerfile, we use the Jenkinsfile. func TestResolveJenkinsfileAndDockerfile(t *testing.T) { dockerfile, _ := app.NewDockerfile("FROM centos\n") i := app.SourceRepositoryInfo{Dockerfile: dockerfile, Jenkinsfile: true} repo := app.SourceRepository{} repo.SetInfo(&i) repositories := app.SourceRepositories{&repo} resolvers := Resolvers{} componentrefs, err := AddMissingComponentsToRefBuilder(&app.ReferenceBuilder{}, repositories, resolvers.DockerfileResolver(), resolvers.SourceResolver(), resolvers.PipelineResolver(), &GenerationInputs{}) checkResolveResult(t, componentrefs, err, generate.StrategyPipeline) }
// TestResolveDockerfileAndSource ensures that if a repo has a Dockerfile and // source, we use the Dockerfile. func TestResolveDockerfileAndSource(t *testing.T) { dockerfile, _ := app.NewDockerfile("FROM centos\n") i := app.SourceRepositoryInfo{Dockerfile: dockerfile, Types: []app.SourceLanguageType{{Platform: "foo"}}} repo := app.SourceRepository{} repo.SetInfo(&i) repositories := app.SourceRepositories{&repo} resolvers := Resolvers{} componentrefs, err := AddMissingComponentsToRefBuilder(&app.ReferenceBuilder{}, repositories, resolvers.DockerfileResolver(), resolvers.SourceResolver(), resolvers.PipelineResolver(), &GenerationInputs{}) checkResolveResult(t, componentrefs, err, generate.StrategyDocker) }
// Make sure that buildPipelines defaults DockerImage.Config if needed to // avoid a nil panic. func TestBuildPipelinesWithUnresolvedImage(t *testing.T) { dockerFile, err := app.NewDockerfile("FROM centos\nEXPOSE 1234\nEXPOSE 4567") if err != nil { t.Fatal(err) } sourceRepo, err := app.NewSourceRepository("https://github.com/foo/bar.git") if err != nil { t.Fatal(err) } sourceRepo.BuildWithDocker() sourceRepo.SetInfo(&app.SourceRepositoryInfo{ Dockerfile: dockerFile, }) refs := app.ComponentReferences{ app.ComponentReference(&app.ComponentInput{ Value: "mysql", Uses: sourceRepo, ExpectToBuild: true, ResolvedMatch: &app.ComponentMatch{ Value: "mysql", }, }), } a := AppConfig{} a.Out = &bytes.Buffer{} group, err := a.buildPipelines(refs, app.Environment{}) if err != nil { t.Error(err) } expectedPorts := sets.NewString("1234", "4567") actualPorts := sets.NewString() for port := range group[0].InputImage.Info.Config.ExposedPorts { actualPorts.Insert(port) } if e, a := expectedPorts.List(), actualPorts.List(); !reflect.DeepEqual(e, a) { t.Errorf("Expected ports=%v, got %v", e, a) } }