mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-11-25 13:47:19 +00:00
cli/smartcontract: set correct version for pkg/interop
Signed-off-by: Evgeniy Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
parent
492db89576
commit
945b56e350
3 changed files with 30 additions and 10 deletions
3
Makefile
3
Makefile
|
@ -13,7 +13,8 @@ DC_FILE=.docker/docker-compose.yml
|
||||||
GOOS ?= $(shell go env GOOS)
|
GOOS ?= $(shell go env GOOS)
|
||||||
REPO ?= "$(shell go list -m)"
|
REPO ?= "$(shell go list -m)"
|
||||||
VERSION ?= "$(shell git describe --tags 2>/dev/null | sed 's/^v//')$(shell if [ "$(GOOS)" = "windows" ]; then echo "_unsupported"; fi)"
|
VERSION ?= "$(shell git describe --tags 2>/dev/null | sed 's/^v//')$(shell if [ "$(GOOS)" = "windows" ]; then echo "_unsupported"; fi)"
|
||||||
BUILD_FLAGS = "-X '$(REPO)/pkg/config.Version=$(VERSION)'"
|
MODVERSION ?= "$(shell cat go.mod | cat go.mod | sed -r -n -e 's|.*pkg/interop (.*)|\1|p')"
|
||||||
|
BUILD_FLAGS = "-X '$(REPO)/pkg/config.Version=$(VERSION)' -X '$(REPO)/cli/smartcontract.ModVersion=$(MODVERSION)'"
|
||||||
|
|
||||||
IMAGE_REPO=nspccdev/neo-go
|
IMAGE_REPO=nspccdev/neo-go
|
||||||
|
|
||||||
|
|
|
@ -5,12 +5,12 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/nspcc-dev/neo-go/cli/smartcontract"
|
||||||
"github.com/nspcc-dev/neo-go/internal/random"
|
"github.com/nspcc-dev/neo-go/internal/random"
|
||||||
"github.com/nspcc-dev/neo-go/pkg/config"
|
"github.com/nspcc-dev/neo-go/pkg/config"
|
||||||
"github.com/nspcc-dev/neo-go/pkg/core/interop/storage"
|
"github.com/nspcc-dev/neo-go/pkg/core/interop/storage"
|
||||||
|
@ -83,6 +83,12 @@ func TestCalcHash(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestContractInitAndCompile(t *testing.T) {
|
func TestContractInitAndCompile(t *testing.T) {
|
||||||
|
// For proper nef generation.
|
||||||
|
config.Version = "v0.98.1-test"
|
||||||
|
|
||||||
|
// For proper contract init. The actual version as it will be replaced.
|
||||||
|
smartcontract.ModVersion = "v0.0.0"
|
||||||
|
|
||||||
tmpDir := t.TempDir()
|
tmpDir := t.TempDir()
|
||||||
e := newExecutor(t, false)
|
e := newExecutor(t, false)
|
||||||
|
|
||||||
|
@ -100,9 +106,6 @@ func TestContractInitAndCompile(t *testing.T) {
|
||||||
e.RunWithError(t, "neo-go", "contract", "init", "--name", ctrPath)
|
e.RunWithError(t, "neo-go", "contract", "init", "--name", ctrPath)
|
||||||
})
|
})
|
||||||
|
|
||||||
// For proper nef generation.
|
|
||||||
config.Version = "0.90.0-test"
|
|
||||||
|
|
||||||
srcPath := filepath.Join(ctrPath, "main.go")
|
srcPath := filepath.Join(ctrPath, "main.go")
|
||||||
cfgPath := filepath.Join(ctrPath, "neo-go.yml")
|
cfgPath := filepath.Join(ctrPath, "neo-go.yml")
|
||||||
nefPath := filepath.Join(tmpDir, "testcontract.nef")
|
nefPath := filepath.Join(tmpDir, "testcontract.nef")
|
||||||
|
@ -121,10 +124,16 @@ func TestContractInitAndCompile(t *testing.T) {
|
||||||
e.RunWithError(t, append(cmd, "--config", cfgName)...)
|
e.RunWithError(t, append(cmd, "--config", cfgName)...)
|
||||||
})
|
})
|
||||||
|
|
||||||
// FIXME too bad
|
// Replace `pkg/interop` in go.mod to avoid getting an actual module version.
|
||||||
c := exec.Command("go", "mod", "tidy")
|
goMod := filepath.Join(ctrPath, "go.mod")
|
||||||
c.Dir = ctrPath
|
data, err := ioutil.ReadFile(goMod)
|
||||||
require.NoError(t, c.Run())
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
wd, err := os.Getwd()
|
||||||
|
require.NoError(t, err)
|
||||||
|
data = append(data, "\nreplace github.com/nspcc-dev/neo-go/pkg/interop => "...)
|
||||||
|
data = append(data, filepath.Join(wd, "../pkg/interop")...)
|
||||||
|
require.NoError(t, ioutil.WriteFile(goMod, data, os.ModePerm))
|
||||||
|
|
||||||
cmd = append(cmd, "--config", cfgPath)
|
cmd = append(cmd, "--config", cfgPath)
|
||||||
e.Run(t, cmd...)
|
e.Run(t, cmd...)
|
||||||
|
|
|
@ -69,6 +69,10 @@ var (
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// ModVersion contains `pkg/interop` module version
|
||||||
|
// suitable to be used in go.mod.
|
||||||
|
var ModVersion string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// smartContractTmpl is written to a file when used with `init` command.
|
// smartContractTmpl is written to a file when used with `init` command.
|
||||||
// %s is parsed to be the smartContractName.
|
// %s is parsed to be the smartContractName.
|
||||||
|
@ -449,9 +453,15 @@ func initSmartContract(ctx *cli.Context) error {
|
||||||
if err := ioutil.WriteFile(filepath.Join(basePath, "neo-go.yml"), b, 0644); err != nil {
|
if err := ioutil.WriteFile(filepath.Join(basePath, "neo-go.yml"), b, 0644); err != nil {
|
||||||
return cli.NewExitError(err, 1)
|
return cli.NewExitError(err, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ver := ModVersion
|
||||||
|
if ver == "" {
|
||||||
|
ver = "latest"
|
||||||
|
}
|
||||||
|
|
||||||
gm := []byte("module " + contractName + `
|
gm := []byte("module " + contractName + `
|
||||||
require (
|
require (
|
||||||
github.com/nspcc-dev/neo-go/pkg/interop latest
|
github.com/nspcc-dev/neo-go/pkg/interop ` + ver + `
|
||||||
)`)
|
)`)
|
||||||
if err := ioutil.WriteFile(filepath.Join(basePath, "go.mod"), gm, 0644); err != nil {
|
if err := ioutil.WriteFile(filepath.Join(basePath, "go.mod"), gm, 0644); err != nil {
|
||||||
return cli.NewExitError(err, 1)
|
return cli.NewExitError(err, 1)
|
||||||
|
|
Loading…
Reference in a new issue