mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-11-20 00:41:02 +00:00
Adding linting rules for cache value
This commit is contained in:
parent
5f718691ad
commit
7189d1390e
2 changed files with 43 additions and 0 deletions
|
@ -22,6 +22,7 @@ var lintRules = [...]lintRule{
|
||||||
expectTrustedPublish,
|
expectTrustedPublish,
|
||||||
expectTrustedDeploy,
|
expectTrustedDeploy,
|
||||||
expectTrustedNotify,
|
expectTrustedNotify,
|
||||||
|
expectCacheInWorkspace,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lint runs all lint rules against the Yaml Config.
|
// Lint runs all lint rules against the Yaml Config.
|
||||||
|
@ -105,6 +106,22 @@ func expectTrustedNotify(c *common.Config) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// lint rule that fails if the cache directories are not contained
|
||||||
|
// in the workspace.
|
||||||
|
func expectCacheInWorkspace(c *common.Config) error {
|
||||||
|
for _, step := range c.Build.Cache {
|
||||||
|
cleaned := filepath.Clean(step)
|
||||||
|
|
||||||
|
if strings.Index(cleaned, "../") != -1 {
|
||||||
|
return fmt.Errorf("Cache must point to a path in the workspace")
|
||||||
|
} else if cleaned == "." {
|
||||||
|
return fmt.Errorf("Cannot cache the workspace")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func LintPlugins(c *common.Config, opts *Opts) error {
|
func LintPlugins(c *common.Config, opts *Opts) error {
|
||||||
if len(opts.Whitelist) == 0 {
|
if len(opts.Whitelist) == 0 {
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -88,6 +88,32 @@ func Test_Linter(t *testing.T) {
|
||||||
g.Assert(Lint(c) == nil).IsTrue()
|
g.Assert(Lint(c) == nil).IsTrue()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
g.It("Should pass with path inside workspace", func() {
|
||||||
|
c := &common.Config{
|
||||||
|
Build: &common.Step{
|
||||||
|
Cache: []string{".git","/.git","/.git/../.git/../.git"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
g.Assert(expectCacheInWorkspace(c) == nil).IsTrue()
|
||||||
|
})
|
||||||
|
|
||||||
|
g.It("Should fail with path outside workspace", func() {
|
||||||
|
c := &common.Config{
|
||||||
|
Build: &common.Step{
|
||||||
|
Cache: []string{".git","/.git","../../.git"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
g.Assert(expectCacheInWorkspace(c) != nil).IsTrue()
|
||||||
|
})
|
||||||
|
|
||||||
|
g.It("Should fail when caching workspace directory", func() {
|
||||||
|
c := &common.Config{
|
||||||
|
Build: &common.Step{
|
||||||
|
Cache: []string{".git",".git/../"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
g.Assert(expectCacheInWorkspace(c) != nil).IsTrue()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue