|
| 1 | +load("@bazel_skylib//lib:unittest.bzl", "asserts", "unittest") |
| 2 | +load("//private/extensions:maven.bzl", "process_gradle_versions_file") |
| 3 | +load("//private/lib:toml_parser.bzl", "parse_toml") |
| 4 | + |
| 5 | +def _simple_string_notation_impl(ctx): |
| 6 | + env = unittest.begin(ctx) |
| 7 | + |
| 8 | + toml_content = """\ |
| 9 | +[libraries] |
| 10 | +commons-lang = "org.apache.commons:commons-lang3:3.12.0" |
| 11 | +""" |
| 12 | + |
| 13 | + parsed = parse_toml(toml_content) |
| 14 | + artifacts, boms = process_gradle_versions_file(parsed, []) |
| 15 | + |
| 16 | + asserts.equals(env, 1, len(artifacts)) |
| 17 | + asserts.equals(env, 0, len(boms)) |
| 18 | + asserts.equals(env, "org.apache.commons", artifacts[0].group) |
| 19 | + asserts.equals(env, "commons-lang3", artifacts[0].artifact) |
| 20 | + asserts.equals(env, "3.12.0", artifacts[0].version) |
| 21 | + |
| 22 | + return unittest.end(env) |
| 23 | + |
| 24 | +simple_string_notation_test = unittest.make(_simple_string_notation_impl) |
| 25 | + |
| 26 | +def _map_with_module_and_inline_version_impl(ctx): |
| 27 | + env = unittest.begin(ctx) |
| 28 | + |
| 29 | + toml_content = """\ |
| 30 | +[libraries] |
| 31 | +guava = { module = "com.google.guava:guava", version = "32.1.0-jre" } |
| 32 | +""" |
| 33 | + |
| 34 | + parsed = parse_toml(toml_content) |
| 35 | + artifacts, boms = process_gradle_versions_file(parsed, []) |
| 36 | + |
| 37 | + asserts.equals(env, 1, len(artifacts)) |
| 38 | + asserts.equals(env, 0, len(boms)) |
| 39 | + asserts.equals(env, "com.google.guava", artifacts[0].group) |
| 40 | + asserts.equals(env, "guava", artifacts[0].artifact) |
| 41 | + asserts.equals(env, "32.1.0-jre", artifacts[0].version) |
| 42 | + |
| 43 | + return unittest.end(env) |
| 44 | + |
| 45 | +map_with_module_and_inline_version_test = unittest.make(_map_with_module_and_inline_version_impl) |
| 46 | + |
| 47 | +def _map_with_module_and_version_ref_impl(ctx): |
| 48 | + env = unittest.begin(ctx) |
| 49 | + |
| 50 | + toml_content = """\ |
| 51 | +[versions] |
| 52 | +junit = "5.10.0" |
| 53 | +
|
| 54 | +[libraries] |
| 55 | +junit-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junit" } |
| 56 | +""" |
| 57 | + |
| 58 | + parsed = parse_toml(toml_content) |
| 59 | + artifacts, boms = process_gradle_versions_file(parsed, []) |
| 60 | + |
| 61 | + asserts.equals(env, 1, len(artifacts)) |
| 62 | + asserts.equals(env, 0, len(boms)) |
| 63 | + asserts.equals(env, "org.junit.jupiter", artifacts[0].group) |
| 64 | + asserts.equals(env, "junit-jupiter-api", artifacts[0].artifact) |
| 65 | + asserts.equals(env, "5.10.0", artifacts[0].version) |
| 66 | + |
| 67 | + return unittest.end(env) |
| 68 | + |
| 69 | +map_with_module_and_version_ref_test = unittest.make(_map_with_module_and_version_ref_impl) |
| 70 | + |
| 71 | +def _map_with_module_no_version_impl(ctx): |
| 72 | + env = unittest.begin(ctx) |
| 73 | + |
| 74 | + toml_content = """\ |
| 75 | +[libraries] |
| 76 | +guava-from-bom = { module = "com.google.guava:guava" } |
| 77 | +""" |
| 78 | + |
| 79 | + parsed = parse_toml(toml_content) |
| 80 | + artifacts, boms = process_gradle_versions_file(parsed, []) |
| 81 | + |
| 82 | + asserts.equals(env, 1, len(artifacts)) |
| 83 | + asserts.equals(env, 0, len(boms)) |
| 84 | + asserts.equals(env, "com.google.guava", artifacts[0].group) |
| 85 | + asserts.equals(env, "guava", artifacts[0].artifact) |
| 86 | + asserts.equals(env, "", artifacts[0].version) |
| 87 | + |
| 88 | + return unittest.end(env) |
| 89 | + |
| 90 | +map_with_module_no_version_test = unittest.make(_map_with_module_no_version_impl) |
| 91 | + |
| 92 | +def _map_with_group_name_and_inline_version_impl(ctx): |
| 93 | + env = unittest.begin(ctx) |
| 94 | + |
| 95 | + toml_content = """\ |
| 96 | +[libraries] |
| 97 | +androidx-core = { group = "androidx.core", name = "core-ktx", version = "1.12.0" } |
| 98 | +""" |
| 99 | + |
| 100 | + parsed = parse_toml(toml_content) |
| 101 | + artifacts, boms = process_gradle_versions_file(parsed, []) |
| 102 | + |
| 103 | + asserts.equals(env, 1, len(artifacts)) |
| 104 | + asserts.equals(env, 0, len(boms)) |
| 105 | + asserts.equals(env, "androidx.core", artifacts[0].group) |
| 106 | + asserts.equals(env, "core-ktx", artifacts[0].artifact) |
| 107 | + asserts.equals(env, "1.12.0", artifacts[0].version) |
| 108 | + |
| 109 | + return unittest.end(env) |
| 110 | + |
| 111 | +map_with_group_name_and_inline_version_test = unittest.make(_map_with_group_name_and_inline_version_impl) |
| 112 | + |
| 113 | +def _map_with_group_name_and_version_ref_impl(ctx): |
| 114 | + env = unittest.begin(ctx) |
| 115 | + |
| 116 | + toml_content = """\ |
| 117 | +[versions] |
| 118 | +kotlin = "1.9.0" |
| 119 | +
|
| 120 | +[libraries] |
| 121 | +kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" } |
| 122 | +""" |
| 123 | + |
| 124 | + parsed = parse_toml(toml_content) |
| 125 | + artifacts, boms = process_gradle_versions_file(parsed, []) |
| 126 | + |
| 127 | + asserts.equals(env, 1, len(artifacts)) |
| 128 | + asserts.equals(env, 0, len(boms)) |
| 129 | + asserts.equals(env, "org.jetbrains.kotlin", artifacts[0].group) |
| 130 | + asserts.equals(env, "kotlin-stdlib", artifacts[0].artifact) |
| 131 | + asserts.equals(env, "1.9.0", artifacts[0].version) |
| 132 | + |
| 133 | + return unittest.end(env) |
| 134 | + |
| 135 | +map_with_group_name_and_version_ref_test = unittest.make(_map_with_group_name_and_version_ref_impl) |
| 136 | + |
| 137 | +def _map_with_group_name_no_version_impl(ctx): |
| 138 | + env = unittest.begin(ctx) |
| 139 | + |
| 140 | + toml_content = """\ |
| 141 | +[versions] |
| 142 | +compose = "1.5.0" |
| 143 | +
|
| 144 | +[libraries] |
| 145 | +compose-ui = { group = "androidx.compose.ui", name = "ui", version.ref = "compose" } |
| 146 | +""" |
| 147 | + |
| 148 | + parsed = parse_toml(toml_content) |
| 149 | + artifacts, boms = process_gradle_versions_file(parsed, []) |
| 150 | + |
| 151 | + asserts.equals(env, 1, len(artifacts)) |
| 152 | + asserts.equals(env, 0, len(boms)) |
| 153 | + asserts.equals(env, "androidx.compose.ui", artifacts[0].group) |
| 154 | + asserts.equals(env, "ui", artifacts[0].artifact) |
| 155 | + asserts.equals(env, "1.5.0", artifacts[0].version) |
| 156 | + |
| 157 | + return unittest.end(env) |
| 158 | + |
| 159 | +map_with_group_name_no_version_test = unittest.make(_map_with_group_name_no_version_impl) |
| 160 | + |
| 161 | +def _map_with_module_and_packaging_impl(ctx): |
| 162 | + env = unittest.begin(ctx) |
| 163 | + |
| 164 | + toml_content = """\ |
| 165 | +[libraries] |
| 166 | +play-services = { module = "com.google.android.gms:play-services-tasks", package = "aar", version = "18.1.0" } |
| 167 | +""" |
| 168 | + |
| 169 | + parsed = parse_toml(toml_content) |
| 170 | + artifacts, boms = process_gradle_versions_file(parsed, []) |
| 171 | + |
| 172 | + asserts.equals(env, 1, len(artifacts)) |
| 173 | + asserts.equals(env, 0, len(boms)) |
| 174 | + asserts.equals(env, "com.google.android.gms", artifacts[0].group) |
| 175 | + asserts.equals(env, "play-services-tasks", artifacts[0].artifact) |
| 176 | + asserts.equals(env, "18.1.0", artifacts[0].version) |
| 177 | + asserts.equals(env, "aar", artifacts[0].packaging) |
| 178 | + |
| 179 | + return unittest.end(env) |
| 180 | + |
| 181 | +map_with_module_and_packaging_test = unittest.make(_map_with_module_and_packaging_impl) |
| 182 | + |
| 183 | +def _map_with_group_name_and_packaging_impl(ctx): |
| 184 | + env = unittest.begin(ctx) |
| 185 | + |
| 186 | + toml_content = """\ |
| 187 | +[libraries] |
| 188 | +android-material = { group = "com.google.android.material", name = "material", version = "1.10.0", package = "aar" } |
| 189 | +""" |
| 190 | + |
| 191 | + parsed = parse_toml(toml_content) |
| 192 | + artifacts, boms = process_gradle_versions_file(parsed, []) |
| 193 | + |
| 194 | + asserts.equals(env, 1, len(artifacts)) |
| 195 | + asserts.equals(env, 0, len(boms)) |
| 196 | + asserts.equals(env, "com.google.android.material", artifacts[0].group) |
| 197 | + asserts.equals(env, "material", artifacts[0].artifact) |
| 198 | + asserts.equals(env, "1.10.0", artifacts[0].version) |
| 199 | + asserts.equals(env, "aar", artifacts[0].packaging) |
| 200 | + |
| 201 | + return unittest.end(env) |
| 202 | + |
| 203 | +map_with_group_name_and_packaging_test = unittest.make(_map_with_group_name_and_packaging_impl) |
| 204 | + |
| 205 | +def _bom_handling_impl(ctx): |
| 206 | + env = unittest.begin(ctx) |
| 207 | + |
| 208 | + toml_content = """\ |
| 209 | +[libraries] |
| 210 | +guava-bom = { module = "com.google.guava:guava-bom", version = "32.1.0-jre" } |
| 211 | +guava = { module = "com.google.guava:guava", version = "32.1.0-jre" } |
| 212 | +""" |
| 213 | + |
| 214 | + parsed = parse_toml(toml_content) |
| 215 | + artifacts, boms = process_gradle_versions_file(parsed, ["com.google.guava:guava-bom"]) |
| 216 | + |
| 217 | + asserts.equals(env, 1, len(artifacts)) |
| 218 | + asserts.equals(env, 1, len(boms)) |
| 219 | + |
| 220 | + # Check the artifact |
| 221 | + asserts.equals(env, "com.google.guava", artifacts[0].group) |
| 222 | + asserts.equals(env, "guava", artifacts[0].artifact) |
| 223 | + asserts.equals(env, "32.1.0-jre", artifacts[0].version) |
| 224 | + |
| 225 | + # Check the BOM |
| 226 | + asserts.equals(env, "com.google.guava", boms[0].group) |
| 227 | + asserts.equals(env, "guava-bom", boms[0].artifact) |
| 228 | + asserts.equals(env, "32.1.0-jre", boms[0].version) |
| 229 | + |
| 230 | + return unittest.end(env) |
| 231 | + |
| 232 | +bom_handling_test = unittest.make(_bom_handling_impl) |
| 233 | + |
| 234 | +def _multiple_libraries_impl(ctx): |
| 235 | + env = unittest.begin(ctx) |
| 236 | + |
| 237 | + toml_content = """\ |
| 238 | +[versions] |
| 239 | +kotlin = "1.9.0" |
| 240 | +junit = "5.10.0" |
| 241 | +
|
| 242 | +[libraries] |
| 243 | +commons-lang = "org.apache.commons:commons-lang3:3.12.0" |
| 244 | +guava = { module = "com.google.guava:guava", version = "32.1.0-jre" } |
| 245 | +junit-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junit" } |
| 246 | +kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" } |
| 247 | +""" |
| 248 | + |
| 249 | + parsed = parse_toml(toml_content) |
| 250 | + artifacts, boms = process_gradle_versions_file(parsed, []) |
| 251 | + |
| 252 | + asserts.equals(env, 4, len(artifacts)) |
| 253 | + asserts.equals(env, 0, len(boms)) |
| 254 | + |
| 255 | + return unittest.end(env) |
| 256 | + |
| 257 | +multiple_libraries_test = unittest.make(_multiple_libraries_impl) |
| 258 | + |
| 259 | +def version_catalogs_test_suite(): |
| 260 | + unittest.suite( |
| 261 | + "version_catalogs_tests", |
| 262 | + simple_string_notation_test, |
| 263 | + map_with_module_and_inline_version_test, |
| 264 | + map_with_module_and_version_ref_test, |
| 265 | + map_with_module_no_version_test, |
| 266 | + map_with_group_name_and_inline_version_test, |
| 267 | + map_with_group_name_and_version_ref_test, |
| 268 | + map_with_group_name_no_version_test, |
| 269 | + map_with_module_and_packaging_test, |
| 270 | + map_with_group_name_and_packaging_test, |
| 271 | + bom_handling_test, |
| 272 | + multiple_libraries_test, |
| 273 | + ) |
0 commit comments