Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

本地运行单元测试,会被删除本地大量文件 #568

Closed
ayanamist opened this issue Dec 6, 2022 · 26 comments
Closed

本地运行单元测试,会被删除本地大量文件 #568

ayanamist opened this issue Dec 6, 2022 · 26 comments

Comments

@ayanamist
Copy link
Contributor

ayanamist commented Dec 6, 2022

path := filepath.Join(u.HomeDir, ".bashrc")
err = createFile(path, "ecs")
assert.Nil(t, err)
i = completionInstallers()
if runtime.GOOS == "windows" {
assert.Len(t, i, 1)
}
path2 := filepath.Join(u.HomeDir, ".zshrc")
err = createFile(path2, "ecs")
assert.Nil(t, err)
i = completionInstallers()
assert.Len(t, i, 2)
os.Remove(path)

执行测试如果执行到这个用例,就会把本地的 ~/.bashrc~/.zshrc 给删了!

os.RemoveAll(u)

会删除 ~/.config 整个目录!

@ayanamist ayanamist changed the title 本地运行单元测试,会被删除 ~/.bashrc ~/.zshrc 文件 本地运行单元测试,会被删除本地大量文件 Dec 6, 2022
@Xuanwo
Copy link
Contributor

Xuanwo commented Dec 6, 2022

image

一条充满了感情的标题变更记录,希望有备份 💌

@yetone
Copy link

yetone commented Dec 6, 2022

太恐怖了 😱

@Xuanwo
Copy link
Contributor

Xuanwo commented Dec 6, 2022

另附 ChatGPT 的回复:

image

@Zheaoli
Copy link

Zheaoli commented Dec 6, 2022

#124

@SilverRainZ
Copy link

SilverRainZ commented Dec 6, 2022

本地测试要避免被用户配置污染的话可以用 HOME, XDG_HOME_DIR等隔离吧。

@CNLHC
Copy link

CNLHC commented Dec 6, 2022

#124

看起来是临时工的锅😆

@dragonly
Copy link

dragonly commented Dec 6, 2022

为什么明知会删除用户的核心配置文件,却只是认为『可能会对客户造成一定的不便』,还『希望客户能理解』?强烈质疑专业性。

@yetone
Copy link

yetone commented Dec 6, 2022

为什么明知会删除用户的核心配置文件,却只是认为『可能会对客户造成一定的不便』,还『希望客户能理解』?强烈质疑专业性。

那是 ChatGPT 的回复啊。。。

@lambdaq
Copy link

lambdaq commented Dec 6, 2022

慕名而来。。。 贵厂的 CI 基础镜像究竟埋了多少坑,才会导致单元测试深仇大恨需要干掉 .bashrc 才能正常跑?

@hellojukay
Copy link

啊,这。。。

@KKtheGhost
Copy link

这脚本也太不负责任了... 要么就直接仅支持容器化测试,要么把测试变量影响范围临时限制在 repo 目录下。

path := filepath.Join(u.HomeDir, ".bashrc") 
....
os.Remove(path) 

这种代码可以通过 Review 只能说 Reviewer 绝对没有拉到本地看过一眼吧

@dragonly
Copy link

dragonly commented Dec 6, 2022

为什么明知会删除用户的核心配置文件,却只是认为『可能会对客户造成一定的不便』,还『希望客户能理解』?强烈质疑专业性。

那是 ChatGPT 的回复啊。。。

对我知道 🤣

@Jeff-Tian
Copy link

安利一个 Bash 单元测试框架 Bach: https://bach.sh/index-cn.html 。用它, 在测试过程中 rm -rf / 都不必担心。

@hsyodyssey
Copy link

什么黑客组织

@Miigon
Copy link

Miigon commented Dec 6, 2022

突然想起来这个:
MrMEEE/bumblebee-Old-and-abbandoned@a047be8

很久以前的一个安装会把/usr删掉的项目

@Kilerd
Copy link

Kilerd commented Dec 6, 2022

“我们是一家专业的公司”

@bob-zebedy
Copy link

我们是一家专业删用户数据的公司

@yisiliu
Copy link

yisiliu commented Dec 6, 2022

这个 commit 四年了,第一次被发现,说明这个库是真的有人用呀🐶hhhhh

@CppXL
Copy link

CppXL commented Dec 6, 2022

好活

@AkaraChen
Copy link

这种玩意真敢往项目里塞啊

@ischaojie
Copy link

下一步直接 rm -rf /* 也不是不可能。。

@ycjcl868
Copy link

ycjcl868 commented Dec 6, 2022

有点狠啊!不过从 KPI 视角:高效快速支持了 aliyun cli 本地研发,已开源,并获社区的一致好评(500+ stars)...

@ShuangRen
Copy link

慕名而来,真的敢啊

@ColorRabbit
Copy link

🐮

@ExerciseBook
Copy link

慕名而来。。。 贵厂的 CI 基础镜像究竟埋了多少坑,才会导致单元测试深仇大恨需要干掉 .bashrc 才能正常跑?

阿里云效的环境也是一坨。

@aliyun aliyun locked as resolved and limited conversation to collaborators Dec 6, 2022
@JacksonTian
Copy link
Contributor

这部分测试代码是在添加 autocompletion 功能的时候编写的。编写这段代码的同学自身的环境中没有 .bashrc、. zshrc 文件,没有意识到这个问题。而这部分代码除了在编写这段代码的同学环境中运行外,主要执行环境是 GitHub Actions 等 CI 环境中,因此一直没能发现问题。

因为这部分是测试代码,并没有想到有人去亲自执行该代码。由于最终交付的是 binary 文件,这部分测试代码对最终用户并没有实际影响。当前相关 PR 已经合并解决该问题。

以上,这部分代码确实有考虑不周的地方,接受批评和建议。但请不要额外夸张,谢谢。

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests