Commit Graph

343 Commits

Author SHA1 Message Date
045b3e5d54
test(config): 统一 Test 注解的使用, 修改测试代码的顺序.
Test 注解将统一使用 kotlin.test.Test, 这么做可以保持兼容性;
将 MavenRepositoryConfigSerializerTest.`json primitive deserialize test` 中的两段代码顺序调整一下, 以避免出现歧义.
2022-06-26 02:32:53 +08:00
d6b25c4560
test(config): 将 UsernameAuthenticatorSerializerTest 迁移到 SerializersKtTest.
将测试类移动到对应的文件中.
2022-06-25 23:02:11 +08:00
581eeba20b
feat(config): 新增 HTTPS 代理类型, 增加 Maven 对 HTTPS 代理的支持.
为 ProxyType 增加 HTTPS 类型, 同时为 Aether 增加 Https 代理支持, 方便用户使用现有的公开代理下载依赖包.
2022-06-25 23:00:51 +08:00
896305f4a3
style: 改一下代码格式.
把“宝塔”改掉, 看起来太难受了.
2022-06-25 21:17:27 +08:00
df484d6bd7
test(config): 调整测试数据, 以符合该测试用例的情况.
为 BotConfig 的完整序列化测试添加 Artifact 值, 覆盖解析 BotConfig 所涉及的 Artifact 序列化.
2022-06-25 19:19:55 +08:00
b8a99a4491
fix(config): 修正 BotConfigSerializer 中使用的错误默认值.
由于默认值未及时变更, 导致出现默认值与预期不符的情况;
目前已调整了新的默认值获取方式, 以便于后续调整默认值.
2022-06-24 19:51:27 +08:00
128e33e545
test(config): 移动 UsernameAuthenticatorTest 到新的包路径.
UsernameAuthenticatorTest 所测试的 UsernameAuthenticator 是属于 config 包的, 所以修正了一下这个问题.
2022-06-24 19:44:31 +08:00
85e59f4a64
test(config): 将 ArtifactSerializerTest 合并到 SerializersKtTest, 并添加新的单元测试.
为了归类单元测试, 所以将 ArtifactSerializerTest 合并到 SerializersKtTest;
添加 ProxyConfig 和 BotConfig 的单元测试类.
2022-06-24 19:43:06 +08:00
8f8d763566
test(config): 合并 BotAccountTest 并补充其他配置类的解析测试.
将 BotAccountTest 合并入 ConfigsTest, 方便归类测试, 并补充其他配置类的 JSON 解析;
此部分独立于 Serializer 以防止后续更改出现潜在的解析错误.
2022-06-24 19:38:47 +08:00
084280564a
fix(config): 添加两个序列化器来修复因 Gson 导致的解析错误.
由于 Gson 的解析方式不能正确处理 Kotlin 的 null-safety 属性, 因此添加两个 Serializer, 手动解析 Json 以避开这个问题.

Close #9
2022-06-24 19:36:39 +08:00
4a160ad42b
refactor(config): 更改 BotConfig.enabled 的默认值为 false.
更改 enabled 的默认值, 以防止意外启动 Bot.
同时让 bot.json 在初始化时设为 true, 方便用户改完就能启动.
2022-06-24 19:10:39 +08:00
a1790a0716
perf(config): 优化配置使用过程中的判断.
通过调整部分属性的 null-safety 特性, 移除了部分 non-null 判断, 略微(真的很略微)提高了性能(虽然仅限于启动).
2022-06-24 19:08:41 +08:00
b12758bd18
refactor(config): 更改部分配置类的属性默认值.
为了保证扩展中命令的权限判断有效性, 故移除 BotAccount 中 creatorId 字段的默认值, 此改动将要求用户提供准确的 Bot 创建者 Id.
这个改动拖得越久, 影响的范围就越大.
另外, 为 BotConfig 中的 extensions 属性和 proxy 属性增加默认值, 以减少意义重复的情况(例如当用户没设置 proxy 属性时提供一个 type 为 NO_PROXY 的 ProxyConfig, 无需判断是否为 null).
2022-06-24 02:00:11 +08:00
a2667438f2
refactor(config): 包装 Serializer 可能抛出的异常.
增加对 Serializer 中可能抛出的异常(例如 MalformedURLException, IllegalArgumentException)包装成 JsonParseException, 以避免异常类型混乱的问题.
2022-06-23 12:25:14 +08:00
d5e66156b9
perf(config): 优化 Artifact 的序列化过程.
AbstractArtifact 已经有官方的 toString 实现了, 故不再多此一举.
同时, 如果有不基于 AbstractArtifact 的 Artifact 实现, 将会转换成 DefaultArtifact 并直接使用 toString.
2022-06-23 11:37:37 +08:00
8a33448b19
refactor(config): 调整方法访问权.
迁移前, createDefaultRepositoryId 方法和 checkRepositoryLayout 方法已经是 Private 了,
迁移中出现差错导致变更为 internal, 现已修复.

