From d9379f7e33af7d4a272128a5474c068d782b6815 Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Fri, 1 Jul 2022 15:44:07 +0200 Subject: [PATCH] feat(test): adding unit tests --- cmd/bootstraper/main.go | 3 ++- pkg/templater/main.go | 7 ++++++- pkg/templater/main_test.go | 17 +++++++++++++++++ pkg/templater/repo-apk.go | 20 ++++++++++++-------- pkg/utils/main.go | 24 +++++++++++++++++------- 5 files changed, 54 insertions(+), 17 deletions(-) create mode 100644 pkg/templater/main_test.go diff --git a/cmd/bootstraper/main.go b/cmd/bootstraper/main.go index 9701963..1937886 100644 --- a/cmd/bootstraper/main.go +++ b/cmd/bootstraper/main.go @@ -11,6 +11,7 @@ func main() { Config string `arg:"-c,--config,env:CONFIG" help:"Configuration values file or directory path" default:"./data/config"` TemplateDirectory string `arg:"-t,--template-dir,env:TEMPLATE_DIR" help:"Template directory path" default:"./data/templates"` RootDirectory string `arg:"-r,--root-dir,env:ROOT_DIR" help:"Generate files with this root instead of /" default:"/"` + DryRun bool `arg:"-d,--dry-run,env:DRY_RUN" help:"Dry run do not really complete actions" default:"false"` } arg.MustParse(&args) @@ -21,7 +22,7 @@ func main() { if err != nil { panic(err) } - if err = hostConfig.ManageServices(); err != nil { + if err = hostConfig.ManageServices(args.DryRun); err != nil { panic(err) } } diff --git a/pkg/templater/main.go b/pkg/templater/main.go index 5931754..622ca1f 100644 --- a/pkg/templater/main.go +++ b/pkg/templater/main.go @@ -6,6 +6,7 @@ import ( "log" "os" + "forge.cadoles.com/pcaseiro/templatefile/pkg/utils" "github.com/imdario/mergo" ) @@ -80,10 +81,14 @@ func (tc *TemplaterConfig) New(confpath string, templateDir string, rootDir stri } // Process the services contained in the configuration "object" -func (tc *TemplaterConfig) ManageServices() error { +func (tc *TemplaterConfig) ManageServices(dryRun bool) error { // Get global vars to add on each service gbls := tc.GlobalService.Vars + if dryRun { + utils.DryRun = dryRun + } + for name, svr := range tc.Services { err := mergo.Merge(&svr.Vars, gbls) if err != nil { diff --git a/pkg/templater/main_test.go b/pkg/templater/main_test.go new file mode 100644 index 0000000..600bfa4 --- /dev/null +++ b/pkg/templater/main_test.go @@ -0,0 +1,17 @@ +package templater + +import "testing" + +func TestManageService(t *testing.T) { + var hostConfig TemplaterConfig + + err := hostConfig.New("../../data/config/loki-stack.json", "../../data/templates/", "/tmp/testing") + if err != nil { + t.Errorf(err.Error()) + } + + err = hostConfig.ManageServices(true) + if err != nil { + t.Errorf(err.Error()) + } +} diff --git a/pkg/templater/repo-apk.go b/pkg/templater/repo-apk.go index c8f88a6..a2121a5 100644 --- a/pkg/templater/repo-apk.go +++ b/pkg/templater/repo-apk.go @@ -78,7 +78,7 @@ func (hr *APKRepository) Update() error { // FIXME func (hr *APKRepository) Delete() error { - fileBytes, err := ioutil.ReadFile("/etc/apk/repositories") + fileBytes, err := ioutil.ReadFile(APKConfigFile) if err != nil { return err } @@ -90,13 +90,17 @@ func (hr *APKRepository) Delete() error { } func (hr *APKRepository) Manage() error { - if hr.Enabled { - if err := hr.Add(); err != nil { - return err - } - log.Println("\tUpdating apk repositories") - return hr.Update() + if utils.DryRun { + return nil } else { - return hr.Delete() + if hr.Enabled { + if err := hr.Add(); err != nil { + return err + } + log.Println("\tUpdating apk repositories") + return hr.Update() + } else { + return hr.Delete() + } } } diff --git a/pkg/utils/main.go b/pkg/utils/main.go index 2c92b51..cb0158b 100644 --- a/pkg/utils/main.go +++ b/pkg/utils/main.go @@ -2,11 +2,14 @@ package utils import ( "bytes" + "fmt" "os/exec" "github.com/hashicorp/hcl/v2" ) +var DryRun = false + func CheckErr(e error) { if e != nil { panic(e) @@ -21,12 +24,19 @@ func CheckDiags(diag hcl.Diagnostics) { // Execute a system command ... func RunSystemCommand(name string, arg ...string) ([]byte, []byte, error) { - var stdOut bytes.Buffer - var stdErr bytes.Buffer + if DryRun { + stdOut := []byte(fmt.Sprintf("CMD %s\n", name)) + stdErr := []byte("STDERR\n") - cmd := exec.Command(name, arg...) - cmd.Stderr = &stdErr - cmd.Stdout = &stdOut - err := cmd.Run() - return stdOut.Bytes(), stdErr.Bytes(), err + return stdOut, stdErr, nil + } else { + var stdOut bytes.Buffer + var stdErr bytes.Buffer + + cmd := exec.Command(name, arg...) + cmd.Stderr = &stdErr + cmd.Stdout = &stdOut + err := cmd.Run() + return stdOut.Bytes(), stdErr.Bytes(), err + } }