我已经从 GitHub 克隆了 Stellar Horizon Repo,它是用 Go 编写的。我想先运行测试用例。测试用例是使用 GINKGO 测试框架编写的。我一直在使用 ginkgo 命令运行测试用例,例如: ginkgo(此处将给出包路径名)。这就是我运行测试用例的方式。特定包的测试用例已正确执行。但是我只在第一个测试文件中感到恐慌。我调试并发现在运行命令时发生了恐慌。请找到以下详细信息以供参考。
文件名 : action_accounts_test.go 函数名 : TestAccountAction_Show() // 下面已经定义了
func TestAccountActions_Show(t *testing.T) {
ht := StartHTTPTest(t, "allow_trust") **// This function is not returning anything. Its //getting panic inside this //**
defer ht.Finish()
// existing account
w := ht.Get(
"/accounts/GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU",
)
if ht.Assert.Equal(200, w.Code) {
var result horizon.Account
err := json.Unmarshal(w.Body.Bytes(), &result)
ht.Require.NoError(err)
ht.Assert.Equal("8589934593", result.Sequence)
ht.Assert.NotEqual(0, result.LastModifiedLedger)
for _, balance := range result.Balances {
if balance.Type == "native" {
ht.Assert.Equal(uint32(0), balance.LastModifiedLedger)
} else {
ht.Assert.NotEqual(uint32(0), balance.LastModifiedLedger)
}
}
}
// missing account
w = ht.Get("/accounts/GDBAPLDCAEJV6LSEDFEAUDAVFYSNFRUYZ4X75YYJJMMX5KFVUOHX46SQ")
ht.Assert.Equal(404, w.Code)
}
我做了一个调试,发现它在上面的 func StartHTTPTest()内部发生的下面的 func 调用中出现恐慌
scenarios.Load(StellarCoreDatabaseURL(), stellarCorePath)
scenarios.Load(DatabaseURL(), horizonPath)
特定功能的定义
func Load(url string, path string) {
log.Println("database url", url, " Path : ", path)
sql, err := Asset(path)
log.Println("Print err:", err, " sql :", sql)
if err != nil {
log.Panic(err)
}
reader := bytes.NewReader(sql)
cmd := exec.Command("psql", url)
cmd.Stdin = reader
err = cmd.Run() **// Exactly here it return some error**
log.Println("Print err", err)
if err != nil { **// Since err is not nil .the statement will get executed .**
**log.Panic(err)**
}
}
cmd.Run()返回的错误是 退出状态2 我刚刚打印了错误,发现这是错误退出状态2
特定错误的原因是什么?