go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/lucicfg/testdata/swarming/dimension.star (about) 1 load("@stdlib//internal/luci/lib/swarming.star", "swarming") 2 3 def test_dimension_ctor(): 4 def eq(dim, value, expiration): 5 assert.eq(dim.value, value) 6 assert.eq(dim.expiration, expiration) 7 8 eq(swarming.dimension("abc"), "abc", None) 9 eq(swarming.dimension("abc", expiration = time.minute), "abc", time.minute) 10 eq(swarming.dimension("abc", expiration = 5 * time.minute), "abc", 5 * time.minute) 11 12 # 'value' validation. 13 assert.fails(lambda: swarming.dimension(123), "got int, want string") 14 assert.fails(lambda: swarming.dimension(""), "must not be empty") 15 16 # 'expiration' validation. 17 assert.fails(lambda: swarming.dimension("a", expiration = 300), "got int, want duration") 18 assert.fails(lambda: swarming.dimension("a", expiration = time.zero), "0s should be >= 1m0s") 19 assert.fails(lambda: swarming.dimension("a", expiration = 61 * time.second), "losing precision when truncating 1m1s to 1m0s units") 20 21 def test_validate_dimensions(): 22 call = lambda dims: swarming.validate_dimensions("dims", dims) 23 24 v1 = swarming.dimension("v1") 25 v2 = swarming.dimension("v2", expiration = 5 * time.minute) 26 27 assert.eq(call(None), {}) 28 assert.eq(call({"a": "v1", "b": v2}), {"a": [v1], "b": [v2]}) 29 assert.eq(call({"a": ["v1", v2]}), {"a": [v1, v2]}) 30 31 assert.fails(lambda: call({123: "v1"}), "got int key, want string") 32 assert.fails(lambda: call({"a": 123}), "got int, want swarming.dimension") 33 34 test_dimension_ctor() 35 test_validate_dimensions()