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"""Documents the worker builds (aootest_worker.ops.generate) saved in each ODF save mode and loaded again: the values the 21*2cb6d6f1SJim Jagielskichecks in data/checks/ read from the saved copy must be the ones recorded for them. Differences between save modes that are 22*2cb6d6f1SJim Jagielskiknown are rows in data/expect/reload.tsv.""" 23*2cb6d6f1SJim Jagielskiimport pytest 24*2cb6d6f1SJim Jagielski 25*2cb6d6f1SJim Jagielskifrom aootest import documents 26*2cb6d6f1SJim Jagielskifrom aootest.odfversion import SAVE_MODES 27*2cb6d6f1SJim Jagielski 28*2cb6d6f1SJim Jagielskipytestmark = pytest.mark.slow 29*2cb6d6f1SJim Jagielski 30*2cb6d6f1SJim JagielskiBUILT = [s for s in documents.generated() if s.checks] 31*2cb6d6f1SJim JagielskiRELOAD = [(m, s.id, f, c["name"]) for m in SAVE_MODES for s in BUILT for f in s.checks for c in documents.load_checks(f)] 32*2cb6d6f1SJim Jagielski 33*2cb6d6f1SJim Jagielski 34*2cb6d6f1SJim Jagielski@pytest.mark.parametrize("mode,source_id,checks,name", RELOAD, ids=["%s|%s|%s" % (m, i, n) for m, i, f, n in RELOAD]) 35*2cb6d6f1SJim Jagielskidef test_reload_check(odf_runs, need_mode, mode, source_id, checks, name): 36*2cb6d6f1SJim Jagielski need_mode(mode) 37*2cb6d6f1SJim Jagielski run = odf_runs(mode) 38*2cb6d6f1SJim Jagielski saved = run.saved()[source_id] 39*2cb6d6f1SJim Jagielski assert saved["out"], "not saved: %s" % saved["detail"] 40*2cb6d6f1SJim Jagielski got = run.reload_checks()[source_id] 41*2cb6d6f1SJim Jagielski assert "__error__" not in got, got.get("__error__") 42*2cb6d6f1SJim Jagielski expected = {c["name"]: c["expect"] for c in documents.load_checks(checks)}[name] 43*2cb6d6f1SJim Jagielski assert got[name] == expected 44