def _do_full_nl_comp(case, test, compare_name, baseline_root=None): test_dir = case.get_value("CASEROOT") casedoc_dir = os.path.join(test_dir, "CaseDocs") baseline_root = case.get_value("BASELINE_ROOT") if baseline_root is None else baseline_root all_match = True baseline_dir = os.path.join(baseline_root, compare_name, test) baseline_casedocs = os.path.join(baseline_dir, "CaseDocs") # Start off by comparing everything in CaseDocs except a few arbitrary files (ugh!) # TODO: Namelist files should have consistent suffix all_items_to_compare = [item for item in glob.glob("{}/*".format(casedoc_dir))\ if "README" not in os.path.basename(item)\ and not item.endswith("doc")\ and not item.endswith("prescribed")\ and not os.path.basename(item).startswith(".")] comments = "NLCOMP\n" for item in all_items_to_compare: baseline_counterpart = os.path.join(baseline_casedocs \ if os.path.dirname(item).endswith("CaseDocs") \ else baseline_dir,os.path.basename(item)) if not os.path.exists(baseline_counterpart): comments += "Missing baseline namelist '{}'\n".format(baseline_counterpart) all_match = False else: if item.endswith("runconfig") or item.endswith("runseq"): success, current_comments = compare_runconfigfiles(baseline_counterpart, item, test) elif is_namelist_file(item): success, current_comments = compare_namelist_files(baseline_counterpart, item, test) else: success, current_comments = compare_files(baseline_counterpart, item, test) all_match &= success if not success: comments += "Comparison failed between '{}' with '{}'\n".format(item, baseline_counterpart) comments += current_comments logging.info(comments) return all_match, comments
if "README" not in os.path.basename(item)\ and not item.endswith("doc")\ and not item.endswith("prescribed")\ and not os.path.basename(item).startswith(".")] + \ glob.glob("%s/*user_nl*" % test_dir) comments = "" for item in all_items_to_compare: baseline_counterpart = os.path.join(baseline_casedocs \ if os.path.dirname(item).endswith("CaseDocs") \ else baseline_dir,os.path.basename(item)) if not os.path.exists(baseline_counterpart): comments += "Missing baseline namelist '%s'\n" % baseline_counterpart all_match = False else: if is_namelist_file(item): success, current_comments = compare_namelist_files(baseline_counterpart, item, test) else: success, current_comments = compare_files(baseline_counterpart, item, test) all_match &= success comments += current_comments logging.info(comments) return all_match, comments def _do_full_nl_gen(case, test, generate_name): test_dir = case.get_value("CASEROOT") casedoc_dir = os.path.join(test_dir, "CaseDocs") baseline_root = case.get_value("BASELINE_ROOT")
if "README" not in os.path.basename(item)\ and not item.endswith("doc")\ and not item.endswith("prescribed")\ and not os.path.basename(item).startswith(".")] comments = "NLCOMP\n" for item in all_items_to_compare: baseline_counterpart = os.path.join(baseline_casedocs \ if os.path.dirname(item).endswith("CaseDocs") \ else baseline_dir,os.path.basename(item)) if not os.path.exists(baseline_counterpart): comments += "Missing baseline namelist '{}'\n".format( baseline_counterpart) all_match = False else: if not item.endswith("runconfig") and is_namelist_file(item): success, current_comments = compare_namelist_files( baseline_counterpart, item, test) else: success, current_comments = compare_files( baseline_counterpart, item, test) all_match &= success if not success: comments += "Comparison failed between '{}' with '{}'\n".format( item, baseline_counterpart) comments += current_comments logging.info(comments) return all_match, comments