Skip to content

Commit

Permalink
Don't validate YAML (#104)
Browse files Browse the repository at this point in the history
  • Loading branch information
TAGraves authored Sep 3, 2024
1 parent 2f90743 commit 3e9e740
Show file tree
Hide file tree
Showing 3 changed files with 1 addition and 188 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ require (
github.com/spf13/cobra v1.8.1
golang.org/x/crypto v0.25.0
golang.org/x/term v0.22.0
gopkg.in/yaml.v3 v3.0.1
)

require github.com/mattn/go-isatty v0.0.20 // indirect
Expand All @@ -25,6 +24,7 @@ require (
github.com/mattn/go-colorable v0.1.2 // indirect
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

require (
Expand Down
23 changes: 0 additions & 23 deletions internal/cli/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import (

"github.com/briandowns/spinner"
"golang.org/x/crypto/ssh"
"gopkg.in/yaml.v3"
)

// Service holds the main business logic of the CLI.
Expand Down Expand Up @@ -129,18 +128,6 @@ func (s Service) InitiateRun(cfg InitiateRunConfig) (*api.InitiateRunResult, err
return nil, errors.Wrap(err, "unable to read provided files")
}

for _, taskDefinition := range mintDirectory {
if err := validateYAML(taskDefinition.FileContents); err != nil {
return nil, errors.Wrapf(err, "unable to parse %q", taskDefinition.Path)
}
}

for _, taskDefinition := range taskDefinitions {
if err := validateYAML(taskDefinition.FileContents); err != nil {
return nil, errors.Wrapf(err, "unable to parse %q", taskDefinition.Path)
}
}

// mintDirectory task definitions must have their paths relative to the .mint directory
for i, taskDefinition := range mintDirectory {
relPath, err := filepath.Rel(mintDirectoryPath, taskDefinition.Path)
Expand Down Expand Up @@ -718,16 +705,6 @@ func (s Service) findMintDirectoryPath(configuredDirectory string) (string, erro
}
}

// validateYAML checks whether a string can be parsed as YAML
func validateYAML(body string) error {
contentMap := make(map[string]any)
if err := yaml.Unmarshal([]byte(body), &contentMap); err != nil {
return errors.WithStack(err)
}

return nil
}

func PickLatestMajorVersion(versions api.LeafVersionsResult, leaf string, _ string) (string, error) {
latestVersion, ok := versions.LatestMajor[leaf]
if !ok {
Expand Down
164 changes: 0 additions & 164 deletions internal/cli/service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,94 +126,6 @@ var _ = Describe("CLI Service", func() {
})
})

Context("when the specified file is invalid", func() {
var originalSpecifiedFileContent string
var originalMintDirFileContent string

BeforeEach(func() {
originalSpecifiedFileContent = "NOT YAML!!!"
originalMintDirFileContent = "tasks:\n - key: mintdir\n run: echo 'mintdir'\n"
runConfig.MintFilePath = "mint.yml"
runConfig.MintDirectory = ""

mockFS.MockGetwd = func() (string, error) {
return "/some/path/to/working/directory", nil
}
mockFS.MockExists = func(name string) (bool, error) {
return name == "/some/path/to/.mint", nil
}
mockFS.MockReadDir = func(name string) ([]fs.DirEntry, error) {
Expect(name).To(Equal("/some/path/to/.mint"))
return []fs.DirEntry{
mocks.DirEntry{FileName: "mintdir-tasks.yml"},
mocks.DirEntry{FileName: "mintdir-tasks.json"},
}, nil
}
mockFS.MockOpen = func(name string) (fs.File, error) {
if name == "mint.yml" {
file := mocks.NewFile(originalSpecifiedFileContent)
return file, nil
} else if name == "/some/path/to/.mint/mintdir-tasks.yml" {
file := mocks.NewFile(originalMintDirFileContent)
return file, nil
} else {
Expect(name).To(BeNil())
return nil, errors.New("file does not exist")
}
}
})

It("returns an error", func() {
_, err := service.InitiateRun(runConfig)
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(ContainSubstring("unable to parse"))
})
})

Context("when a directory with invalid files is found", func() {
var originalSpecifiedFileContent string
var originalMintDirFileContent string

BeforeEach(func() {
originalSpecifiedFileContent = "tasks:\n - key: foo\n run: echo 'bar'\n"
originalMintDirFileContent = "NOT YAML!!!!!!!!"
runConfig.MintFilePath = "mint.yml"
runConfig.MintDirectory = ""

mockFS.MockGetwd = func() (string, error) {
return "/some/path/to/working/directory", nil
}
mockFS.MockExists = func(name string) (bool, error) {
return name == "/some/path/to/.mint", nil
}
mockFS.MockReadDir = func(name string) ([]fs.DirEntry, error) {
Expect(name).To(Equal("/some/path/to/.mint"))
return []fs.DirEntry{
mocks.DirEntry{FileName: "mintdir-tasks.yml"},
mocks.DirEntry{FileName: "mintdir-tasks.json"},
}, nil
}
mockFS.MockOpen = func(name string) (fs.File, error) {
if name == "mint.yml" {
file := mocks.NewFile(originalSpecifiedFileContent)
return file, nil
} else if name == "/some/path/to/.mint/mintdir-tasks.yml" {
file := mocks.NewFile(originalMintDirFileContent)
return file, nil
} else {
Expect(name).To(BeNil())
return nil, errors.New("file does not exist")
}
}
})

It("returns an error", func() {
_, err := service.InitiateRun(runConfig)
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(ContainSubstring("unable to parse"))
})
})

Context("when an empty directory is found", func() {
var originalSpecifiedFileContent string
var receivedSpecifiedFileContent string
Expand Down Expand Up @@ -394,82 +306,6 @@ var _ = Describe("CLI Service", func() {
})
})

Context("when the specified file is invalid", func() {
var originalSpecifiedFileContent string
var originalMintDirFileContent string

BeforeEach(func() {
originalSpecifiedFileContent = "NOT YAML!!!"
originalMintDirFileContent = "tasks:\n - key: mintdir\n run: echo 'mintdir'\n"
runConfig.MintFilePath = "mint.yml"
runConfig.MintDirectory = "some-dir"

mockFS.MockReadDir = func(name string) ([]fs.DirEntry, error) {
Expect(name).To(Equal("some-dir"))
return []fs.DirEntry{
mocks.DirEntry{FileName: "mintdir-tasks.yml"},
mocks.DirEntry{FileName: "mintdir-tasks.json"},
}, nil
}
mockFS.MockOpen = func(name string) (fs.File, error) {
if name == "mint.yml" {
file := mocks.NewFile(originalSpecifiedFileContent)
return file, nil
} else if name == "some-dir/mintdir-tasks.yml" {
file := mocks.NewFile(originalMintDirFileContent)
return file, nil
} else {
Expect(name).To(BeNil())
return nil, errors.New("file does not exist")
}
}
})

It("returns an error", func() {
_, err := service.InitiateRun(runConfig)
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(ContainSubstring("unable to parse"))
})
})

Context("when a directory with invalid files is found", func() {
var originalSpecifiedFileContent string
var originalMintDirFileContent string

BeforeEach(func() {
originalSpecifiedFileContent = "tasks:\n - key: foo\n run: echo 'bar'\n"
originalMintDirFileContent = "NOT YAML!!!!!!!!"
runConfig.MintFilePath = "mint.yml"
runConfig.MintDirectory = "some-dir"

mockFS.MockReadDir = func(name string) ([]fs.DirEntry, error) {
Expect(name).To(Equal("some-dir"))
return []fs.DirEntry{
mocks.DirEntry{FileName: "mintdir-tasks.yml"},
mocks.DirEntry{FileName: "mintdir-tasks.json"},
}, nil
}
mockFS.MockOpen = func(name string) (fs.File, error) {
if name == "mint.yml" {
file := mocks.NewFile(originalSpecifiedFileContent)
return file, nil
} else if name == "some-dir/mintdir-tasks.yml" {
file := mocks.NewFile(originalMintDirFileContent)
return file, nil
} else {
Expect(name).To(BeNil())
return nil, errors.New("file does not exist")
}
}
})

It("returns an error", func() {
_, err := service.InitiateRun(runConfig)
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(ContainSubstring("unable to parse"))
})
})

Context("when an empty directory is found", func() {
var originalSpecifiedFileContent string
var receivedSpecifiedFileContent string
Expand Down

0 comments on commit 3e9e740

Please sign in to comment.