Skip to content

Commit

Permalink
Fail fast in tests if avalancheGo executable isn't an absolute path (#…
Browse files Browse the repository at this point in the history
…3707)

Signed-off-by: Yacov Manevich <[email protected]>
  • Loading branch information
yacovm authored Feb 10, 2025
1 parent 3352137 commit c224a76
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 5 deletions.
4 changes: 2 additions & 2 deletions tests/e2e/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
```bash
./scripts/build.sh # Builds avalanchego for use in deploying a test network
./scripts/build_xsvm.sh # Builds xsvm for use in deploying a test network with a subnet
./bin/ginkgo -v ./tests/e2e -- --avalanchego-path=./build/avalanchego
./bin/ginkgo -v ./tests/e2e -- --avalanchego-path=$PWD/build/avalanchego # Note that the path given for --avalanchego-path must be an absolute and not a relative path.
```

See [`tests.e2e.sh`](../../scripts/tests.e2e.sh) for an example.
Expand All @@ -32,7 +32,7 @@ primarily target the X-Chain:


```bash
./bin/ginkgo -v --label-filter=x ./tests/e2e -- --avalanchego-path=./build/avalanchego
./bin/ginkgo -v --label-filter=x ./tests/e2e -- --avalanchego-path=$PWD/build/avalanchego
```

The ginkgo docs provide further detail on [how to compose label
Expand Down
5 changes: 4 additions & 1 deletion tests/fixture/e2e/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,10 +133,13 @@ func NewTestEnvironment(tc tests.TestContext, flagVars *FlagVars, desiredNetwork
// Start a new network
if network == nil {
network = desiredNetwork
avalancheBinaryPath, err := flagVars.AvalancheGoExecPath()
require.NoError(err)

StartNetwork(
tc,
network,
flagVars.AvalancheGoExecPath(),
avalancheBinaryPath,
flagVars.PluginDir(),
flagVars.NetworkShutdownDelay(),
flagVars.StartNetwork(),
Expand Down
24 changes: 22 additions & 2 deletions tests/fixture/e2e/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"flag"
"fmt"
"os"
"path/filepath"
"time"

"github.com/ava-labs/avalanchego/tests/fixture/tmpnet"
Expand All @@ -28,8 +29,27 @@ type FlagVars struct {
nodeCount int
}

func (v *FlagVars) AvalancheGoExecPath() string {
return v.avalancheGoExecPath
func (v *FlagVars) AvalancheGoExecPath() (string, error) {
if err := v.validateAvalancheGoExecPath(); err != nil {
return "", err
}
return v.avalancheGoExecPath, nil
}

func (v *FlagVars) validateAvalancheGoExecPath() error {
if !filepath.IsAbs(v.avalancheGoExecPath) {
absPath, err := filepath.Abs(v.avalancheGoExecPath)
if err != nil {
return fmt.Errorf("avalanchego-path (%s) is a relative path but its absolute path cannot be determined: %w",
v.avalancheGoExecPath, err)
}

// If the absolute path file doesn't exist, it means it won't work out of the box.
if _, err := os.Stat(absPath); err != nil {
return fmt.Errorf("avalanchego-path (%s) is a relative path but must be an absolute path", v.avalancheGoExecPath)
}
}
return nil
}

func (v *FlagVars) PluginDir() string {
Expand Down

0 comments on commit c224a76

Please sign in to comment.