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

在测试中加入检查源码是否可以在 MCDR 中正常加载 #395

Open
AnzhiZhang opened this issue Sep 8, 2024 · 17 comments
Open
Labels
enhancement New feature or request github workflow Github Workflow changes

Comments

@AnzhiZhang
Copy link
Member

AnzhiZhang commented Sep 8, 2024

在 PR check 测试中加入检查源码是否可以在 MCDR 中正常加载,顺便检查 requirements 和依赖。

Originally posted by @AnzhiZhang in #394 (comment)

@AnzhiZhang AnzhiZhang added the enhancement New feature or request label Sep 8, 2024
@AnzhiZhang AnzhiZhang changed the title 在测试中加入检查源码是可以在 MCDR 中正常加载 在测试中加入检查源码是否可以在 MCDR 中正常加载 Sep 8, 2024
@alex3236
Copy link
Contributor

alex3236 commented Sep 8, 2024

MCDR 本身没有这方面设计吧?好像有点麻烦

@alex3236 alex3236 added the github workflow Github Workflow changes label Sep 8, 2024
@AnzhiZhang
Copy link
Member Author

AnzhiZhang commented Sep 8, 2024

MCDR 本身没有这方面设计吧?好像有点麻烦

checkout,下载插件,然后启动 MCDR 就行了。可以检查 log 或者用另一个插件输出标准的已加载插件列表

@alex3236
Copy link
Contributor

alex3236 commented Sep 8, 2024

checkout,下载插件,然后启动 MCDR 就行了。可以检查 log 或者用另一个插件输出标准的已加载插件列表

这样的话出错了没法给出 exc 输出吧……?

@AnzhiZhang
Copy link
Member Author

AnzhiZhang commented Sep 8, 2024

这样的话出错了没法给出 exc 输出吧……?

直接提示无法加载就行了,用插件设置 GitHub Output

I was not able to install the package. See the PR Check logs for details.

@alex3236
Copy link
Contributor

alex3236 commented Sep 8, 2024

直接提示无法加载就行了,用插件设置 GitHub Output

那比如我在 on_load 检测到配置没更改就给你 raise 了,就只能去看 workflow 日志才知道了(

@alex3236
Copy link
Contributor

alex3236 commented Sep 8, 2024

倒是可以用一些怪方法手动检查

@alex3236
Copy link
Contributor

alex3236 commented Sep 8, 2024

另外一个问题:如果有尚未入库的前置插件,也会导致检测失效

@AnzhiZhang
Copy link
Member Author

另外一个问题:如果有尚未入库的前置插件,也会导致检测失效

不影响,少量这类问题可以手动处理,这应该是极少的情况。对于大部分正常提交的插件,可以作为一道保险

@Fallen-Breath
Copy link
Contributor

我认为不太可行,原因如下

  1. 插件可能依赖特定的运行环境 / 配置 / 上下文,直接加载导致出现问题并不一定说明插件本身有问题
  2. 插件的行为不可控,其行为可能会造成意料之外的副作用

@alex3236
Copy link
Contributor

我的观点是,报告中加入插件是否已经提供有效 Release 是可以作为参考的,检查能否加载参考价值不高,而且处理不好的话挺危险的

@AnzhiZhang
Copy link
Member Author

假定大部分插件在正确安装依赖后是开箱即用类型的插件,这个检查的主要价值是:

  1. 检查 requirements 标记齐全
  2. 检查依赖正确,不会出现依赖了高版本 MCDR API 然而忘记标记或标记了较低的 API 的情况
  3. 确定插件可以正常加载,即到 load 完成

基于上文的前提,目前应该有几个插件需要特定的配置,例如需要修改配置文件或第三方服务的插件,这其中的部分插件会选择拒绝加载,也有部分会关闭功能等待配置。

如果自动检查不通过,消息提示应当作为警告来考虑,可以提示作者,并且由维护者选择是否需要手动检查,以及防止作者仓促提交(遗漏信息或版本错误,用户下载后并不能开箱即用,例如有部分插件是不能自动生成配置文件的,需要用户手动下载,否则加载时会报错)。

提出这个建议是和贡献指南中的建议提供一个可用发行版配合的,可能收益并不会很大,作为一道额外的保险,是否加入请各位讨论斟酌。

@alex3236
Copy link
Contributor

  1. 检查 requirements 标记齐全

这个没多大问题

  1. 检查依赖正确,不会出现依赖了高版本 MCDR API 然而忘记标记或标记了较低的 API 的情况

要检查这个得多版本 MCDR 多次测试?

@AnzhiZhang
Copy link
Member Author

要检查这个得多版本 MCDR 多次测试?

有标记按标记测试,没有按一个较低的版本即可,比如多文件插件使用 2.0,单文件用 1.0。理论上现在所有多文件插件都应该标记 2.0

@alex3236
Copy link
Contributor

要检查这个得多版本 MCDR 多次测试?

有标记按标记测试,没有按一个较低的版本即可,比如多文件插件使用 2.0,单文件用 1.0。理论上现在所有多文件插件都应该标记 2.0

Python 的 dependency 是按照 PEP 508 来的,似乎很难做到“安装符合条件的最低版本”

@AnzhiZhang
Copy link
Member Author

Python 的 dependency 是按照 PEP 508 来的,似乎很难做到“安装符合条件的最低版本”

不需要找到,尽量低即可,因为没有标记,即为兼容所有版本,MCDR 目前没有标注 LTS 的版本,用旧一些的 LTS 版本也是可以的。

比如多文件插件使用 2.0,单文件用 1.0

@alex3236
Copy link
Contributor

不需要找到,尽量低即可,因为没有标记,即为兼容所有版本,MCDR 目前没有标注 LTS 的版本,用旧一些的 LTS 版本也是可以的。

我的意思是,类似声明 >=2.1.0 的插件理论上应该在 2.1.0 测试,但 pip 会安装最新版本

@AnzhiZhang
Copy link
Member Author

我的意思是,类似声明 >=2.1.0 的插件理论上应该在 2.1.0 测试,但 pip 会安装最新版本

这个是技术细节问题了,不在 issue 讨论范围内

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request github workflow Github Workflow changes
Projects
None yet
Development

No branches or pull requests

3 participants