xref: /trunk/test/aoo-test/tests/selftest/test_idcheck.py (revision 2cb6d6f119bbe2f78742f1c5c8538cb0d4e72ede)
1*2cb6d6f1SJim Jagielski################################################################
2*2cb6d6f1SJim Jagielski#
3*2cb6d6f1SJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
4*2cb6d6f1SJim Jagielski#  or more contributor license agreements.  See the NOTICE file
5*2cb6d6f1SJim Jagielski#  distributed with this work for additional information
6*2cb6d6f1SJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
7*2cb6d6f1SJim Jagielski#  to you under the Apache License, Version 2.0 (the
8*2cb6d6f1SJim Jagielski#  "License"); you may not use this file except in compliance
9*2cb6d6f1SJim Jagielski#  with the License.  You may obtain a copy of the License at
10*2cb6d6f1SJim Jagielski#
11*2cb6d6f1SJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
12*2cb6d6f1SJim Jagielski#
13*2cb6d6f1SJim Jagielski#  Unless required by applicable law or agreed to in writing,
14*2cb6d6f1SJim Jagielski#  software distributed under the License is distributed on an
15*2cb6d6f1SJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*2cb6d6f1SJim Jagielski#  KIND, either express or implied.  See the License for the
17*2cb6d6f1SJim Jagielski#  specific language governing permissions and limitations
18*2cb6d6f1SJim Jagielski#  under the License.
19*2cb6d6f1SJim Jagielski#
20*2cb6d6f1SJim Jagielski################################################################
21*2cb6d6f1SJim Jagielski
22*2cb6d6f1SJim Jagielski"""idcheck.check() on the negative controls."""
23*2cb6d6f1SJim Jagielskiimport pytest
24*2cb6d6f1SJim Jagielski
25*2cb6d6f1SJim Jagielskipytestmark = pytest.mark.selftest
26*2cb6d6f1SJim Jagielski
27*2cb6d6f1SJim Jagielski
28*2cb6d6f1SJim Jagielskidef ierrs(ids, pkg):
29*2cb6d6f1SJim Jagielski    return [e[3] for e in ids["errors"] if e[0].startswith(pkg + "/")]
30*2cb6d6f1SJim Jagielski
31*2cb6d6f1SJim Jagielski
32*2cb6d6f1SJim JagielskiROWS = [
33*2cb6d6f1SJim Jagielski    ("good.odt, goodid.odt (normalized ids) clean", lambda I: not I("good.odt") and not I("goodid.odt")),
34*2cb6d6f1SJim Jagielski    ("dupid.odt flags the duplicate after normalization", lambda I: any("duplicates" in m for m in I("dupid.odt"))),
35*2cb6d6f1SJim Jagielski    ("badid.odt, badid2.odt flag non-NCName ids", lambda I: all(any("not an NCName" in m for m in I(p)) for p in ("badid.odt", "badid2.odt"))),
36*2cb6d6f1SJim Jagielski    ("badns.odt flags the unbound prefix", lambda I: any("unbound prefix" in m for m in I("badns.odt"))),
37*2cb6d6f1SJim Jagielski    ("badsig.odt flags a duplicate id in a signature file", lambda I: any("duplicates" in m for m in I("badsig.odt"))),
38*2cb6d6f1SJim Jagielski]
39*2cb6d6f1SJim Jagielski
40*2cb6d6f1SJim Jagielski
41*2cb6d6f1SJim Jagielski@pytest.mark.parametrize("row", [pytest.param(r[1], id=r[0]) for r in ROWS])
42*2cb6d6f1SJim Jagielskidef test_idcheck_controls(row, ids):
43*2cb6d6f1SJim Jagielski    assert row(lambda pkg: ierrs(ids, pkg))
44*2cb6d6f1SJim Jagielski
45*2cb6d6f1SJim Jagielski
46*2cb6d6f1SJim Jagielskidef test_idcheck_no_errors_in_other_packages(ids):
47*2cb6d6f1SJim Jagielski    assert {e[0].split("/")[0] for e in ids["errors"]} == {"dupid.odt", "badid.odt", "badid2.odt", "badns.odt", "badsig.odt"}
48