1

我已经从 GitHub 克隆了 Stellar Horizo​​n 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

特定错误的原因是什么?

4

0 回答 0