Skip to content

Commit

Permalink
Merge pull request #35 from bitrise-io/SVC-2895-fix-templating
Browse files Browse the repository at this point in the history
[SVC-2895] fix: correctly render special characters
  • Loading branch information
nagypeterjob authored Mar 19, 2024
2 parents 9b1dd29 + 5af7dae commit 2118818
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 9 deletions.
5 changes: 2 additions & 3 deletions pkg/gitops/templates.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@ package gitops

import (
"fmt"
"html/template"
"io/ioutil"
"os"
"path/filepath"
"text/template"
)

//go:generate moq -out templates_moq_test.go . allFilesRenderer
Expand All @@ -30,7 +29,7 @@ type Templates struct {

func (tr Templates) renderAllFiles() error {
// Get all template file names from the source folder.
files, err := ioutil.ReadDir(tr.SourceFolder)
files, err := os.ReadDir(tr.SourceFolder)
if err != nil {
return fmt.Errorf("read files in %q: %w", tr.SourceFolder, err)
}
Expand Down
37 changes: 31 additions & 6 deletions pkg/gitops/templates_test.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package gitops

import (
"io/ioutil"
"os"
"path"
"testing"
Expand All @@ -28,6 +27,16 @@ dependencies:
- name: api-service
version: "0.1.1"
repository: "https://bitrise-io.github.io/k8s-recipes/"
`
templateBrewFormulae = `
class BitriseDenAgent < Formula
desc "CLI for Bitrise DEN agent"
homepage "https://github.com/bitrise-io/bitrise-den-agent"
url "https://github.com/bitrise-io/bitrise-den-agent.git",
tag: "{{ .brew_forumlae_tag }}",
revision: "{{ .brew_forumlae_revision }}"
license ""
end
`
)

Expand All @@ -54,6 +63,16 @@ dependencies:
- name: api-service
version: "0.1.1"
repository: "https://bitrise-io.github.io/k8s-recipes/"
`
renderedBrewFormulae = `
class BitriseDenAgent < Formula
desc "CLI for Bitrise DEN agent"
homepage "https://github.com/bitrise-io/bitrise-den-agent"
url "https://github.com/bitrise-io/bitrise-den-agent.git",
tag: "v1.2.3",
revision: "aaabbbcccdddeeefff"
license ""
end
`
)

Expand Down Expand Up @@ -110,18 +129,24 @@ var renderAllFilesCases = map[string]struct {
folder: "wont-use-this-folder",
wantErr: true,
},
"html tags are correctly rendered in brew formulae": {
templates: map[string]string{"formulae.rb": templateBrewFormulae},
values: map[string]string{"brew_forumlae_tag": "v1.2.3", "brew_forumlae_revision": "aaabbbcccdddeeefff"},
folder: "another-folder-with-values-yaml",
wantFiles: map[string]string{"formulae.rb": renderedBrewFormulae},
},
}

func TestRenderAllFiles(t *testing.T) {
for name, tc := range renderAllFilesCases {
t.Run(name, func(t *testing.T) {
// Create temporary directory for templates.
templatesDir, err := ioutil.TempDir("", "")
templatesDir, err := os.MkdirTemp("", "")
require.NoError(t, err, "new temp templates dir")
defer os.RemoveAll(templatesDir)

// Create a mock temporary directory for local clone of repository.
renderRepo, err := ioutil.TempDir("", "")
renderRepo, err := os.MkdirTemp("", "")
require.NoError(t, err, "new temp render repo")
defer os.RemoveAll(renderRepo)
// Create directory inside that for rendered files.
Expand All @@ -131,7 +156,7 @@ func TestRenderAllFiles(t *testing.T) {
// Copy desired templates to the previously created temp directory.
for fileName, content := range tc.templates {
filePath := path.Join(templatesDir, fileName)
err := ioutil.WriteFile(filePath, []byte(content), 0600)
err := os.WriteFile(filePath, []byte(content), 0600)
require.NoError(t, err, "write template %q", fileName)
}

Expand Down Expand Up @@ -162,7 +187,7 @@ func TestRenderAllFiles(t *testing.T) {
}

var gotFileNames []string
gotFileInfos, err := ioutil.ReadDir(renderDir)
gotFileInfos, err := os.ReadDir(renderDir)
require.NoError(t, err, "read files of render dir")
for _, v := range gotFileInfos {
gotFileNames = append(gotFileNames, v.Name())
Expand All @@ -173,7 +198,7 @@ func TestRenderAllFiles(t *testing.T) {
// Assert for contents of rendered files.
for fileName, want := range tc.wantFiles {
filePath := path.Join(renderDir, fileName)
got, err := ioutil.ReadFile(filePath)
got, err := os.ReadFile(filePath)
require.NoError(t, err, "read contents of %q", filePath)
assert.EqualValues(t, want, string(got), "contents of %q", fileName)
}
Expand Down

0 comments on commit 2118818

Please sign in to comment.