Merge pull request #2264 from nspcc-dev/fix-win-tests

*: Windows compatibility fixes
This commit is contained in:
Roman Khimov 2021-11-29 11:25:35 +03:00 committed by GitHub
commit 33e37e60e5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
30 changed files with 390 additions and 207 deletions

View file

@ -0,0 +1,15 @@
#!C:\Program Files\PowerShell\7\pwsh.EXE -File
$bin = '/usr/bin/neo-go.exe'
for ( $i = 0; $i -lt $args.count; $i++ ) {
if ($args[$i] -eq "node"){
Write-Host "=> Try to restore blocks before running node"
if (($Env:ACC -ne $null) -and (Test-Path $Env:ACC -PathType Leaf)) {
& $bin db restore -p --config-path /config -i $Env:ACC
}
break
}
}
& $bin $args

93
.github/workflows/build.yml vendored Normal file
View file

@ -0,0 +1,93 @@
name: Build
on:
pull_request:
branches:
- master
types: [opened, synchronize]
paths-ignore:
- 'scripts/**'
- '**/*.md'
workflow_dispatch:
env:
GO111MODULE: "on"
jobs:
build_cli_ubuntu:
name: Build CLI (Ubuntu)
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.17
- name: Restore Go modules from cache
uses: actions/cache@v2
with:
path: /home/runner/go/pkg/mod
key: deps-${{ hashFiles('go.sum') }}
- name: Update Go modules
run: go mod download -json
- name: Build CLI
run: make build
build_cli_wsc:
name: Build CLI (Windows Server Core)
runs-on: windows-2022
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.17
- name: Restore Go modules from cache
uses: actions/cache@v2
with:
path: /home/runner/go/pkg/mod
key: deps-${{ hashFiles('go.sum') }}
- name: Update Go modules
run: go mod download -json
- name: Build CLI
run: make build
build_image_ubuntu:
needs: build_cli_ubuntu
name: Build Docker image (Ubuntu)
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Build Docker image
run: make image
build_image_wsc:
needs: build_cli_wsc
name: Build Docker image (Windows Server Core)
runs-on: windows-2022
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Build Docker image
run: make image-wsc

View file

@ -15,11 +15,11 @@ on:
workflow_dispatch:
inputs:
ref:
description: 'Ref to build Docker image [default: latest master; examples: v0.92.0, 0a4ff9d3e4a9ab432fd5812eb18c98e03b5a7432]'
description: 'Ref to build Docker images for Ubuntu and Windows Server Core [default: latest master; examples: v0.92.0, 0a4ff9d3e4a9ab432fd5812eb18c98e03b5a7432]'
required: false
default: ''
push_image:
description: 'Push image to DockerHub [default: false; examples: true, false]'
description: 'Push images to DockerHub [default: false; examples: true, false]'
required: false
default: 'false'
@ -29,8 +29,8 @@ env:
# A workflow run.
jobs:
test:
name: Run tests before publishing
tests_ubuntu:
name: Run Ubuntu-based tests before publishing
runs-on: ubuntu-20.04
steps:
@ -70,10 +70,10 @@ jobs:
- name: Run tests
run: make test
publish:
publish_ubuntu:
# Ensure test job passes before pushing image.
needs: test
name: Publish image to DockerHub
needs: tests_ubuntu
name: Publish Ubuntu-based image to DockerHub
runs-on: ubuntu-20.04
steps:
- name: Checkout (manual run)
@ -91,20 +91,6 @@ jobs:
# Allows to fetch all history for all branches and tags. Need this for proper versioning.
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.17
- name: Restore go modules from cache
uses: actions/cache@v2
with:
path: /home/runner/go/pkg/mod
key: deps-${{ hashFiles('go.sum') }}
- name: Update Go modules
run: go mod download -json
- name: Build image
run: make image
@ -125,3 +111,81 @@ jobs:
- name: Push image with 'latest' tag to registry
if: ${{ github.event_name == 'release' && github.event.release.target_commitish == 'master' }}
run: make image-push-latest
tests_wsc:
name: Run WindowsServerCore-based tests before publishing
runs-on: windows-2022
steps:
- name: Checkout (manual run)
if: ${{ github.event_name == 'workflow_dispatch' }}
uses: actions/checkout@v2
with:
ref: ${{ github.event.inputs.ref }}
# Allows to fetch all history for all branches and tags. Need this for proper versioning.
fetch-depth: 0
- name: Checkout (automatical run)
if: ${{ github.event_name != 'workflow_dispatch' }}
uses: actions/checkout@v2
with:
# Allows to fetch all history for all branches and tags. Need this for proper versioning.
fetch-depth: 0
- name: Sync VM submodule
run: |
git submodule sync
git submodule update --init
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.17
- name: Restore go modules from cache
uses: actions/cache@v2
with:
path: /home/runner/go/pkg/mod
key: deps-${{ hashFiles('go.sum') }}
- name: Update Go modules
run: go mod download -json
- name: Run tests
run: make test
publish_wsc:
# Ensure test job passes before pushing image.
# TODO: currently test_wsc job is failing, so we have `always()` condition.
# After #2269 and #2268 this condition should be removed.
if: ${{ always() }}
needs: tests_wsc
name: Publish WindowsServerCore-based image to DockerHub
runs-on: windows-2022
steps:
- name: Checkout (manual run)
if: ${{ github.event_name == 'workflow_dispatch' }}
uses: actions/checkout@v2
with:
ref: ${{ github.event.inputs.ref }}
# Allows to fetch all history for all branches and tags. Need this for proper versioning.
fetch-depth: 0
- name: Checkout (automatical run)
if: ${{ github.event_name != 'workflow_dispatch' }}
uses: actions/checkout@v2
with:
# Allows to fetch all history for all branches and tags. Need this for proper versioning.
fetch-depth: 0
- name: Build image
run: make image-wsc
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Push image to registry
if: ${{ github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.push_image == 'true') }}
run: make image-wsc-push

View file

