mirror of
https://github.com/aquasecurity/trivy.git
synced 2025-12-21 06:43:05 -08:00
refactor: move from urfave/cli to spf13/cobra (#2458)
Co-authored-by: afdesk <work@afdesk.com> Co-authored-by: DmitriyLewen <91113035+DmitriyLewen@users.noreply.github.com>
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
//go:build integration
|
||||
// +build integration
|
||||
|
||||
package integration
|
||||
|
||||
@@ -7,7 +6,6 @@ import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
@@ -19,10 +17,8 @@ import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
testcontainers "github.com/testcontainers/testcontainers-go"
|
||||
"github.com/urfave/cli/v2"
|
||||
|
||||
"github.com/aquasecurity/trivy/pkg/clock"
|
||||
"github.com/aquasecurity/trivy/pkg/commands"
|
||||
"github.com/aquasecurity/trivy/pkg/report"
|
||||
)
|
||||
|
||||
@@ -242,14 +238,14 @@ func TestClientServer(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
app, addr, cacheDir := setup(t, setupOptions{})
|
||||
addr, cacheDir := setup(t, setupOptions{})
|
||||
|
||||
for _, c := range tests {
|
||||
t.Run(c.name, func(t *testing.T) {
|
||||
osArgs, outputFile := setupClient(t, c.args, addr, cacheDir, c.golden)
|
||||
|
||||
// Run Trivy client
|
||||
err := app.Run(osArgs)
|
||||
//
|
||||
err := execute(osArgs)
|
||||
require.NoError(t, err)
|
||||
|
||||
compareReports(t, c.golden, outputFile)
|
||||
@@ -340,7 +336,7 @@ func TestClientServerWithFormat(t *testing.T) {
|
||||
report.CustomTemplateFuncMap = map[string]interface{}{}
|
||||
})
|
||||
|
||||
app, addr, cacheDir := setup(t, setupOptions{})
|
||||
addr, cacheDir := setup(t, setupOptions{})
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
@@ -349,7 +345,7 @@ func TestClientServerWithFormat(t *testing.T) {
|
||||
osArgs, outputFile := setupClient(t, tt.args, addr, cacheDir, tt.golden)
|
||||
|
||||
// Run Trivy client
|
||||
err := app.Run(osArgs)
|
||||
err := execute(osArgs)
|
||||
require.NoError(t, err)
|
||||
|
||||
want, err := os.ReadFile(tt.golden)
|
||||
@@ -386,13 +382,13 @@ func TestClientServerWithCycloneDX(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
app, addr, cacheDir := setup(t, setupOptions{})
|
||||
addr, cacheDir := setup(t, setupOptions{})
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
osArgs, outputFile := setupClient(t, tt.args, addr, cacheDir, "")
|
||||
|
||||
// Run Trivy client
|
||||
err := app.Run(osArgs)
|
||||
err := execute(osArgs)
|
||||
require.NoError(t, err)
|
||||
|
||||
f, err := os.Open(outputFile)
|
||||
@@ -450,7 +446,7 @@ func TestClientServerWithToken(t *testing.T) {
|
||||
|
||||
serverToken := "token"
|
||||
serverTokenHeader := "Trivy-Token"
|
||||
app, addr, cacheDir := setup(t, setupOptions{
|
||||
addr, cacheDir := setup(t, setupOptions{
|
||||
token: serverToken,
|
||||
tokenHeader: serverTokenHeader,
|
||||
})
|
||||
@@ -460,16 +456,14 @@ func TestClientServerWithToken(t *testing.T) {
|
||||
osArgs, outputFile := setupClient(t, c.args, addr, cacheDir, c.golden)
|
||||
|
||||
// Run Trivy client
|
||||
err := app.Run(osArgs)
|
||||
|
||||
err := execute(osArgs)
|
||||
if c.wantErr != "" {
|
||||
require.NotNil(t, err, c.name)
|
||||
require.Error(t, err, c.name)
|
||||
assert.Contains(t, err.Error(), c.wantErr, c.name)
|
||||
return
|
||||
} else {
|
||||
assert.NoError(t, err, c.name)
|
||||
}
|
||||
|
||||
require.NoError(t, err, c.name)
|
||||
compareReports(t, c.golden, outputFile)
|
||||
})
|
||||
}
|
||||
@@ -481,7 +475,7 @@ func TestClientServerWithRedis(t *testing.T) {
|
||||
redisC, addr := setupRedis(t, ctx)
|
||||
|
||||
// Set up Trivy server
|
||||
app, addr, cacheDir := setup(t, setupOptions{cacheBackend: addr})
|
||||
addr, cacheDir := setup(t, setupOptions{cacheBackend: addr})
|
||||
t.Cleanup(func() { os.RemoveAll(cacheDir) })
|
||||
|
||||
// Test parameters
|
||||
@@ -494,7 +488,7 @@ func TestClientServerWithRedis(t *testing.T) {
|
||||
osArgs, outputFile := setupClient(t, testArgs, addr, cacheDir, golden)
|
||||
|
||||
// Run Trivy client
|
||||
err := app.Run(osArgs)
|
||||
err := execute(osArgs)
|
||||
require.NoError(t, err)
|
||||
|
||||
compareReports(t, golden, outputFile)
|
||||
@@ -507,8 +501,8 @@ func TestClientServerWithRedis(t *testing.T) {
|
||||
osArgs, _ := setupClient(t, testArgs, addr, cacheDir, golden)
|
||||
|
||||
// Run Trivy client
|
||||
err := app.Run(osArgs)
|
||||
require.NotNil(t, err)
|
||||
err := execute(osArgs)
|
||||
require.Error(t, err)
|
||||
assert.Contains(t, err.Error(), "connect: connection refused")
|
||||
})
|
||||
}
|
||||
@@ -519,9 +513,8 @@ type setupOptions struct {
|
||||
cacheBackend string
|
||||
}
|
||||
|
||||
func setup(t *testing.T, options setupOptions) (*cli.App, string, string) {
|
||||
func setup(t *testing.T, options setupOptions) (string, string) {
|
||||
t.Helper()
|
||||
version := "dev"
|
||||
|
||||
// Set up testing DB
|
||||
cacheDir := initDB(t)
|
||||
@@ -534,28 +527,21 @@ func setup(t *testing.T, options setupOptions) (*cli.App, string, string) {
|
||||
addr := fmt.Sprintf("localhost:%d", port)
|
||||
|
||||
go func() {
|
||||
// Setup CLI App
|
||||
app := commands.NewApp(version)
|
||||
app.Writer = io.Discard
|
||||
osArgs := setupServer(addr, options.token, options.tokenHeader, cacheDir, options.cacheBackend)
|
||||
|
||||
// Run Trivy server
|
||||
app.Run(osArgs)
|
||||
require.NoError(t, execute(osArgs))
|
||||
}()
|
||||
|
||||
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
err = waitPort(ctx, addr)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Setup CLI App
|
||||
app := commands.NewApp(version)
|
||||
app.Writer = io.Discard
|
||||
|
||||
return app, addr, cacheDir
|
||||
return addr, cacheDir
|
||||
}
|
||||
|
||||
func setupServer(addr, token, tokenHeader, cacheDir, cacheBackend string) []string {
|
||||
osArgs := []string{"trivy", "--cache-dir", cacheDir, "server", "--skip-update", "--listen", addr}
|
||||
osArgs := []string{"--cache-dir", cacheDir, "server", "--skip-update", "--listen", addr}
|
||||
if token != "" {
|
||||
osArgs = append(osArgs, []string{"--token", token, "--token-header", tokenHeader}...)
|
||||
}
|
||||
@@ -573,7 +559,7 @@ func setupClient(t *testing.T, c csArgs, addr string, cacheDir string, golden st
|
||||
c.RemoteAddrOption = "--server"
|
||||
}
|
||||
t.Helper()
|
||||
osArgs := []string{"trivy", "--cache-dir", cacheDir, c.Command, c.RemoteAddrOption, "http://" + addr}
|
||||
osArgs := []string{"--cache-dir", cacheDir, c.Command, c.RemoteAddrOption, "http://" + addr}
|
||||
|
||||
if c.Format != "" {
|
||||
osArgs = append(osArgs, "--format", c.Format)
|
||||
|
||||
Reference in New Issue
Block a user