Skip to content

Commit

Permalink
chore: add cmd tests
Browse files Browse the repository at this point in the history
  • Loading branch information
freak12techno committed Aug 31, 2024
1 parent 6267918 commit 4de7462
Show file tree
Hide file tree
Showing 6 changed files with 121 additions and 27 deletions.
1 change: 1 addition & 0 deletions assets/config-invalid.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[[chains]]
33 changes: 8 additions & 25 deletions cmd/missed-blocks-checker.go
Original file line number Diff line number Diff line change
@@ -1,46 +1,33 @@
package main

import (
"github.com/spf13/cobra"

Check failure on line 4 in cmd/missed-blocks-checker.go

View workflow job for this annotation

GitHub Actions / lint

File is not `goimports`-ed (goimports)
"main/pkg"
configPkg "main/pkg/config"
"main/pkg/fs"
"main/pkg/logger"
"os"

"github.com/spf13/cobra"
)

var (
version = "unknown"
)

type OsFS struct {
}

func (fs *OsFS) ReadFile(name string) ([]byte, error) {
return os.ReadFile(name)
}

func (fs *OsFS) Create(path string) (fs.File, error) {
return os.Create(path)
}

func ExecuteMain(configPath string) {
filesystem := &OsFS{}
filesystem := &fs.OsFS{}
app := pkg.NewApp(configPath, filesystem, version)
app.Start()
}

func ExecuteValidateConfig(configPath string) {
filesystem := &OsFS{}
filesystem := &fs.OsFS{}

config, err := configPkg.GetConfig(configPath, filesystem)
if err != nil {
logger.GetDefaultLogger().Fatal().Err(err).Msg("Could not load config!")
logger.GetDefaultLogger().Panic().Err(err).Msg("Could not load config!")
}

if err := config.Validate(); err != nil {
logger.GetDefaultLogger().Fatal().Err(err).Msg("Config is invalid!")
logger.GetDefaultLogger().Panic().Err(err).Msg("Config is invalid!")
}

logger.GetDefaultLogger().Info().Msg("Provided config is valid.")
Expand Down Expand Up @@ -68,18 +55,14 @@ func main() {
}

rootCmd.PersistentFlags().StringVar(&ConfigPath, "config", "", "Config file path")
if err := rootCmd.MarkPersistentFlagRequired("config"); err != nil {
logger.GetDefaultLogger().Fatal().Err(err).Msg("Could not set flag as required")
}
_ = rootCmd.MarkPersistentFlagRequired("config")

validateConfigCmd.PersistentFlags().StringVar(&ConfigPath, "config", "", "Config file path")
if err := validateConfigCmd.MarkPersistentFlagRequired("config"); err != nil {
logger.GetDefaultLogger().Fatal().Err(err).Msg("Could not set flag as required")
}
_ = validateConfigCmd.MarkPersistentFlagRequired("config")

rootCmd.AddCommand(validateConfigCmd)

if err := rootCmd.Execute(); err != nil {
logger.GetDefaultLogger().Fatal().Err(err).Msg("Could not start application")
logger.GetDefaultLogger().Panic().Err(err).Msg("Could not start application")
}
}
81 changes: 81 additions & 0 deletions cmd/missed-blocks-checker_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package main

import (
"os"
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

//nolint:paralleltest // disabled
func TestValidateConfigNoConfigProvided(t *testing.T) {
defer func() {
if r := recover(); r == nil {
require.Fail(t, "Expected to have a panic here!")
}
}()

os.Args = []string{"cmd", "validate-config"}
main()
assert.True(t, true)
}

//nolint:paralleltest // disabled
func TestValidateConfigFailedToLoad(t *testing.T) {
defer func() {
if r := recover(); r == nil {
require.Fail(t, "Expected to have a panic here!")
}
}()

os.Args = []string{"cmd", "validate-config", "--config", "../assets/config-not-found.toml"}
main()
assert.True(t, true)
}

//nolint:paralleltest // disabled
func TestValidateConfigInvalid(t *testing.T) {
defer func() {
if r := recover(); r == nil {
require.Fail(t, "Expected to have a panic here!")
}
}()

os.Args = []string{"cmd", "validate-config", "--config", "../assets/config-invalid.toml"}
main()
assert.True(t, true)
}

//nolint:paralleltest // disabled
func TestValidateConfigValid(t *testing.T) {
os.Args = []string{"cmd", "validate-config", "--config", "../assets/valid.toml"}
main()
assert.True(t, true)
}

//nolint:paralleltest // disabled
func TestStartNoConfigProvided(t *testing.T) {
defer func() {
if r := recover(); r == nil {
require.Fail(t, "Expected to have a panic here!")
}
}()

os.Args = []string{"cmd"}
main()
assert.True(t, true)
}

//nolint:paralleltest // disabled
func TestStartConfigProvided(t *testing.T) {
defer func() {
if r := recover(); r == nil {
require.Fail(t, "Expected to have a panic here!")
}
}()

os.Args = []string{"cmd", "--config", "../assets/config-invalid.toml"}
main()
assert.True(t, true)
}
4 changes: 2 additions & 2 deletions pkg/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ type App struct {
func NewApp(configPath string, filesystem fs.FS, version string) *App {
config, err := configPkg.GetConfig(configPath, filesystem)
if err != nil {
loggerPkg.GetDefaultLogger().Fatal().Err(err).Msg("Could not load config")
loggerPkg.GetDefaultLogger().Panic().Err(err).Msg("Could not load config")
}

if err = config.Validate(); err != nil {
loggerPkg.GetDefaultLogger().Fatal().Err(err).Msg("Provided config is invalid!")
loggerPkg.GetDefaultLogger().Panic().Err(err).Msg("Provided config is invalid!")
}

for _, chainConfig := range config.ChainConfigs {
Expand Down
14 changes: 14 additions & 0 deletions pkg/fs/os_fs.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package fs

import "os"

type OsFS struct {
}

func (fs *OsFS) ReadFile(name string) ([]byte, error) {
return os.ReadFile(name)
}

func (fs *OsFS) Create(path string) (File, error) {
return os.Create(path)
}
15 changes: 15 additions & 0 deletions pkg/fs/os_fs_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package fs

import (
"testing"

"github.com/stretchr/testify/require"
)

func TestOsFsCreate(t *testing.T) {
t.Parallel()

fs := &OsFS{}
_, err := fs.Create("/tmp/file.txt")
require.NoError(t, err)
}

0 comments on commit 4de7462

Please sign in to comment.