mirror of
https://github.com/roddhjav/apparmor.d.git
synced 2024-12-26 15:06:45 +01:00
tests(bats): minor improvement to test generation.
This commit is contained in:
parent
7e09351f8f
commit
d6d4648106
2 changed files with 19 additions and 10 deletions
|
@ -40,7 +40,7 @@ type Config struct {
|
||||||
TldrDir *paths.Path // Default: tests/tldr
|
TldrDir *paths.Path // Default: tests/tldr
|
||||||
TldrFile *paths.Path // Default: tests/tldr.yml
|
TldrFile *paths.Path // Default: tests/tldr.yml
|
||||||
TestsFile *paths.Path // Default: tests/tests.yml
|
TestsFile *paths.Path // Default: tests/tests.yml
|
||||||
BatsDir *paths.Path // Default: tests/bats
|
BatsDir *paths.Path // Default: tests/bats_dirty
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewConfig() *Config {
|
func NewConfig() *Config {
|
||||||
|
@ -70,6 +70,12 @@ func run() error {
|
||||||
}
|
}
|
||||||
tests = tests.Filter()
|
tests = tests.Filter()
|
||||||
|
|
||||||
|
if err := cfg.BatsDir.RemoveAll(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := cfg.BatsDir.MkdirAll(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
if err := test.Write(cfg.BatsDir); err != nil {
|
if err := test.Write(cfg.BatsDir); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -18,11 +18,18 @@ const tmplTest = `#!/usr/bin/env bats
|
||||||
# apparmor.d - Full set of apparmor profiles
|
# apparmor.d - Full set of apparmor profiles
|
||||||
# Copyright (C) 2024 Alexandre Pujol <alexandre@pujol.io>
|
# Copyright (C) 2024 Alexandre Pujol <alexandre@pujol.io>
|
||||||
# SPDX-License-Identifier: GPL-2.0-only
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
|
||||||
|
load common
|
||||||
|
|
||||||
|
setup_file() {
|
||||||
|
aa_setup
|
||||||
|
}
|
||||||
{{ $name := .Name -}}
|
{{ $name := .Name -}}
|
||||||
{{ range .Commands }}
|
{{ range .Commands }}
|
||||||
# bats test_tags={{ $name }}
|
# bats test_tags={{ $name }}
|
||||||
@test "{{ $name }}: {{ .Description }}" {
|
@test "{{ $name }}: {{ .Description }}" {
|
||||||
{{ .Cmd }}
|
{{ .Cmd }}
|
||||||
|
aa_check
|
||||||
}
|
}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
`
|
`
|
||||||
|
@ -56,20 +63,13 @@ type Command struct {
|
||||||
Cmd string
|
Cmd string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTest() *Test {
|
|
||||||
return &Test{
|
|
||||||
Name: "",
|
|
||||||
Commands: []Command{},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// HasProfile returns true if the program in the scenario is profiled in apparmor.d
|
// HasProfile returns true if the program in the scenario is profiled in apparmor.d
|
||||||
func (t *Test) HasProfile() bool {
|
func (t Test) HasProfile() bool {
|
||||||
return slices.Contains(Profiles, t.Name)
|
return slices.Contains(Profiles, t.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsInstalled returns true if the program in the scenario is installed on the system
|
// IsInstalled returns true if the program in the scenario is installed on the system
|
||||||
func (t *Test) IsInstalled() bool {
|
func (t Test) IsInstalled() bool {
|
||||||
if _, err := exec.LookPath(t.Name); err != nil {
|
if _, err := exec.LookPath(t.Name); err != nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -82,6 +82,9 @@ func (t Test) Write(dir *paths.Path) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
path := dir.Join(t.Name + ".bats")
|
path := dir.Join(t.Name + ".bats")
|
||||||
|
if paths.New("tests/bats").Join(t.Name + ".bats").Exist() {
|
||||||
|
path = dir.Join("00." + t.Name + ".bats")
|
||||||
|
}
|
||||||
content := renderBatsFile(t)
|
content := renderBatsFile(t)
|
||||||
if err := path.WriteFile([]byte(content)); err != nil {
|
if err := path.WriteFile([]byte(content)); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
Loading…
Reference in a new issue