• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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"""Unit tests for types.bzl."""
15
16load("//lib:new_sets.bzl", "sets")
17load("//lib:types.bzl", "types")
18load("//lib:unittest.bzl", "asserts", "unittest")
19
20def _a_function():
21    """A dummy function for testing."""
22    pass
23
24def _is_string_test(ctx):
25    """Unit tests for types.is_string."""
26
27    env = unittest.begin(ctx)
28
29    asserts.true(env, types.is_string(""))
30    asserts.true(env, types.is_string("string"))
31
32    asserts.false(env, types.is_string(4))
33    asserts.false(env, types.is_string([1]))
34    asserts.false(env, types.is_string({}))
35    asserts.false(env, types.is_string(()))
36    asserts.false(env, types.is_string(True))
37    asserts.false(env, types.is_string(None))
38    asserts.false(env, types.is_string(_a_function))
39    asserts.false(env, types.is_string(depset()))
40
41    return unittest.end(env)
42
43is_string_test = unittest.make(_is_string_test)
44
45def _is_bool_test(ctx):
46    """Unit tests for types.is_bool."""
47
48    env = unittest.begin(ctx)
49
50    asserts.true(env, types.is_bool(True))
51    asserts.true(env, types.is_bool(False))
52
53    asserts.false(env, types.is_bool(4))
54    asserts.false(env, types.is_bool([1]))
55    asserts.false(env, types.is_bool({}))
56    asserts.false(env, types.is_bool(()))
57    asserts.false(env, types.is_bool(""))
58    asserts.false(env, types.is_bool(None))
59    asserts.false(env, types.is_bool(_a_function))
60    asserts.false(env, types.is_bool(depset()))
61
62    return unittest.end(env)
63
64is_bool_test = unittest.make(_is_bool_test)
65
66def _is_list_test(ctx):
67    """Unit tests for types.is_list."""
68
69    env = unittest.begin(ctx)
70
71    asserts.true(env, types.is_list([]))
72    asserts.true(env, types.is_list([1]))
73
74    asserts.false(env, types.is_list(4))
75    asserts.false(env, types.is_list("s"))
76    asserts.false(env, types.is_list({}))
77    asserts.false(env, types.is_list(()))
78    asserts.false(env, types.is_list(True))
79    asserts.false(env, types.is_list(None))
80    asserts.false(env, types.is_list(_a_function))
81    asserts.false(env, types.is_list(depset()))
82
83    return unittest.end(env)
84
85is_list_test = unittest.make(_is_list_test)
86
87def _is_none_test(ctx):
88    """Unit tests for types.is_none."""
89
90    env = unittest.begin(ctx)
91
92    asserts.true(env, types.is_none(None))
93
94    asserts.false(env, types.is_none(4))
95    asserts.false(env, types.is_none("s"))
96    asserts.false(env, types.is_none({}))
97    asserts.false(env, types.is_none(()))
98    asserts.false(env, types.is_none(True))
99    asserts.false(env, types.is_none([]))
100    asserts.false(env, types.is_none([1]))
101    asserts.false(env, types.is_none(_a_function))
102    asserts.false(env, types.is_none(depset()))
103
104    return unittest.end(env)
105
106is_none_test = unittest.make(_is_none_test)
107
108def _is_int_test(ctx):
109    """Unit tests for types.is_int."""
110
111    env = unittest.begin(ctx)
112
113    asserts.true(env, types.is_int(1))
114    asserts.true(env, types.is_int(-1))
115
116    asserts.false(env, types.is_int("s"))
117    asserts.false(env, types.is_int({}))
118    asserts.false(env, types.is_int(()))
119    asserts.false(env, types.is_int(True))
120    asserts.false(env, types.is_int([]))
121    asserts.false(env, types.is_int([1]))
122    asserts.false(env, types.is_int(None))
123    asserts.false(env, types.is_int(_a_function))
124    asserts.false(env, types.is_int(depset()))
125
126    return unittest.end(env)
127
128is_int_test = unittest.make(_is_int_test)
129
130def _is_tuple_test(ctx):
131    """Unit tests for types.is_tuple."""
132
133    env = unittest.begin(ctx)
134
135    asserts.true(env, types.is_tuple(()))
136    asserts.true(env, types.is_tuple((1,)))
137
138    asserts.false(env, types.is_tuple(1))
139    asserts.false(env, types.is_tuple("s"))
140    asserts.false(env, types.is_tuple({}))
141    asserts.false(env, types.is_tuple(True))
142    asserts.false(env, types.is_tuple([]))
143    asserts.false(env, types.is_tuple([1]))
144    asserts.false(env, types.is_tuple(None))
145    asserts.false(env, types.is_tuple(_a_function))
146    asserts.false(env, types.is_tuple(depset()))
147
148    return unittest.end(env)
149
150is_tuple_test = unittest.make(_is_tuple_test)
151
152def _is_dict_test(ctx):
153    """Unit tests for types.is_dict."""
154
155    env = unittest.begin(ctx)
156
157    asserts.true(env, types.is_dict({}))
158    asserts.true(env, types.is_dict({"key": "value"}))
159
160    asserts.false(env, types.is_dict(1))
161    asserts.false(env, types.is_dict("s"))
162    asserts.false(env, types.is_dict(()))
163    asserts.false(env, types.is_dict(True))
164    asserts.false(env, types.is_dict([]))
165    asserts.false(env, types.is_dict([1]))
166    asserts.false(env, types.is_dict(None))
167    asserts.false(env, types.is_dict(_a_function))
168    asserts.false(env, types.is_dict(depset()))
169
170    return unittest.end(env)
171
172is_dict_test = unittest.make(_is_dict_test)
173
174def _is_function_test(ctx):
175    """Unit tests for types.is_function."""
176
177    env = unittest.begin(ctx)
178
179    asserts.true(env, types.is_function(_a_function))
180
181    asserts.false(env, types.is_function({}))
182    asserts.false(env, types.is_function(1))
183    asserts.false(env, types.is_function("s"))
184    asserts.false(env, types.is_function(()))
185    asserts.false(env, types.is_function(True))
186    asserts.false(env, types.is_function([]))
187    asserts.false(env, types.is_function([1]))
188    asserts.false(env, types.is_function(None))
189    asserts.false(env, types.is_function(depset()))
190
191    return unittest.end(env)
192
193is_function_test = unittest.make(_is_function_test)
194
195def _is_depset_test(ctx):
196    """Unit tests for types.is_depset."""
197
198    env = unittest.begin(ctx)
199
200    asserts.true(env, types.is_depset(depset()))
201    asserts.true(env, types.is_depset(depset(["foo"])))
202    asserts.true(env, types.is_depset(
203        depset(["foo"], transitive = [depset(["bar", "baz"])]),
204    ))
205
206    asserts.false(env, types.is_depset({}))
207    asserts.false(env, types.is_depset(1))
208    asserts.false(env, types.is_depset("s"))
209    asserts.false(env, types.is_depset(()))
210    asserts.false(env, types.is_depset(True))
211    asserts.false(env, types.is_depset([]))
212    asserts.false(env, types.is_depset([1]))
213    asserts.false(env, types.is_depset(None))
214
215    return unittest.end(env)
216
217is_depset_test = unittest.make(_is_depset_test)
218
219def _is_set_test(ctx):
220    """Unit test for types.is_set."""
221    env = unittest.begin(ctx)
222
223    asserts.true(env, types.is_set(sets.make()))
224    asserts.true(env, types.is_set(sets.make([1])))
225    asserts.false(env, types.is_set(None))
226    asserts.false(env, types.is_set({}))
227    asserts.false(env, types.is_set(struct(foo = 1)))
228    asserts.false(env, types.is_set(struct(_values = "not really values")))
229
230    return unittest.end(env)
231
232is_set_test = unittest.make(_is_set_test)
233
234def types_test_suite():
235    """Creates the test targets and test suite for types.bzl tests."""
236    unittest.suite(
237        "types_tests",
238        is_list_test,
239        is_string_test,
240        is_bool_test,
241        is_none_test,
242        is_int_test,
243        is_tuple_test,
244        is_dict_test,
245        is_function_test,
246        is_depset_test,
247        is_set_test,
248    )
249