Pull Request #8
2022-06-23 03:52:04 +08:00
48a5c27cf7
docs: 调整标题段样式.
试一下把标题段落设为居中, 好看点. :P
2022-06-22 21:32:14 +08:00
0c252f69fb
build(action): 设置 Gradle Build Action 为准确的发布版本号.
设置准确的发布版本号, 有利于保证 Action 运行过程的稳定性.
2022-06-22 17:47:18 +08:00
a55f00edf0
build: 指定 Javadoc 的编码为 UTF-8.
指定编码以防止在不同环境下因编码不同而导致项目构建失败.
2022-06-22 15:03:40 +08:00
45244c1fb1
build: 将子项目间共用的 Plugin 声明在根项目.
根据 Gradle 建议[1], 可以将子项目中都有使用的插件, 更改到根项目中, 这么做可以让我们仅更新根项目的插件版本, 让 Gradle 自动同步子项目的插件版本.
---------------------------------
[1]: https://docs.gradle.org/current/userguide/plugins.html#sec:subprojects_plugins_dsl
2022-06-22 15:02:30 +08:00
cfdfa21619
build: 更新 Gradle Wrapper 脚本属性.
为两个 Gradle Wrapper 脚本添加执行权限, 以便于其他开发者使用 Gradle 编译项目.
2022-06-22 12:33:24 +08:00
8e0bf3c22b
build(action): 添加 Action 配置, 用于检查 Commit 状况.
添加了用于检查 Gradle Wrapper 合法性和用于执行测试的 Action,,这两个 Action 将会在 Push 和 Pull Request 中检查代码状况,以便于及时发现问题。
2022-06-22 02:04:40 +08:00
c64f5e739b
refactor(database): 为旧版数据库适配器添加 @Deprecated 注解.
添加注解以表明该适配器已弃用, 但仍然保留适配器以保证旧版数据库正常使用(并迁移到新版数据库).
2022-06-21 01:43:54 +08:00
289b9678f2
refactor(config): 将与配置相关的内容迁移到 scalabot-meta 模块.
通过将配置迁移到单独的模块, 可以方便使用其他程序扩展 ScaleBot, 而不仅仅是让 ScaleBot 成为扩展的平台.

BREAKING CHANGE: 与配置有关的 Class 移动到了 scalabot-meta 模块.

