Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions errors.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package gozero

import "errors"

var (
// ErrNoValidEngine is returned when no valid engine is found
ErrNoValidEngine = errors.New("no valid engine found")

// ErrNoEngines is returned when no engines are provided
ErrNoEngines = errors.New("no engines provided")
)
5 changes: 2 additions & 3 deletions gozero.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package gozero

import (
"context"
"errors"
"os/exec"

"github.com/projectdiscovery/gozero/cmdexec"
Expand All @@ -17,7 +16,7 @@ type Gozero struct {
// New creates a new gozero executor
func New(options *Options) (*Gozero, error) {
if len(options.Engines) == 0 {
return nil, errors.New("no engines provided")
return nil, ErrNoEngines
}
// attempt to locate the interpreter by executing it
for _, engine := range options.Engines {
Expand All @@ -32,7 +31,7 @@ func New(options *Options) (*Gozero, error) {
}
}
if options.engine == "" {
return nil, errors.New("no valid engine found")
return nil, ErrNoValidEngine
}
return &Gozero{Options: options}, nil
}
Expand Down
24 changes: 24 additions & 0 deletions gozero_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,27 @@ func TestEval(t *testing.T) {
err = input.Cleanup()
require.Nil(t, err)
}

func TestErr(t *testing.T) {
opts := &Options{}
if osutils.IsWindows() {
opts.Engines = []string{"nonexistent.exe"}
} else {
opts.Engines = []string{"nonexistent"}
}
gozero, err := New(opts)
require.NotNil(t, err)
require.Nil(t, gozero)
require.ErrorIs(t, err, ErrNoValidEngine)

opts.Engines = []string{}
gozero, err = New(opts)
require.NotNil(t, err)
require.Nil(t, gozero)
require.ErrorIs(t, err, ErrNoEngines)

opts.Engines = []string{"python3"}
gozero, err = New(opts)
require.Nil(t, err)
require.NotNil(t, gozero)
}