Golang Go语言中记录一个很脑瘫的 Test 在 root 下跑不起来的问题

发布于 1周前 作者 yibo5220 来自 Go语言

迫于做 bpf 开发,跑测试需要用 sudo ,然而同一个 ut ,在普通用户下就正常,sudo 执行就一直 hang 着,没有输出也不结束。本来以为遇上了吊诡的 bug ,发现用-x -v 可以打印 debug 日志,然后看了下,root 下没配梯子,导致 hang 在一开始下包的地方不动...

怪不得用英文关键词什么都查不到呢,老外恐怕遇不了这种奇葩 bug 。解决方案也很简单,sudo -E 把环境变量带上就行了。


Golang Go语言中记录一个很脑瘫的 Test 在 root 下跑不起来的问题

更多关于Golang Go语言中记录一个很脑瘫的 Test 在 root 下跑不起来的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

7 回复

我也加一个碰到过的类似的问题,编译 openwrt 的时候,有些依赖没梯子下不下来,然后用 proxychains ,结果报了一堆错误,细看之下编译脚本中有一些函数会解析编译命令,因为加了一个 proxychains ,导致命令解析出来的顺序不太对,从而编译失败。😅

更多关于Golang Go语言中记录一个很脑瘫的 Test 在 root 下跑不起来的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


可以用 proxychains 启动 bash ,然后在子进程 bash 里编译

遇到这种问题是真的烦

#2 👍学到了,忘了后来咋解决的了,好像设置了系统 proxy

设置一下 root 下的 goproxy 环境变量不就可以了吗?

最后说了啊,sudo -E 就起来了

在Golang(Go语言)中遇到测试代码(Test)在根目录下无法运行的问题,通常与测试文件的命名、包结构或测试函数的声明方式有关。以下是一些可能的解决步骤和检查点:

  1. 测试文件命名:确保你的测试文件名以 _test.go 结尾。例如,如果你的文件名是 main.go,那么测试文件应该命名为 main_test.go

  2. 包声明:测试文件应与被测试代码在同一包中。如果 main.go 的包声明为 package main,那么 main_test.go 也应该声明为 package main

  3. 测试函数声明:测试函数应以 Test 开头,并且接收一个指向 testing.T 类型的指针作为参数。例如:

    func TestExample(t *testing.T) {
        // 测试代码
    }
    
  4. 运行测试:在根目录下运行测试时,使用 go test 命令。如果你在根目录的上一级运行 go test ./...,它会递归地运行所有子目录中的测试。

  5. 权限问题:确保你有足够的权限在根目录下执行测试。虽然这通常不是问题,但在某些受限的环境(如某些操作系统或容器)中可能会遇到。

  6. 环境变量:检查是否有任何环境变量影响Go工具链的行为,特别是 GOROOTGOPATH

如果以上步骤都正确无误,但问题依旧存在,请检查具体的错误信息,以便进一步诊断问题。

回到顶部