| """ |
| Unit test setup |
| """ |
| |
| load("@bazel_skylib//lib:new_sets.bzl", "sets") |
| load("@bazel_skylib//lib:unittest.bzl", "asserts", "unittest") |
| load("//:buildtools.bzl", "buildtools") |
| |
| def _create_asset_test(ctx): |
| env = unittest.begin(ctx) |
| |
| # Test without sha256 |
| actual = buildtools.create_asset( |
| name = "buildifier", |
| platform = "linux", |
| arch = "amd64", |
| version = "1.2.3", |
| ) |
| expected = struct( |
| name = "buildifier", |
| platform = "linux", |
| arch = "amd64", |
| version = "1.2.3", |
| sha256 = None, |
| ) |
| asserts.equals(env, expected, actual) |
| |
| # Test with sha256 |
| actual = buildtools.create_asset( |
| name = "buildifier", |
| platform = "linux", |
| arch = "amd64", |
| version = "1.2.3", |
| sha256 = "954ec397089344b1564e45dc095e9331e121eb0f20e72032fcc8e94de78e5663", |
| ) |
| expected = struct( |
| name = "buildifier", |
| platform = "linux", |
| arch = "amd64", |
| version = "1.2.3", |
| sha256 = "954ec397089344b1564e45dc095e9331e121eb0f20e72032fcc8e94de78e5663", |
| ) |
| asserts.equals(env, expected, actual) |
| |
| return unittest.end(env) |
| |
| create_asset_test = unittest.make(_create_asset_test) |
| |
| def _create_unique_name_test(ctx): |
| env = unittest.begin(ctx) |
| |
| asset = buildtools.create_asset( |
| name = "buildifier", |
| platform = "linux", |
| arch = "amd64", |
| version = "1.2.3", |
| sha256 = "954ec397089344b1564e45dc095e9331e121eb0f20e72032fcc8e94de78e5663", |
| ) |
| actual = buildtools.create_unique_name(asset) |
| asserts.equals(env, "buildifier_linux_amd64", actual) |
| |
| actual = buildtools.create_unique_name(name = "buildifier", platform = "linux", arch = "amd64") |
| asserts.equals(env, "buildifier_linux_amd64", actual) |
| |
| return unittest.end(env) |
| |
| create_unique_name_test = unittest.make(_create_unique_name_test) |
| |
| def _default_assets_test(ctx): |
| env = unittest.begin(ctx) |
| |
| asserts.true(env, len(buildtools.DEFAULT_ASSETS) > 0) |
| |
| return unittest.end(env) |
| |
| default_assets_test = unittest.make(_default_assets_test) |
| |
| def _asset_json_roundtrip_test(ctx): |
| env = unittest.begin(ctx) |
| |
| # Single asset |
| expected = buildtools.create_asset( |
| name = "buildifier", |
| platform = "linux", |
| arch = "amd64", |
| version = "1.2.3", |
| ) |
| asset_json = buildtools.asset_to_json(expected) |
| actual = buildtools.asset_from_json(asset_json) |
| asserts.equals(env, expected, actual) |
| |
| # List of assets |
| expected = [ |
| buildtools.create_asset( |
| name = "buildifier", |
| platform = "linux", |
| arch = "amd64", |
| version = "1.2.3", |
| ), |
| buildtools.create_asset( |
| name = "buildozer", |
| platform = "linux", |
| arch = "amd64", |
| version = "1.2.3", |
| ), |
| ] |
| asset_json = buildtools.asset_to_json(expected) |
| actual = buildtools.asset_from_json(asset_json) |
| asserts.equals(env, expected, actual) |
| |
| return unittest.end(env) |
| |
| asset_json_roundtrip_test = unittest.make(_asset_json_roundtrip_test) |
| |
| def _create_assets_test(ctx): |
| env = unittest.begin(ctx) |
| |
| # Test use defaults |
| assets = buildtools.create_assets(version = "4.2.5") |
| |
| # 2 tools * (2 mac arches + 2 linux arches + 1 windows arch) |
| asserts.equals(env, 10, len(assets)) |
| versions = sets.make([asset.version for asset in assets]) |
| asserts.true(env, sets.is_equal(versions, sets.make(["4.2.5"]))) |
| names = sets.make([asset.name for asset in assets]) |
| asserts.true(env, sets.is_equal(names, sets.make(["buildifier", "buildozer"]))) |
| platforms = sets.make([asset.platform for asset in assets]) |
| asserts.true(env, sets.is_equal(platforms, sets.make(["darwin", "linux", "windows"]))) |
| arches = sets.make([asset.arch for asset in assets]) |
| asserts.true(env, sets.is_equal(arches, sets.make(["amd64", "arm64"]))) |
| |
| # Test with custom names |
| assets = buildtools.create_assets(version = "4.2.5", names = ["buildifier"]) |
| |
| # 2 mac arches + 2 linux arches + 1 windows arch |
| asserts.equals(env, 5, len(assets)) |
| versions = sets.make([asset.version for asset in assets]) |
| asserts.true(env, sets.is_equal(versions, sets.make(["4.2.5"]))) |
| names = sets.make([asset.name for asset in assets]) |
| asserts.true(env, sets.is_equal(names, sets.make(["buildifier"]))) |
| platforms = sets.make([asset.platform for asset in assets]) |
| asserts.true(env, sets.is_equal(platforms, sets.make(["darwin", "linux", "windows"]))) |
| arches = sets.make([asset.arch for asset in assets]) |
| asserts.true(env, sets.is_equal(arches, sets.make(["amd64", "arm64"]))) |
| |
| # Test with custom platforms |
| assets = buildtools.create_assets(version = "4.2.5", platforms = ["linux"]) |
| asserts.equals(env, 4, len(assets)) |
| versions = sets.make([asset.version for asset in assets]) |
| asserts.true(env, sets.is_equal(versions, sets.make(["4.2.5"]))) |
| names = sets.make([asset.name for asset in assets]) |
| asserts.true(env, sets.is_equal(names, sets.make(["buildifier", "buildozer"]))) |
| platforms = sets.make([asset.platform for asset in assets]) |
| asserts.true(env, sets.is_equal(platforms, sets.make(["linux"]))) |
| arches = sets.make([asset.arch for asset in assets]) |
| asserts.true(env, sets.is_equal(arches, sets.make(["amd64", "arm64"]))) |
| |
| # Test with custom arches |
| assets = buildtools.create_assets(version = "4.2.5", arches = ["amd64"]) |
| |
| # 2 tools * 3 oses |
| asserts.equals(env, 6, len(assets)) |
| versions = sets.make([asset.version for asset in assets]) |
| asserts.true(env, sets.is_equal(versions, sets.make(["4.2.5"]))) |
| names = sets.make([asset.name for asset in assets]) |
| asserts.true(env, sets.is_equal(names, sets.make(["buildifier", "buildozer"]))) |
| platforms = sets.make([asset.platform for asset in assets]) |
| asserts.true(env, sets.is_equal(platforms, sets.make(["darwin", "linux", "windows"]))) |
| arches = sets.make([asset.arch for asset in assets]) |
| asserts.true(env, sets.is_equal(arches, sets.make(["amd64"]))) |
| |
| # Test with sha256 values |
| assets = buildtools.create_assets(version = "4.2.3", sha256_values = { |
| "buildifier_darwin_amd64": "954ec397089344b1564e45dc095e9331e121eb0f20e72032fcc8e94de78e5663", |
| "buildozer_darwin_amd64": "edcabae1d97bdc42559d7d1d65dfe7f8970db8d95d4bc9e7bf6656a9f2fb5592", |
| "buildifier_darwin_arm64": "9434043897a3c3821fda87046918e5a6c4320d8352df700f62046744c4d168a3", |
| "buildozer_darwin_arm64": "f8d0994620dec1247328f13db1d434b6489dd007f8e9b961dbd9363bc6fe7071", |
| "buildifier_linux_amd64": "a19126536bae9a3917a7fc4bdbbf0378371a1d1683ab2415857cf53bce9dee49", |
| "buildozer_linux_amd64": "6b4177321b770fb788b618caa453d34561b8c05081ae8b27657e527c2a3b5d52", |
| "buildifier_windows_amd64": "2956b54eb991d2b5050bb0141b700cb6af610eb1e87a1aa1b899526100d50e97", |
| "buildozer_windows_amd64": "9075d512e96a7b95225539d3dfbf42c4ad9ac9f6097c0420c9d8ea0a49a0a058", |
| }) |
| target = None |
| for asset in assets: |
| if asset.name == "buildifier" and asset.platform == "darwin" and asset.arch == "amd64": |
| target = asset |
| break |
| asserts.equals(env, "954ec397089344b1564e45dc095e9331e121eb0f20e72032fcc8e94de78e5663", target.sha256) |
| target = None |
| for asset in assets: |
| if asset.name == "buildozer" and asset.platform == "linux" and asset.arch == "amd64": |
| target = asset |
| break |
| asserts.equals(env, "6b4177321b770fb788b618caa453d34561b8c05081ae8b27657e527c2a3b5d52", target.sha256) |
| for asset in assets: |
| if asset.name == "buildifier" and asset.platform == "windows" and asset.arch == "amd64": |
| target = asset |
| break |
| asserts.equals(env, "2956b54eb991d2b5050bb0141b700cb6af610eb1e87a1aa1b899526100d50e97", target.sha256) |
| |
| return unittest.end(env) |
| |
| create_assets_test = unittest.make(_create_assets_test) |
| |
| def buildtools_test_suite(): |
| return unittest.suite( |
| "buildtools_tests", |
| create_asset_test, |
| create_unique_name_test, |
| default_assets_test, |
| asset_json_roundtrip_test, |
| create_assets_test, |
| ) |