1# Copyright 2018 The Bazel Authors. All rights reserved. 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15"""Unit tests for versions.bzl.""" 16 17load("//lib:unittest.bzl", "asserts", "unittest") 18load("//lib:versions.bzl", "versions") 19 20def _parse_test(ctx): 21 """Unit tests for versions.parse""" 22 env = unittest.begin(ctx) 23 24 asserts.equals(env, (0, 10, 0), versions.parse("0.10.0rc1 abcd123")) 25 asserts.equals(env, (0, 4, 0), versions.parse("0.4.0 abcd123")) 26 asserts.equals(env, (0, 4, 0), versions.parse("0.4.0")) 27 asserts.equals(env, (0, 4, 0), versions.parse("0.4.0rc")) 28 29 # Verify that this doesn't fail - it corresponds to a dev build of Bazel. 30 versions.parse("") 31 32 return unittest.end(env) 33 34def _version_comparison_test(ctx): 35 """Unit tests for versions.is_at_least and is_at_most""" 36 env = unittest.begin(ctx) 37 38 asserts.false(env, versions.is_at_least("0.11.0 123abcd", "0.10.0rc1 abcd123")) 39 asserts.true(env, versions.is_at_least("0.9.0", "0.10.0rc2")) 40 asserts.true(env, versions.is_at_least("0.9.0", "0.9.0rc3")) 41 asserts.true(env, versions.is_at_least("0.9.0", "1.2.3")) 42 asserts.true(env, versions.is_at_least("0.9.0", "")) 43 44 asserts.false(env, versions.is_at_most("0.4.0 123abcd", "0.10.0rc1 abcd123")) 45 asserts.true(env, versions.is_at_most("0.4.0", "0.3.0rc2")) 46 asserts.true(env, versions.is_at_most("0.4.0", "0.4.0rc3")) 47 asserts.true(env, versions.is_at_most("1.4.0", "0.4.0rc3")) 48 asserts.false(env, versions.is_at_most("1.4.0", "")) 49 50 return unittest.end(env) 51 52def _check_test(ctx): 53 """Unit tests for versions.check""" 54 env = unittest.begin(ctx) 55 56 asserts.equals(env, None, versions.check("0.4.5 abcdef", bazel_version = "0.10.0rc1 abcd123")) 57 asserts.equals(env, None, versions.check("0.4.5", bazel_version = "0.4.5")) 58 asserts.equals(env, None, versions.check("0.4.5", bazel_version = "0.10.0rc1 abcd123")) 59 asserts.equals(env, None, versions.check("0.4.5", maximum_bazel_version = "1.0.0", bazel_version = "0.10.0rc1 abcd123")) 60 61 return unittest.end(env) 62 63parse_test = unittest.make(_parse_test) 64version_comparison_test = unittest.make(_version_comparison_test) 65check_test = unittest.make(_check_test) 66 67def versions_test_suite(): 68 """Creates the test targets and test suite for versions.bzl tests.""" 69 unittest.suite( 70 "versions_tests", 71 parse_test, 72 version_comparison_test, 73 check_test, 74 ) 75