目前仅所有配置类(以 `Config` 结尾的 Class)和相应的序列化类(以 `Serializer` 结尾的)都迁移到了 meta 模块, 但其工具方法则作为扩展函数保留在 app 模块中.
这么做的好处是为了方便其他应用(例如 ScalaBot 外部管理程序)根据需要生成配置文件.
scalabot-meta 将会作为依赖项发布, 可根据需要获取 ScalaBot-meta 生成 ScalaBot 的配置.
此次改动普通用户无需迁移.
2022-06-20 20:55:04 +08:00
dbc4232dd6
test(config): 调整 BotAccount 的单元测试代码.
调整代码有利于后续更新测试用例时减少出错的可能性(虽然基本不换), 修复一个词汇错误.
2022-06-20 16:01:35 +08:00
c662b970f0
test(utils): 补充 deepListFiles 的单元测试.
补充单元测试项, 目前已实现 Utils 单元测试全覆盖(Logger Class 不算).
2022-06-19 02:47:26 +08:00
f148c21390
fix(utils): 修复 deepListFiles 错误地返回了 null 的情况.
预期中, deepListFiles 返回 null 与否是与 listFiles 相同的, 当 File 无法访问, 或者不是一个目录的情况下才会返回 null,
但由于语法疏漏, 导致可能出现即使 listFiles 返回 null 时 deepListFiles 也不返回 null 的情况.
现已修复该问题.
2022-06-19 02:07:24 +08:00
c41aac735c
build: 更新依赖项版本.
已确定无兼容性问题.
2022-06-18 09:57:03 +08:00
ae64de00e7
test(config): 完善 AppPaths 类的单元测试.
补充分支测试内容.
2022-06-18 09:53:45 +08:00
215a4670db
feat(metrics): 运行指标服务端支持设置 HTTP 认证.
支持对运行指标服务端设置 HTTP 认证, 以防止运行指标被非法获取.
2022-06-18 09:20:46 +08:00
c5fe96c02d
test: 新增对 BotAccount.id 字段的单元测试.
该测试有助于确保 id 能正常地从 Token 中获取.
2022-06-15 02:22:58 +08:00
508f14f271
test: 新增对 Artifact.equalsArtifact 的完整单元测试.
该测试已确保完全覆盖(100%).
2022-06-15 02:19:14 +08:00
35c77f6093
perf: 优化 Artifact 的判断条件.
根据相关文档[1], baseVersion 和 Version 不需要同时判断, 只需要单独判断 Version 即可确认版本是否符合.
另外, 如果 Version 不符, 那么 isSnapshot 就没有必要判断(不可能出现 Version 相同的情况下, 一个是快照版, 一个是发布版的情况), 故移除对 baseVersion 和 isSnapshot 的检查.
另外, Properties 属于 Aether 内部的非持久化信息交换方式, 不是必须纳入检查的项目, 故新增参数用于选择是否检查 Properties 是否相同.
------------------------------------
[1]: https://community.sonatype.com/t/what-is-the-differences-between-maven-baseversion-and-maven-version/2937
2022-06-15 02:18:01 +08:00
7e48f4bf0b
build(test): 增加 Kover 测试覆盖率插件, 升级 Mockk 依赖项版本(1.12.3 -> 1.12.4).
Kover 是 Kotlin 官方为弥补 Kotlin 不能使用 Jacoco 所推出的替代品, 目前使用上没有问题.
顺便更新一下 Mockk 版本.
2022-06-15 01:20:35 +08:00
9c05726849
refactor(config): 改进配置读取错误时输出的错误信息.
改进后的信息有助于让用户了解到底发生了什么, 可帮助用户找到出错的配置文件并修复错误的配置格式.
2022-06-11 16:19:08 +08:00
ac0a398afc
release: 发布 0.3.1 版本. 2022-06-07 00:27:20 +08:00
145e5a2141
build: 暂时将发布仓库迁移到 Kuku 的仓库.
由于私有仓库所在的服务器出现问题, 所以暂时将仓库改到 Kuku 的那边.
在此感谢 Kuku 提供仓库!
2022-06-07 00:25:50 +08:00
b5c85e213b
test: 完善序列化器的单元测试.
目前经测试, 已完善到 100% 覆盖率.
2022-05-19 23:54:27 +08:00
746221a085
feat(config): 简化凭证配置过程.
由于先前的配置过程较为麻烦, 故将凭证配置简化为只有用户名和密码.
2022-05-19 23:53:25 +08:00
24f34aa27f
refactor: 调整 checkJsonKey 的所在类, 以便于编写测试用例.
通过调整所在类, 可更好的在单元测试中获取方法对象, 进行测试调用.
2022-05-19 18:20:46 +08:00
31366575a9
test: 补充部分序列化单元测试.
补充一部分测试内容.
2022-05-19 17:55:36 +08:00
37c3275bb6
fix(config): 修复因 Maven 仓库配置中未包括 layout 属性导致解析错误的问题.
当 Maven 仓库采用 JsonObject 形式配置, 且未配置 "layout" 属性时, 将会引发 NPE,
该改动已修复该问题.
2022-05-19 16:54:47 +08:00
72e26bd677
fix(config): 更改 MavenRepositoryConfig.proxy 的默认值.
防止因默认值导致出现错误的代理配置, 故将默认值更改为无代理(null).
2022-05-19 16:43:25 +08:00
9aab3c2a24
feat(config): 将代理类型为 null 的情况视为不使用代理.
为简化用户配置难度, 关闭代理可选择将 type 设为 null, 来表示不需要使用代理.
2022-05-19 15:46:18 +08:00
cac055bb08
test: 完善 AppPaths 中对 BOT_DATA_PATH 环境变量的测试流程.
通过使用 System-Lambda 库, 补充 AppPaths 中对环境变量使用的测试.
2022-05-19 15:01:16 +08:00
efbb57f1f7
release: 发布 0.3.0 版本. 2022-05-18 15:58:22 +08:00
5e18149640
feat(config): 支持限定 Maven 仓库构件类型.
增加 Maven 仓库配置, 支持限定仓库可获取的构件发布类型(发布或快照).
此改动有利于用户增加仓库约束, 防止意外使用错误的扩展包版本.
2022-05-18 15:57:49 +08:00
0a5313e94a
fix(extension): 修复 Maven 仓库扩展搜索器无法从第三方仓库获取扩展的问题.
由于在加载仓库配置时, 未设置仓库 Id, 导致 Aether 将仓库排除, 进而导致无法通过第三方仓库获取插件.
改动后, 将在未配置仓库 Id 的情况下, 为其生成一个 Id 名称.
2022-05-18 15:40:33 +08:00
a0afde52ac
fix(launch): 修复 Maven 本地仓库文件夹未初始化的问题.
由于 Maven 本地仓库文件夹未初始化, 将导致启动时发生错误, 现已修复该问题.
2022-05-17 19:59:04 +08:00
ef37f3b2d7
fix(bot): 修复因机器人命令列表为空而导致命令列表自动更新报错的问题.
当机器人因扩展加载失败时, 将无法正常执行命令更新操作, 故添加空命令检查以避免该问题.
2022-05-17 19:56:42 +08:00