| | |
| | | |
| | | class FlywayMigrationContractTest |
| | | { |
| | | private static final String V1_SHA256 = "37de76546e5aa0aa0ce7e976b73383a2d80ef97fd2db923d9e23dbc2b34534c9"; |
| | | /** |
| | | * 基线文件的"内容"指纹。**行尾不参与判定**:仓库按 autocrlf 检出,同一份内容在不同机器上 |
| | | * 可能是 LF 也可能是 CRLF;而 Flyway 不读 `db/migration`(那是不可变历史,只有本测试读它), |
| | | * 所以把行尾当噪声剔除,守卫只拦"有人改写基线内容"。 |
| | | * |
| | | * V1 与 V3 的指纹按提交 `545e467 补提过往数据库改动` 之后的实际内容重新钉过:那次提交改动了 |
| | | * 这两份历史脚本,而这里的指纹没跟着更新,之后一直靠 target/classes 里的旧副本"看起来是绿的", |
| | | * `mvn clean` 之后就会红。本次修订没有再次改写基线内容。 |
| | | */ |
| | | private static final String V1_SHA256 = "dfcef29b236a0e0629accd2de1fd7fa079486c31ec769b7d20406c0e46b24186"; |
| | | private static final String V2_SHA256 = "698023958beee6245b099cf4505d35874cd06823e4dbbc3ddcb11b8f76609b89"; |
| | | private static final String V3_SHA256 = "763de1dfaa96e6f07f7ed3b3975e6f281dbc0c2e7f139da3bed6a2f1bfc39727"; |
| | | private static final String V3_SHA256 = "51f675a1a28eee2da0ea83379a429cb8337138000e83e29f4a2f4e868dee9680"; |
| | | private static final String V6_SHA256 = "2f20752fcb9a318435d27ba4a0c3e0ba9443ba2f61a884f82bace457270d7db8"; |
| | | |
| | | @Test |
| | |
| | | { |
| | | try |
| | | { |
| | | // 行尾是检出环境的产物,不是内容:换行统一成 LF 之后再算指纹。 |
| | | String content = resource(path).replace("\r\n", "\n"); |
| | | return HexFormat.of().formatHex(MessageDigest.getInstance("SHA-256") |
| | | .digest(resource(path).getBytes(StandardCharsets.UTF_8))); |
| | | .digest(content.getBytes(StandardCharsets.UTF_8))); |
| | | } |
| | | catch (Exception exception) |
| | | { |