mirror of
https://github.com/aquasecurity/trivy.git
synced 2025-12-21 23:00:42 -08:00
fix(terraform): fix root module search (#6160)
Co-authored-by: simar7 <1254783+simar7@users.noreply.github.com>
This commit is contained in:
@@ -1271,6 +1271,96 @@ func TestForEachWithObjectsOfDifferentTypes(t *testing.T) {
|
||||
assert.Len(t, modules, 1)
|
||||
}
|
||||
|
||||
func TestCountMetaArgument(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
src string
|
||||
expected int
|
||||
}{
|
||||
{
|
||||
name: "zero resources",
|
||||
src: `resource "test" "this" {
|
||||
count = 0
|
||||
}`,
|
||||
expected: 0,
|
||||
},
|
||||
{
|
||||
name: "several resources",
|
||||
src: `resource "test" "this" {
|
||||
count = 2
|
||||
}`,
|
||||
expected: 2,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
fsys := testutil.CreateFS(t, map[string]string{
|
||||
"main.tf": tt.src,
|
||||
})
|
||||
parser := New(fsys, "", OptionStopOnHCLError(true))
|
||||
require.NoError(t, parser.ParseFS(context.TODO(), "."))
|
||||
|
||||
modules, _, err := parser.EvaluateAll(context.TODO())
|
||||
require.NoError(t, err)
|
||||
assert.Len(t, modules, 1)
|
||||
|
||||
resources := modules.GetResourcesByType("test")
|
||||
assert.Len(t, resources, tt.expected)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestCountMetaArgumentInModule(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
files map[string]string
|
||||
expectedCountModules int
|
||||
expectedCountResources int
|
||||
}{
|
||||
{
|
||||
name: "zero modules",
|
||||
files: map[string]string{
|
||||
"main.tf": `module "this" {
|
||||
count = 0
|
||||
source = "./modules/test"
|
||||
}`,
|
||||
"modules/test/main.tf": `resource "test" "this" {}`,
|
||||
},
|
||||
expectedCountModules: 1,
|
||||
expectedCountResources: 0,
|
||||
},
|
||||
{
|
||||
name: "several modules",
|
||||
files: map[string]string{
|
||||
"main.tf": `module "this" {
|
||||
count = 2
|
||||
source = "./modules/test"
|
||||
}`,
|
||||
"modules/test/main.tf": `resource "test" "this" {}`,
|
||||
},
|
||||
expectedCountModules: 3,
|
||||
expectedCountResources: 2,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
fsys := testutil.CreateFS(t, tt.files)
|
||||
parser := New(fsys, "", OptionStopOnHCLError(true))
|
||||
require.NoError(t, parser.ParseFS(context.TODO(), "."))
|
||||
|
||||
modules, _, err := parser.EvaluateAll(context.TODO())
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Len(t, modules, tt.expectedCountModules)
|
||||
|
||||
resources := modules.GetResourcesByType("test")
|
||||
assert.Len(t, resources, tt.expectedCountResources)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestDynamicBlocks(t *testing.T) {
|
||||
t.Run("arg is list of int", func(t *testing.T) {
|
||||
modules := parse(t, map[string]string{
|
||||
|
||||
Reference in New Issue
Block a user