@ -66,11 +66,19 @@ jobs:
verbose: true
tests:
name: Go
runs-on: ubuntu-20.04
name: Run tests
runs-on: ${{ matrix.os }}
strategy:
matrix:
go_versions: [ '1.15', '1.16' ]
os: [ubuntu-20.04, windows-2022]
go_versions: [ '1.15', '1.16', '1.17' ]
exclude:
- os: windows-2022
go_versions: '1.15'
- os: windows-2022
go_versions: '1.16'
- os: ubuntu-20.04
go_versions: '1.17'
fail-fast: false
steps:
- uses: actions/checkout@v2
@ -98,56 +106,3 @@ jobs:
- name: Run tests
run: go test -v -race ./...
build_cli:
name: Build CLI
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.17
- name: Restore Go modules from cache
uses: actions/cache@v2
with:
path: /home/runner/go/pkg/mod
key: deps-${{ hashFiles('go.sum') }}
- name: Update Go modules
run: go mod download -json
- name: Build CLI
run: make build
build_image:
needs: build_cli
name: Build Docker image
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.17
- name: Restore Go modules from cache
uses: actions/cache@v2
with:
path: /home/runner/go/pkg/mod
key: deps-${{ hashFiles('go.sum') }}
- name: Update Go modules
run: go mod download -json
- name: Build Docker image
run: make image

36
Dockerfile.wsc Normal file
View file

@ -0,0 +1,36 @@
# Builder image
FROM golang:windowsservercore-ltsc2022 as builder
COPY . /neo-go
WORKDIR /neo-go
ARG REPO=repository
ARG VERSION=dev
SHELL ["cmd", "/S", "/C"]
RUN go env -w CGO_ENABLED=0
ENV GOGC=off
RUN go build -trimpath -v -o ./bin/neo-go.exe -ldflags="-X %REPO%/pkg/config.Version=%VERSION%" ./cli/main.go
# Executable image
FROM mcr.microsoft.com/windows/servercore:ltsc2022
ARG VERSION
LABEL version=%VERSION%
WORKDIR /
COPY --from=builder /neo-go/config /config
COPY --from=builder /neo-go/.docker/privnet-entrypoint.ps1 /usr/bin/privnet-entrypoint.ps1
COPY --from=builder /neo-go/bin/neo-go.exe /usr/bin/neo-go.exe
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';", "$ProgressPreference = 'SilentlyContinue';"]
# Check executable version.
RUN /usr/bin/neo-go.exe --version
ENTRYPOINT ["powershell", "-File", "/usr/bin/privnet-entrypoint.ps1"]
CMD ["node", "--config-path", "/config", "--privnet"]

View file

@ -18,7 +18,7 @@ IMAGE_REPO=nspccdev/neo-go
# All of the targets are phony here because we don't really use make dependency
# tracking for files
.PHONY: build deps image image-latest image-push image-push-latest check-version clean-cluster push-tag \
.PHONY: build deps image image-wsc image-latest image-push image-wsc-push image-push-latest check-version clean-cluster push-tag \
test vet lint fmt cover
build: deps
@ -49,19 +49,27 @@ postinst: install
&& systemctl enable neo-go.service
image: deps
@echo "=> Building image"
@echo "=> Building image for Ubuntu"
@docker build -t $(IMAGE_REPO):$(VERSION) --build-arg REPO=$(REPO) --build-arg VERSION=$(VERSION) .
image-wsc: deps
@echo "=> Building image for Windows Server Core"
@docker build -f Dockerfile.wsc -t $(IMAGE_REPO):$(VERSION)_WindowsServerCore --build-arg REPO=$(REPO) --build-arg VERSION=$(VERSION) .
image-latest: deps
@echo "=> Building image with 'latest' tag"
@docker build -t $(IMAGE_REPO):latest --build-arg REPO=$(REPO) --build-arg VERSION=$(VERSION) .
image-push:
@echo "=> Publish image"
@echo "=> Publish image for Ubuntu"
@docker push $(IMAGE_REPO):$(VERSION)
image-wsc-push:
@echo "=> Publish image for Windows Server Core"
@docker push $(IMAGE_REPO):$(VERSION)_WindowsServerCore
image-push-latest:
@echo "=> Publish image with 'latest' tag"
@echo "=> Publish image for Ubuntu with 'latest' tag"
@docker push $(IMAGE_REPO):latest
check-version:

View file

@ -5,7 +5,7 @@ import (
"encoding/json"
"io/ioutil"
"os"
"path"
"path/filepath"
"strconv"
"strings"
"testing"
@ -60,7 +60,7 @@ func TestCalcHash(t *testing.T) {
"--in", "./testdata/verify.nef123", "--manifest", manifestPath)...)
})
t.Run("invalid file", func(t *testing.T) {
p := path.Join(tmpDir, "neogo.calchash.verify.nef")
p := filepath.Join(tmpDir, "neogo.calchash.verify.nef")
require.NoError(t, ioutil.WriteFile(p, src[:4], os.ModePerm))
e.RunWithError(t, append(cmd, "--sender", sender.StringLE(), "--in", p, "--manifest", manifestPath)...)
})
@ -92,7 +92,7 @@ func TestContractInitAndCompile(t *testing.T) {
e.RunWithError(t, "neo-go", "contract", "init", "--name", "\x00")
})
ctrPath := path.Join(tmpDir, "testcontract")
ctrPath := filepath.Join(tmpDir, "testcontract")
e.Run(t, "neo-go", "contract", "init", "--name", ctrPath)
t.Run("don't rewrite existing directory", func(t *testing.T) {
@ -102,10 +102,10 @@ func TestContractInitAndCompile(t *testing.T) {
// For proper nef generation.
config.Version = "0.90.0-test"
srcPath := path.Join(ctrPath, "main.go")
cfgPath := path.Join(ctrPath, "neo-go.yml")
nefPath := path.Join(tmpDir, "testcontract.nef")
manifestPath := path.Join(tmpDir, "testcontract.manifest.json")
srcPath := filepath.Join(ctrPath, "main.go")
cfgPath := filepath.Join(ctrPath, "neo-go.yml")
nefPath := filepath.Join(tmpDir, "testcontract.nef")
manifestPath := filepath.Join(tmpDir, "testcontract.manifest.json")
cmd := []string{"neo-go", "contract", "compile"}
t.Run("missing source", func(t *testing.T) {
e.RunWithError(t, cmd...)
@ -116,7 +116,7 @@ func TestContractInitAndCompile(t *testing.T) {
e.RunWithError(t, cmd...)
})
t.Run("provided non-existent config", func(t *testing.T) {
cfgName := path.Join(ctrPath, "notexists.yml")
cfgName := filepath.Join(ctrPath, "notexists.yml")
e.RunWithError(t, append(cmd, "--config", cfgName)...)
})
@ -143,8 +143,8 @@ func TestDeployBigContract(t *testing.T) {
config.Version = "0.90.0-test"
tmpDir := t.TempDir()
nefName := path.Join(tmpDir, "deploy.nef")
manifestName := path.Join(tmpDir, "deploy.manifest.json")
nefName := filepath.Join(tmpDir, "deploy.nef")
manifestName := filepath.Join(tmpDir, "deploy.manifest.json")
e.Run(t, "neo-go", "contract", "compile",
"--in", "testdata/deploy/main.go", // compile single file
"--config", "testdata/deploy/neo-go.yml",
@ -164,8 +164,8 @@ func TestContractDeployWithData(t *testing.T) {
config.Version = "0.90.0-test"
tmpDir := t.TempDir()
nefName := path.Join(tmpDir, "deploy.nef")
manifestName := path.Join(tmpDir, "deploy.manifest.json")
nefName := filepath.Join(tmpDir, "deploy.nef")
manifestName := filepath.Join(tmpDir, "deploy.manifest.json")
eCompile.Run(t, "neo-go", "contract", "compile",
"--in", "testdata/deploy/main.go", // compile single file
"--config", "testdata/deploy/neo-go.yml",
@ -241,8 +241,8 @@ func TestDeployWithSigners(t *testing.T) {
config.Version = "0.90.0-test"
tmpDir := t.TempDir()
nefName := path.Join(tmpDir, "deploy.nef")
manifestName := path.Join(tmpDir, "deploy.manifest.json")
nefName := filepath.Join(tmpDir, "deploy.nef")
manifestName := filepath.Join(tmpDir, "deploy.manifest.json")
e.Run(t, "neo-go", "contract", "compile",
"--in", "testdata/deploy/main.go",
"--config", "testdata/deploy/neo-go.yml",
@ -270,8 +270,8 @@ func TestContractManifestGroups(t *testing.T) {
require.NoError(t, err)
defer w.Close()
nefName := path.Join(tmpDir, "deploy.nef")
manifestName := path.Join(tmpDir, "deploy.manifest.json")
nefName := filepath.Join(tmpDir, "deploy.nef")
manifestName := filepath.Join(tmpDir, "deploy.manifest.json")
e.Run(t, "neo-go", "contract", "compile",
"--in", "testdata/deploy/main.go", // compile single file
"--config", "testdata/deploy/neo-go.yml",
@ -302,8 +302,8 @@ func deployVerifyContract(t *testing.T, e *executor) util.Uint160 {
func deployContract(t *testing.T, e *executor, inPath, configPath, wallet, address, pass string) util.Uint160 {
tmpDir := t.TempDir()
nefName := path.Join(tmpDir, "contract.nef")
manifestName := path.Join(tmpDir, "contract.manifest.json")
nefName := filepath.Join(tmpDir, "contract.nef")
manifestName := filepath.Join(tmpDir, "contract.manifest.json")
e.Run(t, "neo-go", "contract", "compile",
"--in", inPath,
"--config", configPath,
@ -330,8 +330,8 @@ func TestComlileAndInvokeFunction(t *testing.T) {
config.Version = "0.90.0-test"
tmpDir := t.TempDir()
nefName := path.Join(tmpDir, "deploy.nef")
manifestName := path.Join(tmpDir, "deploy.manifest.json")
nefName := filepath.Join(tmpDir, "deploy.nef")
manifestName := filepath.Join(tmpDir, "deploy.manifest.json")
e.Run(t, "neo-go", "contract", "compile",
"--in", "testdata/deploy/main.go", // compile single file
"--config", "testdata/deploy/neo-go.yml",
@ -417,7 +417,7 @@ func TestComlileAndInvokeFunction(t *testing.T) {
e.RunWithError(t, cmd...)
})
t.Run("non-existent wallet", func(t *testing.T) {
cmd := append(cmd, "--wallet", path.Join(tmpDir, "not.exists"),
cmd := append(cmd, "--wallet", filepath.Join(tmpDir, "not.exists"),
h.StringLE(), "getValue")
e.RunWithError(t, cmd...)
})
@ -452,7 +452,7 @@ func TestComlileAndInvokeFunction(t *testing.T) {
})
t.Run("real invoke and save tx", func(t *testing.T) {
txout := path.Join(tmpDir, "test_contract_tx.json")
txout := filepath.Join(tmpDir, "test_contract_tx.json")
cmd = []string{"neo-go", "contract", "invokefunction",
"--rpc-endpoint", "http://" + e.RPC.Addr,
@ -548,8 +548,8 @@ func TestComlileAndInvokeFunction(t *testing.T) {
})
t.Run("Update", func(t *testing.T) {
nefName := path.Join(tmpDir, "updated.nef")
manifestName := path.Join(tmpDir, "updated.manifest.json")
nefName := filepath.Join(tmpDir, "updated.nef")
manifestName := filepath.Join(tmpDir, "updated.manifest.json")
e.Run(t, "neo-go", "contract", "compile",
"--config", "testdata/deploy/neo-go.yml",
"--in", "testdata/deploy/", // compile all files in dir
@ -597,8 +597,8 @@ func TestContractInspect(t *testing.T) {
const srcPath = "testdata/deploy/main.go"
tmpDir := t.TempDir()
nefName := path.Join(tmpDir, "deploy.nef")
manifestName := path.Join(tmpDir, "deploy.manifest.json")
nefName := filepath.Join(tmpDir, "deploy.nef")
manifestName := filepath.Join(tmpDir, "deploy.manifest.json")
e.Run(t, "neo-go", "contract", "compile",
"--in", srcPath,
"--config", "testdata/deploy/neo-go.yml",
@ -615,7 +615,7 @@ func TestContractInspect(t *testing.T) {
})
t.Run("with nef", func(t *testing.T) {
e.RunWithError(t, append(cmd, "--in", nefName, "--compile")...)
e.RunWithError(t, append(cmd, "--in", path.Join(tmpDir, "not.exists"))...)
e.RunWithError(t, append(cmd, "--in", filepath.Join(tmpDir, "not.exists"))...)
e.Run(t, append(cmd, "--in", nefName)...)
require.True(t, strings.Contains(e.Out.String(), "SYSCALL"))
})
@ -639,20 +639,20 @@ func TestCompileExamples(t *testing.T) {
continue
}
t.Run(info.Name(), func(t *testing.T) {
infos, err := ioutil.ReadDir(path.Join(examplePath, info.Name()))
infos, err := ioutil.ReadDir(filepath.Join(examplePath, info.Name()))
require.NoError(t, err)
require.False(t, len(infos) == 0, "detected smart contract folder with no contract in it")
outF := path.Join(tmpDir, info.Name()+".nef")
manifestF := path.Join(tmpDir, info.Name()+".manifest.json")
outF := filepath.Join(tmpDir, info.Name()+".nef")
manifestF := filepath.Join(tmpDir, info.Name()+".manifest.json")
cfgName := filterFilename(infos, ".yml")
opts := []string{
"neo-go", "contract", "compile",
"--in", path.Join(examplePath, info.Name()),
"--in", filepath.Join(examplePath, info.Name()),
"--out", outF,
"--manifest", manifestF,
"--config", path.Join(examplePath, info.Name(), cfgName),
"--config", filepath.Join(examplePath, info.Name(), cfgName),
}
e.Run(t, opts...)
@ -677,13 +677,13 @@ func TestCompileExamples(t *testing.T) {
t.Run("invalid manifest", func(t *testing.T) {
const dir = "./testdata/"
for _, name := range []string{"invalid1", "invalid2", "invalid3", "invalid4"} {
outF := path.Join(tmpDir, name+".nef")
manifestF := path.Join(tmpDir, name+".manifest.json")
outF := filepath.Join(tmpDir, name+".nef")
manifestF := filepath.Join(tmpDir, name+".manifest.json")
e.RunWithError(t, "neo-go", "contract", "compile",
"--in", path.Join(dir, name),
"--in", filepath.Join(dir, name),
"--out", outF,
"--manifest", manifestF,
"--config", path.Join(dir, name, "invalid.yml"),
"--config", filepath.Join(dir, name, "invalid.yml"),
)
}
})

View file

@ -3,7 +3,7 @@ package main
import (
"io/ioutil"
"os"
"path"
"path/filepath"
"testing"
"github.com/nspcc-dev/neo-go/pkg/config"
@ -14,8 +14,8 @@ import (
func TestDBRestore(t *testing.T) {
tmpDir := t.TempDir()
chainPath := path.Join(tmpDir, "neogotestchain")
cfg, err := config.LoadFile("../config/protocol.unit_testnet.yml")
chainPath := filepath.Join(tmpDir, "neogotestchain")
cfg, err := config.LoadFile(filepath.Join("..", "config", "protocol.unit_testnet.yml"))
require.NoError(t, err, "could not load config")
cfg.ApplicationConfiguration.DBConfiguration.Type = "leveldb"
cfg.ApplicationConfiguration.DBConfiguration.LevelDBOptions.DataDirectoryPath = chainPath
@ -23,13 +23,13 @@ func TestDBRestore(t *testing.T) {
out, err := yaml.Marshal(cfg)
require.NoError(t, err)
cfgPath := path.Join(tmpDir, "protocol.unit_testnet.yml")
cfgPath := filepath.Join(tmpDir, "protocol.unit_testnet.yml")
require.NoError(t, ioutil.WriteFile(cfgPath, out, os.ModePerm))
// generated via `go run ./scripts/gendump/main.go --out ./cli/testdata/chain50x2.acc --blocks 50 --txs 2`
const inDump = "./testdata/chain50x2.acc"
e := newExecutor(t, false)
stateDump := path.Join(tmpDir, "neogo.teststate")
stateDump := filepath.Join(tmpDir, "neogo.teststate")
baseArgs := []string{"neo-go", "db", "restore", "--unittest",
"--config-path", tmpDir, "--in", inDump, "--dump", stateDump}
@ -46,7 +46,7 @@ func TestDBRestore(t *testing.T) {
e.Run(t, baseArgs...)
// Dump and compare.
dumpPath := path.Join(tmpDir, "testdump.acc")
dumpPath := filepath.Join(tmpDir, "testdump.acc")
e.Run(t, "neo-go", "db", "dump", "--unittest",
"--config-path", tmpDir, "--out", dumpPath)

View file

@ -6,7 +6,7 @@ import (
"fmt"
"math/big"
"os"
"path"
"path/filepath"
"testing"
"github.com/nspcc-dev/neo-go/pkg/crypto/hash"
@ -32,8 +32,8 @@ func TestSignMultisigTx(t *testing.T) {
// Create 2 wallets participating in multisig.
tmpDir := t.TempDir()
wallet1Path := path.Join(tmpDir, "multiWallet1.json")
wallet2Path := path.Join(tmpDir, "multiWallet2.json")
wallet1Path := filepath.Join(tmpDir, "multiWallet1.json")
wallet2Path := filepath.Join(tmpDir, "multiWallet2.json")
addAccount := func(w string, wif string) {
e.Run(t, "neo-go", "wallet", "init", "--wallet", w)
@ -64,7 +64,7 @@ func TestSignMultisigTx(t *testing.T) {
priv, err := keys.NewPrivateKey()
require.NoError(t, err)
txPath := path.Join(tmpDir, "multisigtx.json")
txPath := filepath.Join(tmpDir, "multisigtx.json")
t.Cleanup(func() {
os.Remove(txPath)
})

View file

@ -6,7 +6,7 @@ import (
"io"
"io/ioutil"
"math/big"
"path"
"path/filepath"
"strings"
"testing"
@ -31,7 +31,7 @@ func TestNEP11Import(t *testing.T) {
e := newExecutor(t, true)
tmpDir := t.TempDir()
walletPath := path.Join(tmpDir, "walletForImport.json")
walletPath := filepath.Join(tmpDir, "walletForImport.json")
// deploy NFT NeoNameService contract
nnsContractHash := deployNNSContract(t, e)
@ -95,7 +95,7 @@ func TestNEP11_OwnerOf_BalanceOf_Transfer(t *testing.T) {
// copy wallet to temp dir in order not to overwrite the original file
bytesRead, err := ioutil.ReadFile(nftOwnerWallet)
require.NoError(t, err)
wall := path.Join(tmpDir, "my_wallet.json")
wall := filepath.Join(tmpDir, "my_wallet.json")
err = ioutil.WriteFile(wall, bytesRead, 0755)
require.NoError(t, err)

View file

@ -3,7 +3,7 @@ package main
import (
"io"
"math/big"
"path"
"path/filepath"
"strconv"
"strings"
"testing"
@ -298,7 +298,7 @@ func TestNEP17MultiTransfer(t *testing.T) {
func TestNEP17ImportToken(t *testing.T) {
e := newExecutor(t, true)
tmpDir := t.TempDir()
walletPath := path.Join(tmpDir, "walletForImport.json")
walletPath := filepath.Join(tmpDir, "walletForImport.json")
neoContractHash, err := e.Chain.GetNativeContractScriptHash(nativenames.Neo)
require.NoError(t, err)

View file

@ -39,9 +39,9 @@ func TestGetTimeoutContext(t *testing.T) {
set := flag.NewFlagSet("flagSet", flag.ExitOnError)
ctx := cli.NewContext(cli.NewApp(), set, nil)
actualCtx, _ := GetTimeoutContext(ctx)
end := time.Now()
end := time.Now().Add(DefaultTimeout)
dl, _ := actualCtx.Deadline()
require.True(t, start.Before(dl) && dl.Before(end.Add(DefaultTimeout)))
require.True(t, start.Before(dl) && (dl.Before(end) || dl.Equal(end)))
})
t.Run("set", func(t *testing.T) {
@ -50,8 +50,8 @@ func TestGetTimeoutContext(t *testing.T) {
set.Duration("timeout", time.Duration(20), "")
ctx := cli.NewContext(cli.NewApp(), set, nil)
actualCtx, _ := GetTimeoutContext(ctx)
end := time.Now()
end := time.Now().Add(time.Nanosecond * 20)
dl, _ := actualCtx.Deadline()
require.True(t, start.Before(dl) && dl.Before(end.Add(time.Nanosecond*20)))
require.True(t, start.Before(dl) && (dl.Before(end) || dl.Equal(end)))
})
}

View file

@ -1,7 +1,7 @@
package server
import (
"path"
"path/filepath"
"testing"
"github.com/stretchr/testify/require"
@ -11,13 +11,13 @@ func TestGetPath(t *testing.T) {
testPath := t.TempDir()
actual, err := getPath(testPath, 123)
require.NoError(t, err)
require.Equal(t, path.Join(testPath, "/BlockStorage_100000/dump-block-1000.json"), actual)
require.Equal(t, filepath.Join(testPath, "BlockStorage_100000", "dump-block-1000.json"), actual)
actual, err = getPath(testPath, 1230)
require.NoError(t, err)
require.Equal(t, path.Join(testPath, "/BlockStorage_100000/dump-block-2000.json"), actual)
require.Equal(t, filepath.Join(testPath, "BlockStorage_100000", "dump-block-2000.json"), actual)
actual, err = getPath(testPath, 123000)
require.NoError(t, err)
require.Equal(t, path.Join(testPath, "/BlockStorage_200000/dump-block-123000.json"), actual)
require.Equal(t, filepath.Join(testPath, "BlockStorage_200000", "dump-block-123000.json"), actual)
}

View file

@ -186,6 +186,11 @@ func dumpDB(ctx *cli.Context) error {
if err != nil {
return err
}
defer func() {
pprof.ShutDown()
prometheus.ShutDown()
chain.Close()
}()
chainCount := chain.BlockHeight() + 1
if start+count > chainCount {
@ -199,9 +204,6 @@ func dumpDB(ctx *cli.Context) error {
if err != nil {
return cli.NewExitError(err.Error(), 1)
}
pprof.ShutDown()
prometheus.ShutDown()
chain.Close()
return nil
}

View file

@ -3,7 +3,7 @@ package server
import (
"flag"
"os"
"path"
"path/filepath"
"testing"
"github.com/nspcc-dev/neo-go/pkg/config"
@ -38,8 +38,9 @@ func TestGetConfigFromContext(t *testing.T) {
}
func TestHandleLoggingParams(t *testing.T) {
// This test is failing on Windows, see https://github.com/nspcc-dev/neo-go/issues/2269
d := t.TempDir()
testLog := path.Join(d, "file.log")
testLog := filepath.Join(d, "file.log")
t.Run("default", func(t *testing.T) {
set := flag.NewFlagSet("flagSet", flag.ExitOnError)
@ -74,7 +75,7 @@ func TestInitBCWithMetrics(t *testing.T) {
t.Cleanup(func() { require.NoError(t, os.Chdir(serverTestWD)) })
set := flag.NewFlagSet("flagSet", flag.ExitOnError)
set.String("config-path", path.Join(serverTestWD, "../../config"), "")
set.String("config-path", filepath.Join(serverTestWD, "..", "..", "config"), "")
set.Bool("testnet", true, "")
set.Bool("debug", true, "")
ctx := cli.NewContext(cli.NewApp(), set, nil)
@ -101,7 +102,7 @@ func TestDumpDB(t *testing.T) {
require.NoError(t, err)
t.Cleanup(func() { require.NoError(t, os.Chdir(serverTestWD)) })
set := flag.NewFlagSet("flagSet", flag.ExitOnError)
set.String("config-path", path.Join(serverTestWD, "../../config"), "")
set.String("config-path", filepath.Join(serverTestWD, "..", "..", "config"), "")
set.Bool("privnet", true, "")
set.Bool("debug", true, "")
set.Int("start", 0, "")
@ -118,7 +119,7 @@ func TestDumpDB(t *testing.T) {
require.NoError(t, err)
t.Cleanup(func() { require.NoError(t, os.Chdir(serverTestWD)) })
set := flag.NewFlagSet("flagSet", flag.ExitOnError)
set.String("config-path", path.Join(serverTestWD, "../../config"), "")
set.String("config-path", filepath.Join(serverTestWD, "..", "..", "config"), "")
set.Bool("privnet", true, "")
set.Bool("debug", true, "")
set.Int("start", 0, "")
@ -140,7 +141,7 @@ func TestRestoreDB(t *testing.T) {
//dump first
set := flag.NewFlagSet("flagSet", flag.ExitOnError)
set.String("config-path", path.Join(serverTestWD, "../../config"), "")
set.String("config-path", filepath.Join(serverTestWD, "..", "..", "config"), "")
set.Bool("privnet", true, "")
set.Bool("debug", true, "")
set.Int("start", 0, "")

View file

@ -7,7 +7,6 @@ import (
"fmt"
"io/ioutil"
"os"
"path"
"path/filepath"
"strings"
@ -417,7 +416,7 @@ func initSmartContract(ctx *cli.Context) error {
}
basePath := contractName
contractName = path.Base(contractName)
contractName = filepath.Base(contractName)
fileName := "main.go"
// create base directory

View file

@ -5,7 +5,7 @@ import (
"encoding/json"
"io/ioutil"
"math/big"
"path"
"path/filepath"
"strings"
"testing"
@ -22,7 +22,7 @@ func TestWalletAccountRemove(t *testing.T) {
tmpDir := t.TempDir()
e := newExecutor(t, false)
walletPath := path.Join(tmpDir, "wallet.json")
walletPath := filepath.Join(tmpDir, "wallet.json")
e.In.WriteString("acc1\r")
e.In.WriteString("pass\r")
e.In.WriteString("pass\r")
@ -49,11 +49,11 @@ func TestWalletInit(t *testing.T) {
tmpDir := t.TempDir()
e := newExecutor(t, false)
walletPath := path.Join(tmpDir, "wallet.json")
walletPath := filepath.Join(tmpDir, "wallet.json")
e.Run(t, "neo-go", "wallet", "init", "--wallet", walletPath)
t.Run("terminal escape codes", func(t *testing.T) {
walletPath := path.Join(tmpDir, "walletrussian.json")
walletPath := filepath.Join(tmpDir, "walletrussian.json")
bksp := string([]byte{
byte(readline.CharBackward),
byte(readline.CharDelete),
@ -261,7 +261,7 @@ func TestImportDeployed(t *testing.T) {
tmpDir := t.TempDir()
e := newExecutor(t, true)
h := deployVerifyContract(t, e)
walletPath := path.Join(tmpDir, "wallet.json")
walletPath := filepath.Join(tmpDir, "wallet.json")
e.Run(t, "neo-go", "wallet", "init", "--wallet", walletPath)
@ -393,7 +393,7 @@ func TestWalletConvert(t *testing.T) {
tmpDir := t.TempDir()
e := newExecutor(t, false)
outPath := path.Join(tmpDir, "wallet.json")
outPath := filepath.Join(tmpDir, "wallet.json")
cmd := []string{"neo-go", "wallet", "convert"}
t.Run("missing wallet", func(t *testing.T) {
e.RunWithError(t, cmd...)

View file

@ -10,7 +10,7 @@ import (
"io"
"io/ioutil"
"os"
"path"
"path/filepath"
"strings"
"github.com/nspcc-dev/neo-go/pkg/smartcontract/manifest"
@ -135,7 +135,7 @@ func getBuildInfo(name string, src interface{}) (*buildInfo, error) {
}
for i := range ds {
if !ds[i].IsDir() && strings.HasSuffix(ds[i].Name(), ".go") {
names = append(names, path.Join(name, ds[i].Name()))
names = append(names, filepath.Join(name, ds[i].Name()))
}
}
}

View file

@ -4,7 +4,7 @@ import (
"fmt"
"io/ioutil"
"os"
"path"
"path/filepath"
"strings"
"testing"
@ -58,7 +58,7 @@ func TestCompiler(t *testing.T) {
continue
}
targetPath := path.Join(examplePath, info.Name())
targetPath := filepath.Join(examplePath, info.Name())
require.NoError(t, compileFile(targetPath))
}
},

View file

@ -6,7 +6,7 @@ import (
"fmt"
"math/big"
"math/rand"
"path"
"path/filepath"
"strings"
"testing"
"time"
@ -1707,9 +1707,9 @@ func TestMPTDeleteNoKey(t *testing.T) {
// native contract is disabled. It's easy to forget about config while adding new
// native contract.
func TestConfigNativeUpdateHistory(t *testing.T) {
const prefixPath = "../../config"
var prefixPath = filepath.Join("..", "..", "config")
check := func(t *testing.T, cfgFileSuffix interface{}) {
cfgPath := path.Join(prefixPath, fmt.Sprintf("protocol.%s.yml", cfgFileSuffix))
cfgPath := filepath.Join(prefixPath, fmt.Sprintf("protocol.%s.yml", cfgFileSuffix))
cfg, err := config.LoadFile(cfgPath)
require.NoError(t, err, fmt.Errorf("failed to load %s", cfgPath))
natives := native.NewContracts(cfg.ProtocolConfiguration)

View file

@ -5,6 +5,7 @@ import (
"fmt"
"math/rand"
"path"
"path/filepath"
"sync"
"testing"
"time"
@ -30,13 +31,13 @@ import (
"go.uber.org/zap/zaptest"
)
const notaryModulePath = "../services/notary/"
var notaryModulePath = filepath.Join("..", "services", "notary")
func getTestNotary(t *testing.T, bc *Blockchain, walletPath, pass string, onTx func(tx *transaction.Transaction) error) (*wallet.Account, *notary.Notary, *mempool.Pool) {
mainCfg := config.P2PNotary{
Enabled: true,
UnlockWallet: config.Wallet{
Path: path.Join(notaryModulePath, walletPath),
Path: filepath.Join(notaryModulePath, walletPath),
Password: pass,
},
}

View file

@ -8,6 +8,7 @@ import (
"net/http"
"net/url"
"path"
"path/filepath"
"strings"
"sync"
"testing"
@ -28,7 +29,7 @@ import (
"go.uber.org/zap/zaptest"
)
const oracleModulePath = "../services/oracle/"
var oracleModulePath = filepath.Join("..", "services", "oracle")
func getOracleConfig(t *testing.T, bc *Blockchain, w, pass string) oracle.Config {
return oracle.Config{
@ -38,7 +39,7 @@ func getOracleConfig(t *testing.T, bc *Blockchain, w, pass string) oracle.Config
RefreshInterval: time.Second,
AllowedContentTypes: []string{"application/json"},
UnlockWallet: config.Wallet{
Path: path.Join(oracleModulePath, w),
Path: filepath.Join(oracleModulePath, w),
Password: pass,
},
},

View file

@ -2,7 +2,7 @@ package core
import (
"errors"
"path"
"path/filepath"
"sort"
"testing"
"time"
@ -78,7 +78,7 @@ func TestStateRoot(t *testing.T) {
transferTokenFromMultisigAccount(t, bc, h, bc.contracts.GAS.Hash, 1_0000_0000)
tmpDir := t.TempDir()
w := createAndWriteWallet(t, accs[0], path.Join(tmpDir, "w"), "pass")
w := createAndWriteWallet(t, accs[0], filepath.Join(tmpDir, "w"), "pass")
cfg := createStateRootConfig(w.Path(), "pass")
srv, err := stateroot.New(cfg, zaptest.NewLogger(t), bc, nil)
require.NoError(t, err)
@ -146,7 +146,7 @@ func TestStateRootInitNonZeroHeight(t *testing.T) {
_, err := persistBlock(bc)
require.NoError(t, err)
tmpDir := t.TempDir()
w := createAndWriteWallet(t, accs[0], path.Join(tmpDir, "w"), "pass")
w := createAndWriteWallet(t, accs[0], filepath.Join(tmpDir, "w"), "pass")
cfg := createStateRootConfig(w.Path(), "pass")
srv, err := stateroot.New(cfg, zaptest.NewLogger(t), bc, nil)
require.NoError(t, err)
@ -189,7 +189,7 @@ func TestStateRootFull(t *testing.T) {
bc := newTestChain(t)
h, pubs, accs := newMajorityMultisigWithGAS(t, 2)
w := createAndWriteWallet(t, accs[1], path.Join(tmpDir, "wallet2"), "two")
w := createAndWriteWallet(t, accs[1], filepath.Join(tmpDir, "wallet2"), "two")
cfg := createStateRootConfig(w.Path(), "two")
var lastValidated atomic.Value

View file

@ -1,7 +1,7 @@
package storage
import (
"path"
"path/filepath"
"testing"
"github.com/stretchr/testify/require"
@ -9,7 +9,7 @@ import (
func newBoltStoreForTesting(t testing.TB) Store {
d := t.TempDir()
testFileName := path.Join(d, "test_bolt_db")
testFileName := filepath.Join(d, "test_bolt_db")
boltDBStore, err := NewBoltDBStore(BoltDBOptions{FilePath: testFileName})
require.NoError(t, err)
return boltDBStore

View file

@ -109,6 +109,10 @@ func TestMemCachedPersist(t *testing.T) {
})
t.Run("BoltDBStore", func(t *testing.T) {
ps := newBoltStoreForTesting(t)
t.Cleanup(func() {
err := ps.Close()
require.NoError(t, err)
})
testMemCachedStorePersist(t, ps)
})
}

View file

@ -3,13 +3,13 @@ package io
import (
"fmt"
"os"
"path"
"path/filepath"
)
// MakeDirForFile creates directory provided in filePath.
func MakeDirForFile(filePath string, creator string) error {
fileName := filePath
dir := path.Dir(fileName)
dir := filepath.Dir(fileName)
err := os.MkdirAll(dir, os.ModePerm)
if err != nil {
return fmt.Errorf("could not create dir for %s: %w", creator, err)

View file

@ -2,7 +2,7 @@ package io
import (
"os"
"path"
"path/filepath"
"testing"
"github.com/stretchr/testify/require"
@ -10,21 +10,23 @@ import (
func TestMakeDirForFile_HappyPath(t *testing.T) {
tempDir := t.TempDir()
filePath := path.Join(tempDir, "testDir/testFile.test")
filePath := filepath.Join(tempDir, "testDir", "testFile.test")
err := MakeDirForFile(filePath, "test")
require.NoError(t, err)
_, errChDir := os.Create(filePath)
f, errChDir := os.Create(filePath)
require.NoError(t, errChDir)
require.NoError(t, f.Close())
}
func TestMakeDirForFile_Negative(t *testing.T) {
tempDir := t.TempDir()
filePath := path.Join(tempDir, "testFile.test")
_, err := os.Create(filePath)
filePath := filepath.Join(tempDir, "testFile.test")
f, err := os.Create(filePath)
require.NoError(t, err)
require.NoError(t, f.Close())
filePath = path.Join(filePath, "error")
filePath = filepath.Join(filePath, "error")
err = MakeDirForFile(filePath, "test")
require.Errorf(t, err, "could not create dir for test: mkdir %s : not a directory", filePath)
}

View file

@ -9,7 +9,7 @@ import (
gio "io"
"io/ioutil"
"os"
"path"
"path/filepath"
"strings"
"sync"
"testing"
@ -104,7 +104,8 @@ func (e *executor) checkNextLine(t *testing.T, expected string) {
func (e *executor) checkError(t *testing.T, expectedErr error) {
line, err := e.out.ReadString('\n')
require.NoError(t, err)
require.True(t, strings.HasPrefix(line, "Error: "+expectedErr.Error()))
expected := "Error: " + expectedErr.Error()
require.True(t, strings.HasPrefix(line, expected), fmt.Errorf("expected `%s`, got `%s`", expected, line))
}
func (e *executor) checkStack(t *testing.T, items ...interface{}) {
@ -199,9 +200,9 @@ func TestLoad(t *testing.T) {
tmpDir := t.TempDir()
t.Run("loadgo", func(t *testing.T) {
filename := path.Join(tmpDir, "vmtestcontract.go")
filename := filepath.Join(tmpDir, "vmtestcontract.go")
require.NoError(t, ioutil.WriteFile(filename, []byte(src), os.ModePerm))
filenameErr := path.Join(tmpDir, "vmtestcontract_err.go")
filenameErr := filepath.Join(tmpDir, "vmtestcontract_err.go")
require.NoError(t, ioutil.WriteFile(filenameErr, []byte(src+"invalid_token"), os.ModePerm))
e := newTestVMCLI(t)
@ -224,7 +225,7 @@ func TestLoad(t *testing.T) {
return 1
}
`
filename := path.Join(tmpDir, "vmtestcontract.go")
filename := filepath.Join(tmpDir, "vmtestcontract.go")
require.NoError(t, ioutil.WriteFile(filename, []byte(srcAllowNotify), os.ModePerm))
e := newTestVMCLI(t)
@ -241,19 +242,19 @@ func TestLoad(t *testing.T) {
require.NoError(t, err)
nefFile, err := nef.NewFile(script)
require.NoError(t, err)
filename := path.Join(tmpDir, "vmtestcontract.nef")
filename := filepath.Join(tmpDir, "vmtestcontract.nef")
rawNef, err := nefFile.Bytes()
require.NoError(t, err)
require.NoError(t, ioutil.WriteFile(filename, rawNef, os.ModePerm))
m, err := di.ConvertToManifest(&compiler.Options{})
require.NoError(t, err)
manifestFile := path.Join(tmpDir, "vmtestcontract.manifest.json")
manifestFile := filepath.Join(tmpDir, "vmtestcontract.manifest.json")
rawManifest, err := json.Marshal(m)
require.NoError(t, err)
require.NoError(t, ioutil.WriteFile(manifestFile, rawManifest, os.ModePerm))
filenameErr := path.Join(tmpDir, "vmtestcontract_err.nef")
filenameErr := filepath.Join(tmpDir, "vmtestcontract_err.nef")
require.NoError(t, ioutil.WriteFile(filenameErr, append([]byte{1, 2, 3, 4}, rawNef...), os.ModePerm))
notExists := path.Join(tmpDir, "notexists.json")
notExists := filepath.Join(tmpDir, "notexists.json")
e := newTestVMCLI(t)
e.runProg(t,
@ -293,7 +294,7 @@ func TestRunWithDifferentArguments(t *testing.T) {
}`
tmpDir := t.TempDir()
filename := path.Join(tmpDir, "run_vmtestcontract.go")
filename := filepath.Join(tmpDir, "run_vmtestcontract.go")
require.NoError(t, ioutil.WriteFile(filename, []byte(src), os.ModePerm))
e := newTestVMCLI(t)

View file

@ -4,7 +4,7 @@ import (
"encoding/json"
"fmt"
"io/ioutil"
"path"
"path/filepath"
"testing"
"github.com/nspcc-dev/neo-go/pkg/core/state"
@ -57,7 +57,7 @@ func TestRegenerateSoloWallet(t *testing.T) {
if !regenerate {
return
}
walletPath := path.Join(dockerWalletDir, "wallet1_solo.json")
walletPath := filepath.Join(dockerWalletDir, "wallet1_solo.json")
wif := privnetWIFs[0]
acc1 := getAccount(t, wif, "one")
acc2 := getAccount(t, wif, "one")
@ -76,7 +76,7 @@ func regenerateWallets(t *testing.T, dir string) {
acc2 := getAccount(t, privnetWIFs[i], passwords[i])
require.NoError(t, acc2.ConvertMultisig(3, pubs))
createWallet(t, path.Join(dir, fmt.Sprintf("wallet%d.json", i+1)), acc1, acc2)
createWallet(t, filepath.Join(dir, fmt.Sprintf("wallet%d.json", i+1)), acc1, acc2)
}
}
@ -107,9 +107,9 @@ func TestRegenerateWalletTestdata(t *testing.T) {
acc3 := getAccount(t, privnetWIFs[1], "two")
acc3.Default = true
createWallet(t, path.Join(walletDir, "wallet1.json"), acc1, acc2)
createWallet(t, filepath.Join(walletDir, "wallet1.json"), acc1, acc2)
createWallet(t, path.Join(walletDir, "wallet2.json"), acc1, acc2, acc3)
createWallet(t, filepath.Join(walletDir, "wallet2.json"), acc1, acc2, acc3)
}
func TestRegenerateNotaryWallets(t *testing.T) {
@ -117,21 +117,21 @@ func TestRegenerateNotaryWallets(t *testing.T) {
return
}
const (
walletDir = "../services/notary/testdata/"
acc1WIF = "L1MstxuD8SvS9HuFcV5oYzcdA1xX8D9bD9qPwg8fU5SSywYBecg3"
acc2WIF = "L2iGxPvxbyWpYEbCZk2L3PgT7sCQaSDAbBC4MRLAjhs1s2JZ1xs5"
acc3WIF = "L1xD2yiUyARX8DAkWa8qGpWpwjqW2u717VzUJyByk6s7HinhRVZv"
acc4WIF = "L1ioz93TNt6Nu1aoMpZQ4zgdtgC8ZvJMC6pyHFkrovdR3SFwbn6n"
)
var walletDir = filepath.Join("..", "services", "notary", "testdata")
scryptParams := keys.ScryptParams{N: 2, R: 1, P: 1}
acc1 := getAccountWithScrypt(t, acc1WIF, "one", scryptParams)
acc2 := getAccountWithScrypt(t, acc2WIF, "one", scryptParams)
acc3 := getAccountWithScrypt(t, acc3WIF, "four", scryptParams)
createWallet(t, path.Join(walletDir, "notary1.json"), acc1, acc2, acc3)
createWallet(t, filepath.Join(walletDir, "notary1.json"), acc1, acc2, acc3)
acc4 := getAccountWithScrypt(t, acc4WIF, "two", scryptParams)
createWallet(t, path.Join(walletDir, "notary2.json"), acc4)
createWallet(t, filepath.Join(walletDir, "notary2.json"), acc4)
}
func TestRegenerateOracleWallets(t *testing.T) {
@ -145,10 +145,10 @@ func TestRegenerateOracleWallets(t *testing.T) {
)
acc1 := getAccount(t, acc1WIF, "one")
createWallet(t, path.Join(walletDir, "oracle1.json"), acc1)
createWallet(t, filepath.Join(walletDir, "oracle1.json"), acc1)
acc2 := getAccount(t, acc2WIF, "two")
createWallet(t, path.Join(walletDir, "oracle2.json"), acc2)
createWallet(t, filepath.Join(walletDir, "oracle2.json"), acc2)
}
func TestRegenerateExamplesWallet(t *testing.T) {

View file

@ -3,6 +3,7 @@ package wallet
import (
"encoding/json"
"path"
"path/filepath"
"testing"
"github.com/nspcc-dev/neo-go/pkg/encoding/address"
@ -124,7 +125,7 @@ func TestJSONMarshallUnmarshal(t *testing.T) {
func checkWalletConstructor(t *testing.T) *Wallet {
tmpDir := t.TempDir()
file := path.Join(tmpDir, walletTemplate)
file := filepath.Join(tmpDir, walletTemplate)
wallet, err := NewWallet(file)
require.NoError(t, err)
return wallet