diff --git a/setup.cfg b/setup.cfg index 60478bd3..b9eb7133 100644 --- a/setup.cfg +++ b/setup.cfg @@ -30,6 +30,7 @@ install_requires = importlib_resources;python_version<'3.8' packaging Jinja2 + Pillow [options.entry_points] pytest11 = diff --git a/tests/subtests/README.rst b/tests/subtests/README.rst new file mode 100644 index 00000000..79b0b534 --- /dev/null +++ b/tests/subtests/README.rst @@ -0,0 +1,78 @@ +Testing ``pytest-mpl`` using the ``tests/subtests`` +************************************************** + +``pytest-mpl`` can output JSON summaries (``--mpl-generate-summary=json``) which contain lots of machine readable information relating to the internal state of the plugin while it was run. +This test module (``test_subtest.py``) runs the test file ``subtest.py`` multiple times with different combinations of +``pytest-mpl`` arguments. +After each test, it compares the outputted JSON summary to a "baseline" JSON summary for that specific combination of arguments (``summaries/*.json``). + +These tests are very sensitive to deviations in the documented behaviour of the ``pytest-mpl`` configuration arguments. +And the exact behaviour of each comparison mode (such as images, hashes or both) can be asserted. +If the format of the hash libraries or the baseline summaries are changed, ``test_subtest.py`` and ``helpers.py`` may require modifications. + +By using various helper functions defined in ``helpers.py``, the baseline summaries are not specific to the MPL/FreeType versions. +This is implemented through regex in the log output, and by replacing baseline hashes with hashes in a version specific baseline hash library ``hashes/*.json`` and replacing result hashes with hashes in a version specific "baseline" result hash library ``result_hashes/*.json``. +The baseline images used for the image comparison tests are included in ``baseline/*.png``. + +Generating baseline data +======================== + +The baseline image, hashes and summaries are generated automatically without the need to manually set the data which should fail the tests which are expected to fail. +All of the test names should follow the existing convention (e.g., ``test_hdiff_imatch``), including one flag from both of the categories below. +This ensures the script generates the correct baseline data which should achieve the expected test result. +Full details on how the baselines are modified for each case are given below: + +**Hash comparison status flags:** + +:``hmatch``: Hash comparison must pass, so same hash in baseline and result hash libraries. + +:``hdiff``: Hash comparison must fail, so baseline hash is set to the same as the result hash except the first four characters are changed to ``d1ff``. + +:``hmissing``: Baseline hash must be missing, so baseline hash is deleted from the baseline hash library but not the result hash library. + +**Image comparison status flags:** + +:``imatch``: Image comparison must pass, so correct image is included in the baseline directory. + +:``idiff``: Image comparison must fail, so baseline image is edited to include a red cross such that the RMS is greater than the tolerance. + +:``idiffshape``: Image comparison must fail due to a different shape, so baseline image is resized to be half the generated width and height before saving. + +:``imissing``: Baseline image must be missing, so baseline image is deleted from the baseline directory. + +Generating for each version of matplotlib +----------------------------------------- + +Baseline data should be generated for each version of matplotlib separately. +For each version of matplotlib (defined within the tox environments in ``tox.ini``), follow the three steps in this section. (Only update one version at a time.) + +So the baseline data can be recreated easily, do not make any manual adjustments to the generated files. +Instead, updates the functions which generate the baseline data. + +To generate the baseline hashes, result hashes and baseline images run the following command. +If you are generating for a new version of matplotlib, create empty files such as ``hashes/mpl39_ft261.json`` and ``result_hashes/mpl39_ft261.json`` so it knows you require hashes for this version. + +:: + + MPL_UPDATE_BASELINE=1 tox -e + +Make sure this command runs without any failures or errors. +Inspect the generated data to ensure it looks correct, and ``git add``. +Then generate baseline summaries for the baseline hashes and images by running: + +:: + + MPL_UPDATE_SUMMARY=1 tox -e + +This will update/create baseline summaries in the ``summaries`` directory. +Make sure this command runs without any failures or errors. +It is very important that you check every change made to the baseline summaries as these summaries define how the plugin should be running internally for each test, for each plugin configuration. +If the summaries are correct, ``git add``. + +Now run tox normally to ensure the tests pass: + +:: + + tox -e + +If the tests pass, ``git commit`` the updated baselines. diff --git a/tests/subtests/baseline/test_hdiff_idiff.png b/tests/subtests/baseline/test_hdiff_idiff.png index b377b071..d4c06c59 100644 Binary files a/tests/subtests/baseline/test_hdiff_idiff.png and b/tests/subtests/baseline/test_hdiff_idiff.png differ diff --git a/tests/subtests/baseline/test_hdiff_idiff_tolerance.png b/tests/subtests/baseline/test_hdiff_idiff_tolerance.png index 516801e0..c956e3bd 100644 Binary files a/tests/subtests/baseline/test_hdiff_idiff_tolerance.png and b/tests/subtests/baseline/test_hdiff_idiff_tolerance.png differ diff --git a/tests/subtests/baseline/test_hdiff_idiffshape.png b/tests/subtests/baseline/test_hdiff_idiffshape.png index 2bc3cbce..7a9dc08e 100644 Binary files a/tests/subtests/baseline/test_hdiff_idiffshape.png and b/tests/subtests/baseline/test_hdiff_idiffshape.png differ diff --git a/tests/subtests/baseline/test_hdiff_imatch.png b/tests/subtests/baseline/test_hdiff_imatch.png index c1a2a3ef..a9be91e8 100644 Binary files a/tests/subtests/baseline/test_hdiff_imatch.png and b/tests/subtests/baseline/test_hdiff_imatch.png differ diff --git a/tests/subtests/baseline/test_hdiff_imatch_removetext.png b/tests/subtests/baseline/test_hdiff_imatch_removetext.png index 6d59b1d4..f3b90fc3 100644 Binary files a/tests/subtests/baseline/test_hdiff_imatch_removetext.png and b/tests/subtests/baseline/test_hdiff_imatch_removetext.png differ diff --git a/tests/subtests/baseline/test_hdiff_imatch_savefig.png b/tests/subtests/baseline/test_hdiff_imatch_savefig.png index c791a4b1..641d82f1 100644 Binary files a/tests/subtests/baseline/test_hdiff_imatch_savefig.png and b/tests/subtests/baseline/test_hdiff_imatch_savefig.png differ diff --git a/tests/subtests/baseline/test_hdiff_imatch_style.png b/tests/subtests/baseline/test_hdiff_imatch_style.png index 49f4adee..e0a137cb 100644 Binary files a/tests/subtests/baseline/test_hdiff_imatch_style.png and b/tests/subtests/baseline/test_hdiff_imatch_style.png differ diff --git a/tests/subtests/baseline/test_hdiff_imatch_tolerance.png b/tests/subtests/baseline/test_hdiff_imatch_tolerance.png index 516801e0..9cab644a 100644 Binary files a/tests/subtests/baseline/test_hdiff_imatch_tolerance.png and b/tests/subtests/baseline/test_hdiff_imatch_tolerance.png differ diff --git a/tests/subtests/baseline/test_hmatch_idiff.png b/tests/subtests/baseline/test_hmatch_idiff.png index 028c9be4..df51ee89 100644 Binary files a/tests/subtests/baseline/test_hmatch_idiff.png and b/tests/subtests/baseline/test_hmatch_idiff.png differ diff --git a/tests/subtests/baseline/test_hmatch_idiffshape.png b/tests/subtests/baseline/test_hmatch_idiffshape.png index 82b5e0ae..988c46c5 100644 Binary files a/tests/subtests/baseline/test_hmatch_idiffshape.png and b/tests/subtests/baseline/test_hmatch_idiffshape.png differ diff --git a/tests/subtests/baseline/test_hmatch_imatch.png b/tests/subtests/baseline/test_hmatch_imatch.png index 338c53ae..09856c9a 100644 Binary files a/tests/subtests/baseline/test_hmatch_imatch.png and b/tests/subtests/baseline/test_hmatch_imatch.png differ diff --git a/tests/subtests/baseline/test_hmissing_idiff.png b/tests/subtests/baseline/test_hmissing_idiff.png index 15ea61d1..05ed7ee8 100644 Binary files a/tests/subtests/baseline/test_hmissing_idiff.png and b/tests/subtests/baseline/test_hmissing_idiff.png differ diff --git a/tests/subtests/baseline/test_hmissing_idiffshape.png b/tests/subtests/baseline/test_hmissing_idiffshape.png index 0ca56a91..f386979f 100644 Binary files a/tests/subtests/baseline/test_hmissing_idiffshape.png and b/tests/subtests/baseline/test_hmissing_idiffshape.png differ diff --git a/tests/subtests/baseline/test_hmissing_imatch.png b/tests/subtests/baseline/test_hmissing_imatch.png index 03483cbc..bf7741a9 100644 Binary files a/tests/subtests/baseline/test_hmissing_imatch.png and b/tests/subtests/baseline/test_hmissing_imatch.png differ diff --git a/tests/subtests/hashes/mpl33_ft261.json b/tests/subtests/hashes/mpl33_ft261.json index 630e40b6..5bec9574 100644 --- a/tests/subtests/hashes/mpl33_ft261.json +++ b/tests/subtests/hashes/mpl33_ft261.json @@ -1,15 +1,15 @@ { - "subtests.subtest.test_hmatch_imatch": "42c391b37022e2c4edb53f5fd988e94f421905b40cea1544e62ffb3c049292a8", - "subtests.subtest.test_hmatch_idiff": "c14ba098dbda0988e35be5724ffb15b8e666253a4b37dec6a21203607c17473d", - "subtests.subtest.test_hmatch_idiffshape": "d23fa57068c6888307575623e5bdbe5e577d935910fee8d41deab426677acecb", - "subtests.subtest.test_hmatch_imissing": "6c07931bac1a926c88bea5d07c40c8c1ce30648712e3fc963028193863e3ae65", - "subtests.subtest.test_hdiff_imatch": "d1ff383721a0c395c856302be7de8a8138a2693651425dc181ede262860aef7b", - "subtests.subtest.test_hdiff_idiff": "d1fff55ace5ef7e45dcd9913b54e0d9970028cae59666e937ccb3586d0f76e9a", - "subtests.subtest.test_hdiff_idiffshape": "d1ff76e20951e78fd3dedfff6a6f8f2eab4c569860d1a0da7867114cdcdf7c2c", - "subtests.subtest.test_hdiff_imissing": "d1ff35845c5887c034230e02aa4b60e053c779c693867e4803e1d72dde9240f7", - "subtests.subtest.test_hdiff_imatch_tolerance": "d1ff6912989a4b47ea910b04edfa58cf5d756d60825ea52ad59dcde8e03d4d8b", - "subtests.subtest.test_hdiff_idiff_tolerance": "d1ff6912989a4b47ea910b04edfa58cf5d756d60825ea52ad59dcde8e03d4d8b", - "subtests.subtest.test_hdiff_imatch_savefig": "d1ff5dc3f9e8acda06b0097ee893819be62ca9adbbcca7d2300602f079a93b92", - "subtests.subtest.test_hdiff_imatch_style": "d1ff7692747ec72d3c8669cdb3d66468426b83ecf49a214cd918b8f5a0752a1f", - "subtests.subtest.test_hdiff_imatch_removetext": "d1ff0d60d794a7cdfec884463c4fe14612ab1fe7fda4bc7fa702c8f1615e1539" + "subtests.subtest.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", + "subtests.subtest.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", + "subtests.subtest.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", + "subtests.subtest.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", + "subtests.subtest.test_hdiff_imatch": "d1ff5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", + "subtests.subtest.test_hdiff_idiff": "d1ff014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", + "subtests.subtest.test_hdiff_idiffshape": "d1ff3bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", + "subtests.subtest.test_hdiff_imissing": "d1ffd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", + "subtests.subtest.test_hdiff_imatch_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", + "subtests.subtest.test_hdiff_idiff_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", + "subtests.subtest.test_hdiff_imatch_savefig": "d1ff14c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", + "subtests.subtest.test_hdiff_imatch_style": "d1ffd00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", + "subtests.subtest.test_hdiff_imatch_removetext": "d1ffd7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a" } diff --git a/tests/subtests/hashes/mpl34_ft261.json b/tests/subtests/hashes/mpl34_ft261.json index c58c78d3..5bec9574 100644 --- a/tests/subtests/hashes/mpl34_ft261.json +++ b/tests/subtests/hashes/mpl34_ft261.json @@ -1,15 +1,15 @@ { - "subtests.subtest.test_hmatch_imatch": "573f4c1482192b7b15bbe4f2bd370ae3b5ab40c9afa441543b87e15a71e9f672", - "subtests.subtest.test_hmatch_idiff": "8b5c00365e6f784d5c8947091f09a92fd7d222e790431f297b4848f173e64857", - "subtests.subtest.test_hmatch_idiffshape": "2ee75301c4de2dcb9f839b278c6371be2e751de40b131213e375d4dcc5542382", - "subtests.subtest.test_hmatch_imissing": "fd069e642e3b154c24077a4996b545e1c4dbffdbed34ea5ad34c7b36873af68f", - "subtests.subtest.test_hdiff_imatch": "d1ffdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1", - "subtests.subtest.test_hdiff_idiff": "d1ff61bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43", - "subtests.subtest.test_hdiff_idiffshape": "d1ffae8ab2b65de3fa297be17ce973ff871e703c9550679e9566179dd785f6eb", - "subtests.subtest.test_hdiff_imissing": "d1ff63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e", - "subtests.subtest.test_hdiff_imatch_tolerance": "d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96", - "subtests.subtest.test_hdiff_idiff_tolerance": "d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96", - "subtests.subtest.test_hdiff_imatch_savefig": "d1ffc2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568", - "subtests.subtest.test_hdiff_imatch_style": "d1ffd1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7", - "subtests.subtest.test_hdiff_imatch_removetext": "d1fff83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e" + "subtests.subtest.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", + "subtests.subtest.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", + "subtests.subtest.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", + "subtests.subtest.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", + "subtests.subtest.test_hdiff_imatch": "d1ff5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", + "subtests.subtest.test_hdiff_idiff": "d1ff014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", + "subtests.subtest.test_hdiff_idiffshape": "d1ff3bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", + "subtests.subtest.test_hdiff_imissing": "d1ffd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", + "subtests.subtest.test_hdiff_imatch_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", + "subtests.subtest.test_hdiff_idiff_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", + "subtests.subtest.test_hdiff_imatch_savefig": "d1ff14c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", + "subtests.subtest.test_hdiff_imatch_style": "d1ffd00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", + "subtests.subtest.test_hdiff_imatch_removetext": "d1ffd7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a" } diff --git a/tests/subtests/hashes/mpl35_ft261.json b/tests/subtests/hashes/mpl35_ft261.json index 0c9354fe..5bec9574 100644 --- a/tests/subtests/hashes/mpl35_ft261.json +++ b/tests/subtests/hashes/mpl35_ft261.json @@ -1,15 +1,15 @@ { - "subtests.subtest.test_hmatch_imatch": "4a47c9b7920779cc83eabe2bbb64b9c40745d9d8abfa57857f93a5d8f12a5a03", - "subtests.subtest.test_hmatch_idiff": "2b48790b0a2cee4b41cdb9820336acaf229ba811ae21c6a92b4b92838843adfa", - "subtests.subtest.test_hmatch_idiffshape": "e3fed4ad2d22aff2cd771c5503dcb30c6161b21d154430ededa5faa1ec54366e", - "subtests.subtest.test_hmatch_imissing": "e937fa1997d088c904ca35b1ab542e2285ea47b84df976490380f9c5f5b5f8ae", - "subtests.subtest.test_hdiff_imatch": "d1ff8f315d44b06de8f45d937af46a67bd1389edd6e4cde32f9feb4b7472284f", - "subtests.subtest.test_hdiff_idiff": "d1ff21206ef454a25417e3ba0bd3235c84518cb202c2d1fa7afcfdfcde5fdcde", - "subtests.subtest.test_hdiff_idiffshape": "d1ff745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580", - "subtests.subtest.test_hdiff_imissing": "d1ff11cfa34db3a5819ac4127704e86acf27d24d1ea2410718853d3d7e1d6ae0", - "subtests.subtest.test_hdiff_imatch_tolerance": "d1ff3273d63a2a26a27e788ff0f090e86c9df7f9f191b7c566321c57de8266d6", - "subtests.subtest.test_hdiff_idiff_tolerance": "d1ff3273d63a2a26a27e788ff0f090e86c9df7f9f191b7c566321c57de8266d6", - "subtests.subtest.test_hdiff_imatch_savefig": "d1ff803a4b4026d8c6dc0ab950228793ea255cd9b6c629c39db9e6315a9af6bc", - "subtests.subtest.test_hdiff_imatch_style": "d1ffde36c2bad7dca131e4cbbfe229f882b5beec62750fb7da29314fd6a1ff13", - "subtests.subtest.test_hdiff_imatch_removetext": "d1ff6cf613c6836c1b1202abaae69cf65bc2232a8e31ab1040454bedc8e31e7a" + "subtests.subtest.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", + "subtests.subtest.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", + "subtests.subtest.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", + "subtests.subtest.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", + "subtests.subtest.test_hdiff_imatch": "d1ff5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", + "subtests.subtest.test_hdiff_idiff": "d1ff014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", + "subtests.subtest.test_hdiff_idiffshape": "d1ff3bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", + "subtests.subtest.test_hdiff_imissing": "d1ffd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", + "subtests.subtest.test_hdiff_imatch_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", + "subtests.subtest.test_hdiff_idiff_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", + "subtests.subtest.test_hdiff_imatch_savefig": "d1ff14c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", + "subtests.subtest.test_hdiff_imatch_style": "d1ffd00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", + "subtests.subtest.test_hdiff_imatch_removetext": "d1ffd7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a" } diff --git a/tests/subtests/helpers.py b/tests/subtests/helpers.py index 0f345f03..87a2f5b6 100644 --- a/tests/subtests/helpers.py +++ b/tests/subtests/helpers.py @@ -1,8 +1,12 @@ +import os import re import json from pathlib import Path -__all__ = ['diff_summary', 'assert_existence', 'patch_summary', 'apply_regex'] +from PIL import Image, ImageDraw + +__all__ = ['diff_summary', 'assert_existence', 'patch_summary', 'apply_regex', + 'remove_specific_hashes', 'transform_hashes', 'transform_images'] class MatchError(Exception): @@ -255,3 +259,86 @@ def apply_regex(file, regex_paths, regex_strs): with open(file, 'w') as f: json.dump(summary, f, indent=2) + + +def remove_specific_hashes(summary_file): + """Replace all hashes in a summary file with placeholder values. + + This is done because the actual hashes used for testing are taken from + separate files for each specific matplotlib version. + """ + + baseline_placeholder = "###_BASELINE_HASH_###" + result_placeholder = "###_RESULT_HASH_###" + + with open(summary_file, "r") as f: + summary = json.load(f) + + for test in summary.keys(): + + # Get actual hashes + baseline = summary[test]["baseline_hash"] + result = summary[test]["result_hash"] + + # Replace with placeholders (if summary has hashes) + if baseline is not None: + summary[test]["baseline_hash"] = baseline_placeholder + summary[test]["status_msg"] = \ + summary[test]["status_msg"].replace(baseline, baseline_placeholder) + if result is not None: + summary[test]["result_hash"] = result_placeholder + summary[test]["status_msg"] = \ + summary[test]["status_msg"].replace(result, result_placeholder) + + with open(summary_file, "w") as f: + json.dump(summary, f, indent=2) + + +def transform_hashes(hash_file): + """Make hash comparison tests fail correctly. + + Makes hashes of tests *hdiff* in hash_file fail hash comparison + and remove *hmissing* hashes that should be missing. + """ + + with open(hash_file, "r") as f: + hashes = json.load(f) + + for test in list(hashes.keys()): + h = hashes[test] + if "hdiff" in test and h is not None: + # Replace first four letters with d1ff to force mismatch + hashes[test] = "d1ff" + h[4:] + if "hmissing" in test and h is not None: + # Remove hashes that should be missing + del hashes[test] + + with open(hash_file, "w") as f: + json.dump(hashes, f, indent=2) + + +def transform_images(baseline_path): + """Make image comparison tests fail correctly. + + Makes images of tests *idiff* under baseline_path fail image comparison + and deletes images for *imissing* tests. + """ + + # Delete imissing files + for file in baseline_path.glob("**/*imissing*.png"): + file.unlink() + + # Add red cross to idiff files + for file in baseline_path.glob("**/*idiff*.png"): + with Image.open(file) as im: + draw = ImageDraw.Draw(im) + draw.line((0, 0) + im.size, "#f00", 3) + draw.line((0, im.size[1], im.size[0], 0), "#f00", 3) + im.save(file) + + # Resize idiffshape files + for file in baseline_path.glob("**/*idiffshape*.png"): + with Image.open(file) as im: + (width, height) = (im.width // 2, im.height // 2) + im_resized = im.resize((width, height)) + im_resized.save(file) diff --git a/tests/subtests/result_hashes/mpl33_ft261.json b/tests/subtests/result_hashes/mpl33_ft261.json index 1d32aed3..6079e0fe 100644 --- a/tests/subtests/result_hashes/mpl33_ft261.json +++ b/tests/subtests/result_hashes/mpl33_ft261.json @@ -1,19 +1,19 @@ { - "subtests.subtest.test_hmatch_imatch": "42c391b37022e2c4edb53f5fd988e94f421905b40cea1544e62ffb3c049292a8", - "subtests.subtest.test_hmatch_idiff": "c14ba098dbda0988e35be5724ffb15b8e666253a4b37dec6a21203607c17473d", - "subtests.subtest.test_hmatch_idiffshape": "d23fa57068c6888307575623e5bdbe5e577d935910fee8d41deab426677acecb", - "subtests.subtest.test_hmatch_imissing": "6c07931bac1a926c88bea5d07c40c8c1ce30648712e3fc963028193863e3ae65", - "subtests.subtest.test_hdiff_imatch": "b48a383721a0c395c856302be7de8a8138a2693651425dc181ede262860aef7b", - "subtests.subtest.test_hdiff_idiff": "44edf55ace5ef7e45dcd9913b54e0d9970028cae59666e937ccb3586d0f76e9a", - "subtests.subtest.test_hdiff_idiffshape": "1c6176e20951e78fd3dedfff6a6f8f2eab4c569860d1a0da7867114cdcdf7c2c", - "subtests.subtest.test_hdiff_imissing": "042235845c5887c034230e02aa4b60e053c779c693867e4803e1d72dde9240f7", - "subtests.subtest.test_hmissing_imatch": "d87e9aa72d2cd0ccd9959ec7af2dc00ab86e2fe8f06a6c54a017cde62f7e5c1f", - "subtests.subtest.test_hmissing_idiff": "00b074ef61b5061b8ec50dbe32b3214ffd21c9489ae212671558f338ad792e5f", - "subtests.subtest.test_hmissing_idiffshape": "3abf54dbc88ce374b40d677597685fc83b4dc05c9d9a50fa1580f348d71fb99d", - "subtests.subtest.test_hmissing_imissing": "3e5c4a4386e32133083c36ca0c95f5e38be904ed238e49ab1e06edd35603abfc", - "subtests.subtest.test_hdiff_imatch_tolerance": "04eb6912989a4b47ea910b04edfa58cf5d756d60825ea52ad59dcde8e03d4d8b", - "subtests.subtest.test_hdiff_idiff_tolerance": "04eb6912989a4b47ea910b04edfa58cf5d756d60825ea52ad59dcde8e03d4d8b", - "subtests.subtest.test_hdiff_imatch_savefig": "c47d5dc3f9e8acda06b0097ee893819be62ca9adbbcca7d2300602f079a93b92", - "subtests.subtest.test_hdiff_imatch_style": "8fa57692747ec72d3c8669cdb3d66468426b83ecf49a214cd918b8f5a0752a1f", - "subtests.subtest.test_hdiff_imatch_removetext": "f9fc0d60d794a7cdfec884463c4fe14612ab1fe7fda4bc7fa702c8f1615e1539" + "subtests.subtest.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", + "subtests.subtest.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", + "subtests.subtest.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", + "subtests.subtest.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", + "subtests.subtest.test_hdiff_imatch": "b92c5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", + "subtests.subtest.test_hdiff_idiff": "567f014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", + "subtests.subtest.test_hdiff_idiffshape": "b6673bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", + "subtests.subtest.test_hdiff_imissing": "e37bd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", + "subtests.subtest.test_hmissing_imatch": "592d12cc2d5749a6607bbf98d715b95c06a2af6572a7e298bcae349648b9997e", + "subtests.subtest.test_hmissing_idiff": "9e98dbd2027525c776212daa061180b4fc40ad12dfc2cdfe4b86694ede14e0c3", + "subtests.subtest.test_hmissing_idiffshape": "5534324f9da5c1c104c3ef3435dc6fa9792c0d0d8b762fad5d7f81abd91fbb89", + "subtests.subtest.test_hmissing_imissing": "2d15274f0e9b44f1c16e6b237710cd36a3de5c5b7596ef0e65e7a33ce4624cf4", + "subtests.subtest.test_hdiff_imatch_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", + "subtests.subtest.test_hdiff_idiff_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", + "subtests.subtest.test_hdiff_imatch_savefig": "0a0514c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", + "subtests.subtest.test_hdiff_imatch_style": "588ad00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", + "subtests.subtest.test_hdiff_imatch_removetext": "a78ad7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a" } diff --git a/tests/subtests/result_hashes/mpl34_ft261.json b/tests/subtests/result_hashes/mpl34_ft261.json index 3511556b..6079e0fe 100644 --- a/tests/subtests/result_hashes/mpl34_ft261.json +++ b/tests/subtests/result_hashes/mpl34_ft261.json @@ -1,19 +1,19 @@ { - "subtests.subtest.test_hmatch_imatch": "573f4c1482192b7b15bbe4f2bd370ae3b5ab40c9afa441543b87e15a71e9f672", - "subtests.subtest.test_hmatch_idiff": "8b5c00365e6f784d5c8947091f09a92fd7d222e790431f297b4848f173e64857", - "subtests.subtest.test_hmatch_idiffshape": "2ee75301c4de2dcb9f839b278c6371be2e751de40b131213e375d4dcc5542382", - "subtests.subtest.test_hmatch_imissing": "fd069e642e3b154c24077a4996b545e1c4dbffdbed34ea5ad34c7b36873af68f", - "subtests.subtest.test_hdiff_imatch": "6e2fdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1", - "subtests.subtest.test_hdiff_idiff": "443361bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43", - "subtests.subtest.test_hdiff_idiffshape": "3379ae8ab2b65de3fa297be17ce973ff871e703c9550679e9566179dd785f6eb", - "subtests.subtest.test_hdiff_imissing": "301e63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e", - "subtests.subtest.test_hmissing_imatch": "eabd8a2e22afd88682990bfb8e4a0700a942fe68e5114e8da4ab6bd93c47b824", - "subtests.subtest.test_hmissing_idiff": "e69570c4a70b2cc88ddee0f0a82312cae4f394b7f62e5760245feda1364c03ab", - "subtests.subtest.test_hmissing_idiffshape": "fa566a1620537f5c10aa8bcbebed55065f13fa9f8e8e82d7f7c67f7b39edd552", - "subtests.subtest.test_hmissing_imissing": "5c8a9c7412e4e098f6f2683ee247c08bd50805a93df4d4b6d8fccf3579b4c56b", - "subtests.subtest.test_hdiff_imatch_tolerance": "aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96", - "subtests.subtest.test_hdiff_idiff_tolerance": "aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96", - "subtests.subtest.test_hdiff_imatch_savefig": "5dc1c2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568", - "subtests.subtest.test_hdiff_imatch_style": "185ed1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7", - "subtests.subtest.test_hdiff_imatch_removetext": "be5af83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e" + "subtests.subtest.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", + "subtests.subtest.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", + "subtests.subtest.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", + "subtests.subtest.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", + "subtests.subtest.test_hdiff_imatch": "b92c5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", + "subtests.subtest.test_hdiff_idiff": "567f014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", + "subtests.subtest.test_hdiff_idiffshape": "b6673bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", + "subtests.subtest.test_hdiff_imissing": "e37bd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", + "subtests.subtest.test_hmissing_imatch": "592d12cc2d5749a6607bbf98d715b95c06a2af6572a7e298bcae349648b9997e", + "subtests.subtest.test_hmissing_idiff": "9e98dbd2027525c776212daa061180b4fc40ad12dfc2cdfe4b86694ede14e0c3", + "subtests.subtest.test_hmissing_idiffshape": "5534324f9da5c1c104c3ef3435dc6fa9792c0d0d8b762fad5d7f81abd91fbb89", + "subtests.subtest.test_hmissing_imissing": "2d15274f0e9b44f1c16e6b237710cd36a3de5c5b7596ef0e65e7a33ce4624cf4", + "subtests.subtest.test_hdiff_imatch_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", + "subtests.subtest.test_hdiff_idiff_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", + "subtests.subtest.test_hdiff_imatch_savefig": "0a0514c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", + "subtests.subtest.test_hdiff_imatch_style": "588ad00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", + "subtests.subtest.test_hdiff_imatch_removetext": "a78ad7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a" } diff --git a/tests/subtests/result_hashes/mpl35_ft261.json b/tests/subtests/result_hashes/mpl35_ft261.json index 4bbb2cb1..6079e0fe 100644 --- a/tests/subtests/result_hashes/mpl35_ft261.json +++ b/tests/subtests/result_hashes/mpl35_ft261.json @@ -1,19 +1,19 @@ { - "subtests.subtest.test_hmatch_imatch": "4a47c9b7920779cc83eabe2bbb64b9c40745d9d8abfa57857f93a5d8f12a5a03", - "subtests.subtest.test_hmatch_idiff": "2b48790b0a2cee4b41cdb9820336acaf229ba811ae21c6a92b4b92838843adfa", - "subtests.subtest.test_hmatch_idiffshape": "e3fed4ad2d22aff2cd771c5503dcb30c6161b21d154430ededa5faa1ec54366e", - "subtests.subtest.test_hmatch_imissing": "e937fa1997d088c904ca35b1ab542e2285ea47b84df976490380f9c5f5b5f8ae", - "subtests.subtest.test_hdiff_imatch": "2cae8f315d44b06de8f45d937af46a67bd1389edd6e4cde32f9feb4b7472284f", - "subtests.subtest.test_hdiff_idiff": "927521206ef454a25417e3ba0bd3235c84518cb202c2d1fa7afcfdfcde5fdcde", - "subtests.subtest.test_hdiff_idiffshape": "5d37745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580", - "subtests.subtest.test_hdiff_imissing": "afc411cfa34db3a5819ac4127704e86acf27d24d1ea2410718853d3d7e1d6ae0", - "subtests.subtest.test_hmissing_imatch": "7ee8370efdc4b767634d12355657ca4f2460176670c07b31f3fb72cea0e79856", - "subtests.subtest.test_hmissing_idiff": "4eeda1d349f4b0f26df97df41ba5410dce2b1c7ed520062d58f3c5f0e3790ebd", - "subtests.subtest.test_hmissing_idiffshape": "204d43b643538cafafa2d0fb7dafac9cf7009dbb421d4b32c71da2e400ceb59d", - "subtests.subtest.test_hmissing_imissing": "5101e60ac100cf2c2f418a0a6a382aae0060339e76718730344f539b61f7dc7e", - "subtests.subtest.test_hdiff_imatch_tolerance": "510b3273d63a2a26a27e788ff0f090e86c9df7f9f191b7c566321c57de8266d6", - "subtests.subtest.test_hdiff_idiff_tolerance": "510b3273d63a2a26a27e788ff0f090e86c9df7f9f191b7c566321c57de8266d6", - "subtests.subtest.test_hdiff_imatch_savefig": "8864803a4b4026d8c6dc0ab950228793ea255cd9b6c629c39db9e6315a9af6bc", - "subtests.subtest.test_hdiff_imatch_style": "e3c8de36c2bad7dca131e4cbbfe229f882b5beec62750fb7da29314fd6a1ff13", - "subtests.subtest.test_hdiff_imatch_removetext": "e4c06cf613c6836c1b1202abaae69cf65bc2232a8e31ab1040454bedc8e31e7a" + "subtests.subtest.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", + "subtests.subtest.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", + "subtests.subtest.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", + "subtests.subtest.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", + "subtests.subtest.test_hdiff_imatch": "b92c5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", + "subtests.subtest.test_hdiff_idiff": "567f014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", + "subtests.subtest.test_hdiff_idiffshape": "b6673bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", + "subtests.subtest.test_hdiff_imissing": "e37bd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", + "subtests.subtest.test_hmissing_imatch": "592d12cc2d5749a6607bbf98d715b95c06a2af6572a7e298bcae349648b9997e", + "subtests.subtest.test_hmissing_idiff": "9e98dbd2027525c776212daa061180b4fc40ad12dfc2cdfe4b86694ede14e0c3", + "subtests.subtest.test_hmissing_idiffshape": "5534324f9da5c1c104c3ef3435dc6fa9792c0d0d8b762fad5d7f81abd91fbb89", + "subtests.subtest.test_hmissing_imissing": "2d15274f0e9b44f1c16e6b237710cd36a3de5c5b7596ef0e65e7a33ce4624cf4", + "subtests.subtest.test_hdiff_imatch_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", + "subtests.subtest.test_hdiff_idiff_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", + "subtests.subtest.test_hdiff_imatch_savefig": "0a0514c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", + "subtests.subtest.test_hdiff_imatch_style": "588ad00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", + "subtests.subtest.test_hdiff_imatch_removetext": "a78ad7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a" } diff --git a/tests/subtests/subtest.py b/tests/subtests/subtest.py index 9791ebd2..c02abea6 100644 --- a/tests/subtests/subtest.py +++ b/tests/subtests/subtest.py @@ -15,66 +15,73 @@ def plot(line, **kwargs): # hash match -@pytest.mark.mpl_image_compare() +@pytest.mark.image +@pytest.mark.hash +@pytest.mark.mpl_image_compare(savefig_kwargs={'metadata': {'Software': None}}) def test_hmatch_imatch(): return plot([1, 2, 3, 4]) -@pytest.mark.mpl_image_compare() +@pytest.mark.image +@pytest.mark.mpl_image_compare(savefig_kwargs={'metadata': {'Software': None}}) def test_hmatch_idiff(): return plot([1, 3, 2, 4]) -@pytest.mark.mpl_image_compare() +@pytest.mark.image +@pytest.mark.mpl_image_compare(savefig_kwargs={'metadata': {'Software': None}}) def test_hmatch_idiffshape(): return plot([4, 2, 3, 1, 2]) -@pytest.mark.mpl_image_compare() +@pytest.mark.image +@pytest.mark.mpl_image_compare(savefig_kwargs={'metadata': {'Software': None}}) def test_hmatch_imissing(): return plot([4, 3, 2, 1]) # hash diff -@pytest.mark.mpl_image_compare() +@pytest.mark.hash +@pytest.mark.mpl_image_compare(savefig_kwargs={'metadata': {'Software': None}}) def test_hdiff_imatch(): return plot([1, 4, 2, 3]) -@pytest.mark.mpl_image_compare() +@pytest.mark.mpl_image_compare(savefig_kwargs={'metadata': {'Software': None}}) def test_hdiff_idiff(): return plot([1, 2, 4, 3]) -@pytest.mark.mpl_image_compare() +@pytest.mark.mpl_image_compare(savefig_kwargs={'metadata': {'Software': None}}) def test_hdiff_idiffshape(): return plot([4, 2, 3, 1, 3]) -@pytest.mark.mpl_image_compare() +@pytest.mark.mpl_image_compare(savefig_kwargs={'metadata': {'Software': None}}) def test_hdiff_imissing(): return plot([3, 2, 4, 1]) # hash missing -@pytest.mark.mpl_image_compare() +@pytest.mark.hash +@pytest.mark.mpl_image_compare(savefig_kwargs={'metadata': {'Software': None}}) def test_hmissing_imatch(): return plot([1, 3, 4, 2]) -@pytest.mark.mpl_image_compare() +@pytest.mark.mpl_image_compare(savefig_kwargs={'metadata': {'Software': None}}) def test_hmissing_idiff(): return plot([1, 4, 3, 2]) -@pytest.mark.mpl_image_compare() +@pytest.mark.mpl_image_compare(savefig_kwargs={'metadata': {'Software': None}}) def test_hmissing_idiffshape(): return plot([4, 2, 3, 1, 4]) -@pytest.mark.mpl_image_compare() +@pytest.mark.mpl_image_compare(savefig_kwargs={'metadata': {'Software': None}}) def test_hmissing_imissing(): return plot([2, 4, 3, 1]) @@ -82,19 +89,25 @@ def test_hmissing_imissing(): # ### Specialized tests # Tolerance: high to force image match -@pytest.mark.mpl_image_compare(tolerance=200) +@pytest.mark.image +@pytest.mark.hash +@pytest.mark.mpl_image_compare(tolerance=200, savefig_kwargs={'metadata': {'Software': None}}) def test_hdiff_imatch_tolerance(): return plot([1, 2, 3, 4], linestyle='--') # Tolerance: non-default to verify option recorded in JSON -@pytest.mark.mpl_image_compare(tolerance=3) +@pytest.mark.image +@pytest.mark.hash +@pytest.mark.mpl_image_compare(tolerance=3, savefig_kwargs={'metadata': {'Software': None}}) def test_hdiff_idiff_tolerance(): return plot([1, 2, 3, 4], linestyle='--') # Savefig kwargs -@pytest.mark.mpl_image_compare(savefig_kwargs={'facecolor': 'r'}) +@pytest.mark.image +@pytest.mark.hash +@pytest.mark.mpl_image_compare(savefig_kwargs={'facecolor': 'r', 'metadata': {'Software': None}}) def test_hdiff_imatch_savefig(): return plot([1, 2, 3, 4]) @@ -120,12 +133,16 @@ def test_hdiff_imatch_savefig(): # Different style -@pytest.mark.mpl_image_compare(style='fivethirtyeight') +@pytest.mark.image +@pytest.mark.hash +@pytest.mark.mpl_image_compare(style='fivethirtyeight', savefig_kwargs={'metadata': {'Software': None}}) def test_hdiff_imatch_style(): return plot([4, 2, 1, 4]) # Remove text -@pytest.mark.mpl_image_compare(remove_text=True) +@pytest.mark.image +@pytest.mark.hash +@pytest.mark.mpl_image_compare(remove_text=True, savefig_kwargs={'metadata': {'Software': None}}) def test_hdiff_imatch_removetext(): return plot([4, 2, 1, 4]) diff --git a/tests/subtests/summaries/test_default.json b/tests/subtests/summaries/test_default.json index f5e295fa..61efc2dd 100644 --- a/tests/subtests/summaries/test_default.json +++ b/tests/subtests/summaries/test_default.json @@ -16,10 +16,10 @@ "status": "failed", "image_status": "diff", "hash_status": null, - "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 11\\.1[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", + "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 24\\.6[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "baseline_image": "subtests.subtest.test_hmatch_idiff/baseline.png", "diff_image": "subtests.subtest.test_hmatch_idiff/result-failed-diff.png", - "rms": 11.100353848213828, + "rms": 24.618234716477044, "tolerance": 2, "result_image": "subtests.subtest.test_hmatch_idiff/result.png", "baseline_hash": null, @@ -29,7 +29,7 @@ "status": "failed", "image_status": "diff", "hash_status": null, - "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(400, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", + "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(300, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", "baseline_image": "subtests.subtest.test_hmatch_idiffshape/baseline.png", "diff_image": null, "rms": null, @@ -68,10 +68,10 @@ "status": "failed", "image_status": "diff", "hash_status": null, - "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 11\\.1[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", + "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 24\\.6[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "baseline_image": "subtests.subtest.test_hdiff_idiff/baseline.png", "diff_image": "subtests.subtest.test_hdiff_idiff/result-failed-diff.png", - "rms": 11.182677079602481, + "rms": 24.620185259705547, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_idiff/result.png", "baseline_hash": null, @@ -81,7 +81,7 @@ "status": "failed", "image_status": "diff", "hash_status": null, - "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(400, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", + "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(300, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", "baseline_image": "subtests.subtest.test_hdiff_idiffshape/baseline.png", "diff_image": null, "rms": null, @@ -120,10 +120,10 @@ "status": "failed", "image_status": "diff", "hash_status": null, - "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 12\\.1[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", + "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 24\\.6[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "baseline_image": "subtests.subtest.test_hmissing_idiff/baseline.png", "diff_image": "subtests.subtest.test_hmissing_idiff/result-failed-diff.png", - "rms": 12.12938597648977, + "rms": 24.6217358806762, "tolerance": 2, "result_image": "subtests.subtest.test_hmissing_idiff/result.png", "baseline_hash": null, @@ -133,7 +133,7 @@ "status": "failed", "image_status": "diff", "hash_status": null, - "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(400, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", + "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(300, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", "baseline_image": "subtests.subtest.test_hmissing_idiffshape/baseline.png", "diff_image": null, "rms": null, @@ -172,10 +172,10 @@ "status": "failed", "image_status": "diff", "hash_status": null, - "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 29\\.2[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 3", + "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 24\\.5[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 3", "baseline_image": "subtests.subtest.test_hdiff_idiff_tolerance/baseline.png", "diff_image": "subtests.subtest.test_hdiff_idiff_tolerance/result-failed-diff.png", - "rms": 29.260332173249314, + "rms": 24.576566752362574, "tolerance": 3, "result_image": "subtests.subtest.test_hdiff_idiff_tolerance/result.png", "baseline_hash": null, diff --git a/tests/subtests/summaries/test_generate.json b/tests/subtests/summaries/test_generate.json index 401081a8..04a1d288 100644 --- a/tests/subtests/summaries/test_generate.json +++ b/tests/subtests/summaries/test_generate.json @@ -9,7 +9,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "4a47c9b7920779cc83eabe2bbb64b9c40745d9d8abfa57857f93a5d8f12a5a03", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmatch_idiff": { @@ -22,7 +22,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "2b48790b0a2cee4b41cdb9820336acaf229ba811ae21c6a92b4b92838843adfa", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmatch_idiffshape": { @@ -35,7 +35,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "e3fed4ad2d22aff2cd771c5503dcb30c6161b21d154430ededa5faa1ec54366e", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmatch_imissing": { @@ -48,7 +48,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "e937fa1997d088c904ca35b1ab542e2285ea47b84df976490380f9c5f5b5f8ae", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch": { @@ -61,7 +61,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "2cae8f315d44b06de8f45d937af46a67bd1389edd6e4cde32f9feb4b7472284f", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_idiff": { @@ -74,7 +74,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "927521206ef454a25417e3ba0bd3235c84518cb202c2d1fa7afcfdfcde5fdcde", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_idiffshape": { @@ -87,7 +87,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "5d37745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imissing": { @@ -100,7 +100,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "afc411cfa34db3a5819ac4127704e86acf27d24d1ea2410718853d3d7e1d6ae0", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmissing_imatch": { @@ -113,7 +113,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "7ee8370efdc4b767634d12355657ca4f2460176670c07b31f3fb72cea0e79856", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmissing_idiff": { @@ -126,7 +126,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "4eeda1d349f4b0f26df97df41ba5410dce2b1c7ed520062d58f3c5f0e3790ebd", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmissing_idiffshape": { @@ -139,7 +139,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "204d43b643538cafafa2d0fb7dafac9cf7009dbb421d4b32c71da2e400ceb59d", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmissing_imissing": { @@ -152,7 +152,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "5101e60ac100cf2c2f418a0a6a382aae0060339e76718730344f539b61f7dc7e", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch_tolerance": { @@ -165,7 +165,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "510b3273d63a2a26a27e788ff0f090e86c9df7f9f191b7c566321c57de8266d6", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_idiff_tolerance": { @@ -178,7 +178,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "510b3273d63a2a26a27e788ff0f090e86c9df7f9f191b7c566321c57de8266d6", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch_savefig": { @@ -191,7 +191,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "8864803a4b4026d8c6dc0ab950228793ea255cd9b6c629c39db9e6315a9af6bc", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch_style": { @@ -204,7 +204,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "e3c8de36c2bad7dca131e4cbbfe229f882b5beec62750fb7da29314fd6a1ff13", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch_removetext": { @@ -217,7 +217,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "e4c06cf613c6836c1b1202abaae69cf65bc2232a8e31ab1040454bedc8e31e7a", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null } } diff --git a/tests/subtests/summaries/test_generate_hashes_only.json b/tests/subtests/summaries/test_generate_hashes_only.json index a53ef2ca..b8b686a0 100644 --- a/tests/subtests/summaries/test_generate_hashes_only.json +++ b/tests/subtests/summaries/test_generate_hashes_only.json @@ -9,33 +9,33 @@ "rms": null, "tolerance": 2, "result_image": null, - "baseline_hash": "4a47c9b7920779cc83eabe2bbb64b9c40745d9d8abfa57857f93a5d8f12a5a03", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmatch_idiff": { "status": "failed", "image_status": "diff", "hash_status": "generated", - "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 11\\.1[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", + "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 24\\.6[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "baseline_image": "subtests.subtest.test_hmatch_idiff/baseline.png", "diff_image": "subtests.subtest.test_hmatch_idiff/result-failed-diff.png", - "rms": 11.100353848213828, + "rms": 24.618234716477044, "tolerance": 2, "result_image": "subtests.subtest.test_hmatch_idiff/result.png", - "baseline_hash": "2b48790b0a2cee4b41cdb9820336acaf229ba811ae21c6a92b4b92838843adfa", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmatch_idiffshape": { "status": "failed", "image_status": "diff", "hash_status": "generated", - "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(400, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", + "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(300, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", "baseline_image": "subtests.subtest.test_hmatch_idiffshape/baseline.png", "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hmatch_idiffshape/result.png", - "baseline_hash": "e3fed4ad2d22aff2cd771c5503dcb30c6161b21d154430ededa5faa1ec54366e", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmatch_imissing": { @@ -48,7 +48,7 @@ "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hmatch_imissing/result.png", - "baseline_hash": "e937fa1997d088c904ca35b1ab542e2285ea47b84df976490380f9c5f5b5f8ae", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch": { @@ -61,33 +61,33 @@ "rms": null, "tolerance": 2, "result_image": null, - "baseline_hash": "2cae8f315d44b06de8f45d937af46a67bd1389edd6e4cde32f9feb4b7472284f", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_idiff": { "status": "failed", "image_status": "diff", "hash_status": "generated", - "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 11\\.1[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", + "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 24\\.6[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "baseline_image": "subtests.subtest.test_hdiff_idiff/baseline.png", "diff_image": "subtests.subtest.test_hdiff_idiff/result-failed-diff.png", - "rms": 11.182677079602481, + "rms": 24.620185259705547, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_idiff/result.png", - "baseline_hash": "927521206ef454a25417e3ba0bd3235c84518cb202c2d1fa7afcfdfcde5fdcde", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_idiffshape": { "status": "failed", "image_status": "diff", "hash_status": "generated", - "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(400, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", + "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(300, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", "baseline_image": "subtests.subtest.test_hdiff_idiffshape/baseline.png", "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_idiffshape/result.png", - "baseline_hash": "5d37745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imissing": { @@ -100,7 +100,7 @@ "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_imissing/result.png", - "baseline_hash": "afc411cfa34db3a5819ac4127704e86acf27d24d1ea2410718853d3d7e1d6ae0", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmissing_imatch": { @@ -113,33 +113,33 @@ "rms": null, "tolerance": 2, "result_image": null, - "baseline_hash": "7ee8370efdc4b767634d12355657ca4f2460176670c07b31f3fb72cea0e79856", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmissing_idiff": { "status": "failed", "image_status": "diff", "hash_status": "generated", - "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 12\\.1[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", + "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 24\\.6[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "baseline_image": "subtests.subtest.test_hmissing_idiff/baseline.png", "diff_image": "subtests.subtest.test_hmissing_idiff/result-failed-diff.png", - "rms": 12.12938597648977, + "rms": 24.6217358806762, "tolerance": 2, "result_image": "subtests.subtest.test_hmissing_idiff/result.png", - "baseline_hash": "4eeda1d349f4b0f26df97df41ba5410dce2b1c7ed520062d58f3c5f0e3790ebd", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmissing_idiffshape": { "status": "failed", "image_status": "diff", "hash_status": "generated", - "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(400, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", + "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(300, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", "baseline_image": "subtests.subtest.test_hmissing_idiffshape/baseline.png", "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hmissing_idiffshape/result.png", - "baseline_hash": "204d43b643538cafafa2d0fb7dafac9cf7009dbb421d4b32c71da2e400ceb59d", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmissing_imissing": { @@ -152,7 +152,7 @@ "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hmissing_imissing/result.png", - "baseline_hash": "5101e60ac100cf2c2f418a0a6a382aae0060339e76718730344f539b61f7dc7e", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch_tolerance": { @@ -165,20 +165,20 @@ "rms": null, "tolerance": 200, "result_image": null, - "baseline_hash": "510b3273d63a2a26a27e788ff0f090e86c9df7f9f191b7c566321c57de8266d6", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_idiff_tolerance": { "status": "failed", "image_status": "diff", "hash_status": "generated", - "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 29\\.2[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 3", + "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 24\\.5[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 3", "baseline_image": "subtests.subtest.test_hdiff_idiff_tolerance/baseline.png", "diff_image": "subtests.subtest.test_hdiff_idiff_tolerance/result-failed-diff.png", - "rms": 29.260332173249314, + "rms": 24.576566752362574, "tolerance": 3, "result_image": "subtests.subtest.test_hdiff_idiff_tolerance/result.png", - "baseline_hash": "510b3273d63a2a26a27e788ff0f090e86c9df7f9f191b7c566321c57de8266d6", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch_savefig": { @@ -191,7 +191,7 @@ "rms": null, "tolerance": 2, "result_image": null, - "baseline_hash": "8864803a4b4026d8c6dc0ab950228793ea255cd9b6c629c39db9e6315a9af6bc", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch_style": { @@ -204,7 +204,7 @@ "rms": null, "tolerance": 2, "result_image": null, - "baseline_hash": "e3c8de36c2bad7dca131e4cbbfe229f882b5beec62750fb7da29314fd6a1ff13", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch_removetext": { @@ -217,7 +217,7 @@ "rms": null, "tolerance": 2, "result_image": null, - "baseline_hash": "e4c06cf613c6836c1b1202abaae69cf65bc2232a8e31ab1040454bedc8e31e7a", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null } } diff --git a/tests/subtests/summaries/test_hash.json b/tests/subtests/summaries/test_hash.json index ac51e659..cdd18c90 100644 --- a/tests/subtests/summaries/test_hash.json +++ b/tests/subtests/summaries/test_hash.json @@ -9,215 +9,98 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "573f4c1482192b7b15bbe4f2bd370ae3b5ab40c9afa441543b87e15a71e9f672", - "result_hash": "573f4c1482192b7b15bbe4f2bd370ae3b5ab40c9afa441543b87e15a71e9f672" - }, - "subtests.subtest.test_hmatch_idiff": { - "status": "passed", - "image_status": null, - "hash_status": "match", - "status_msg": "Test hash matches baseline hash.", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": null, - "baseline_hash": "8b5c00365e6f784d5c8947091f09a92fd7d222e790431f297b4848f173e64857", - "result_hash": "8b5c00365e6f784d5c8947091f09a92fd7d222e790431f297b4848f173e64857" - }, - "subtests.subtest.test_hmatch_idiffshape": { - "status": "passed", - "image_status": null, - "hash_status": "match", - "status_msg": "Test hash matches baseline hash.", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": null, - "baseline_hash": "e3fed4ad2d22aff2cd771c5503dcb30c6161b21d154430ededa5faa1ec54366e", - "result_hash": "e3fed4ad2d22aff2cd771c5503dcb30c6161b21d154430ededa5faa1ec54366e" - }, - "subtests.subtest.test_hmatch_imissing": { - "status": "passed", - "image_status": null, - "hash_status": "match", - "status_msg": "Test hash matches baseline hash.", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": null, - "baseline_hash": "fd069e642e3b154c24077a4996b545e1c4dbffdbed34ea5ad34c7b36873af68f", - "result_hash": "fd069e642e3b154c24077a4996b545e1c4dbffdbed34ea5ad34c7b36873af68f" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch": { "status": "failed", - "status_msg": "REGEX:Hash 6e2fdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1 doesn't match hash d1ffdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch\\.", "image_status": null, "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch\\.", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_imatch/result.png", - "baseline_hash": "d1ffdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1", - "result_hash": "6e2fdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1" - }, - "subtests.subtest.test_hdiff_idiff": { - "status": "failed", - "status_msg": "REGEX:Hash 443361bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43 doesn't match hash d1ff61bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiff\\.", - "image_status": null, - "hash_status": "diff", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": "subtests.subtest.test_hdiff_idiff/result.png", - "baseline_hash": "d1ff61bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43", - "result_hash": "443361bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43" - }, - "subtests.subtest.test_hdiff_idiffshape": { - "status": "failed", - "image_status": null, - "hash_status": "diff", - "status_msg": "REGEX:Hash 5d37745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580 doesn't match hash d1ff745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiffshape\\.", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": "subtests.subtest.test_hdiff_idiffshape/result.png", - "baseline_hash": "d1ff745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580", - "result_hash": "5d37745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580" - }, - "subtests.subtest.test_hdiff_imissing": { - "status": "failed", - "status_msg": "REGEX:Hash 301e63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e doesn't match hash d1ff63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imissing\\.", - "image_status": null, - "hash_status": "diff", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": "subtests.subtest.test_hdiff_imissing/result.png", - "baseline_hash": "d1ff63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e", - "result_hash": "301e63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hmissing_imatch": { "status": "failed", - "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_imatch' not found in .*\\.json\\. Generated hash is eabd8a2e22afd88682990bfb8e4a0700a942fe68e5114e8da4ab6bd93c47b824\\.", "image_status": null, "hash_status": "missing", + "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_imatch' not found in .*\\.json\\. Generated hash is ###_RESULT_HASH_###\\.", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hmissing_imatch/result.png", "baseline_hash": null, - "result_hash": "eabd8a2e22afd88682990bfb8e4a0700a942fe68e5114e8da4ab6bd93c47b824" - }, - "subtests.subtest.test_hmissing_idiff": { - "status": "failed", - "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_idiff' not found in .*\\.json\\. Generated hash is e69570c4a70b2cc88ddee0f0a82312cae4f394b7f62e5760245feda1364c03ab\\.", - "image_status": null, - "hash_status": "missing", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": "subtests.subtest.test_hmissing_idiff/result.png", - "baseline_hash": null, - "result_hash": "e69570c4a70b2cc88ddee0f0a82312cae4f394b7f62e5760245feda1364c03ab" - }, - "subtests.subtest.test_hmissing_idiffshape": { - "status": "failed", - "image_status": null, - "hash_status": "missing", - "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_idiffshape' not found in .*\\.json\\. Generated hash is 204d43b643538cafafa2d0fb7dafac9cf7009dbb421d4b32c71da2e400ceb59d\\.", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": "subtests.subtest.test_hmissing_idiffshape/result.png", - "baseline_hash": null, - "result_hash": "204d43b643538cafafa2d0fb7dafac9cf7009dbb421d4b32c71da2e400ceb59d" - }, - "subtests.subtest.test_hmissing_imissing": { - "status": "failed", - "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_imissing' not found in .*\\.json\\. Generated hash is 5c8a9c7412e4e098f6f2683ee247c08bd50805a93df4d4b6d8fccf3579b4c56b\\.", - "image_status": null, - "hash_status": "missing", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": "subtests.subtest.test_hmissing_imissing/result.png", - "baseline_hash": null, - "result_hash": "5c8a9c7412e4e098f6f2683ee247c08bd50805a93df4d4b6d8fccf3579b4c56b" + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch_tolerance": { "status": "failed", - "status_msg": "REGEX:Hash aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96 doesn't match hash d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_tolerance\\.", "image_status": null, "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_tolerance\\.", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_imatch_tolerance/result.png", - "baseline_hash": "d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96", - "result_hash": "aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_idiff_tolerance": { "status": "failed", - "status_msg": "REGEX:Hash aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96 doesn't match hash d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiff_tolerance\\.", "image_status": null, "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiff_tolerance\\.", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_idiff_tolerance/result.png", - "baseline_hash": "d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96", - "result_hash": "aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch_savefig": { "status": "failed", - "status_msg": "REGEX:Hash 5dc1c2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568 doesn't match hash d1ffc2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_savefig\\.", "image_status": null, "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_savefig\\.", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_imatch_savefig/result.png", - "baseline_hash": "d1ffc2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568", - "result_hash": "5dc1c2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch_style": { "status": "failed", - "status_msg": "REGEX:Hash 185ed1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7 doesn't match hash d1ffd1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_style\\.", "image_status": null, "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_style\\.", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_imatch_style/result.png", - "baseline_hash": "d1ffd1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7", - "result_hash": "185ed1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch_removetext": { "status": "failed", - "status_msg": "REGEX:Hash be5af83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e doesn't match hash d1fff83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_removetext\\.", "image_status": null, "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_removetext\\.", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_imatch_removetext/result.png", - "baseline_hash": "d1fff83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e", - "result_hash": "be5af83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" } } diff --git a/tests/subtests/summaries/test_html_generate.json b/tests/subtests/summaries/test_html_generate.json index d4a2835e..d4366938 100644 --- a/tests/subtests/summaries/test_html_generate.json +++ b/tests/subtests/summaries/test_html_generate.json @@ -9,7 +9,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "4a47c9b7920779cc83eabe2bbb64b9c40745d9d8abfa57857f93a5d8f12a5a03", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmatch_idiff": { @@ -22,7 +22,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "2b48790b0a2cee4b41cdb9820336acaf229ba811ae21c6a92b4b92838843adfa", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmatch_idiffshape": { @@ -35,7 +35,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "e3fed4ad2d22aff2cd771c5503dcb30c6161b21d154430ededa5faa1ec54366e", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmatch_imissing": { @@ -48,7 +48,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "e937fa1997d088c904ca35b1ab542e2285ea47b84df976490380f9c5f5b5f8ae", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch": { @@ -61,7 +61,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "2cae8f315d44b06de8f45d937af46a67bd1389edd6e4cde32f9feb4b7472284f", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_idiff": { @@ -74,7 +74,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "927521206ef454a25417e3ba0bd3235c84518cb202c2d1fa7afcfdfcde5fdcde", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_idiffshape": { @@ -87,7 +87,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "5d37745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imissing": { @@ -100,7 +100,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "afc411cfa34db3a5819ac4127704e86acf27d24d1ea2410718853d3d7e1d6ae0", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmissing_imatch": { @@ -113,7 +113,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "7ee8370efdc4b767634d12355657ca4f2460176670c07b31f3fb72cea0e79856", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmissing_idiff": { @@ -126,7 +126,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "4eeda1d349f4b0f26df97df41ba5410dce2b1c7ed520062d58f3c5f0e3790ebd", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmissing_idiffshape": { @@ -139,7 +139,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "204d43b643538cafafa2d0fb7dafac9cf7009dbb421d4b32c71da2e400ceb59d", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmissing_imissing": { @@ -152,7 +152,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "5101e60ac100cf2c2f418a0a6a382aae0060339e76718730344f539b61f7dc7e", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch_tolerance": { @@ -165,7 +165,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "510b3273d63a2a26a27e788ff0f090e86c9df7f9f191b7c566321c57de8266d6", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_idiff_tolerance": { @@ -178,7 +178,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "510b3273d63a2a26a27e788ff0f090e86c9df7f9f191b7c566321c57de8266d6", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch_savefig": { @@ -191,7 +191,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "8864803a4b4026d8c6dc0ab950228793ea255cd9b6c629c39db9e6315a9af6bc", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch_style": { @@ -204,7 +204,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "e3c8de36c2bad7dca131e4cbbfe229f882b5beec62750fb7da29314fd6a1ff13", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch_removetext": { @@ -217,7 +217,7 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "e4c06cf613c6836c1b1202abaae69cf65bc2232a8e31ab1040454bedc8e31e7a", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null } } diff --git a/tests/subtests/summaries/test_html_generate_hashes_only.json b/tests/subtests/summaries/test_html_generate_hashes_only.json index d679f033..eb455d56 100644 --- a/tests/subtests/summaries/test_html_generate_hashes_only.json +++ b/tests/subtests/summaries/test_html_generate_hashes_only.json @@ -9,33 +9,33 @@ "rms": null, "tolerance": 2, "result_image": "subtests.subtest.test_hmatch_imatch/result.png", - "baseline_hash": "4a47c9b7920779cc83eabe2bbb64b9c40745d9d8abfa57857f93a5d8f12a5a03", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmatch_idiff": { "status": "failed", "image_status": "diff", "hash_status": "generated", - "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 11\\.1[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", + "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 24\\.6[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "baseline_image": "subtests.subtest.test_hmatch_idiff/baseline.png", "diff_image": "subtests.subtest.test_hmatch_idiff/result-failed-diff.png", - "rms": 11.100353848213828, + "rms": 24.618234716477044, "tolerance": 2, "result_image": "subtests.subtest.test_hmatch_idiff/result.png", - "baseline_hash": "2b48790b0a2cee4b41cdb9820336acaf229ba811ae21c6a92b4b92838843adfa", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmatch_idiffshape": { "status": "failed", "image_status": "diff", "hash_status": "generated", - "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(400, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", + "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(300, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", "baseline_image": "subtests.subtest.test_hmatch_idiffshape/baseline.png", "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hmatch_idiffshape/result.png", - "baseline_hash": "e3fed4ad2d22aff2cd771c5503dcb30c6161b21d154430ededa5faa1ec54366e", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmatch_imissing": { @@ -48,7 +48,7 @@ "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hmatch_imissing/result.png", - "baseline_hash": "e937fa1997d088c904ca35b1ab542e2285ea47b84df976490380f9c5f5b5f8ae", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch": { @@ -61,33 +61,33 @@ "rms": null, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_imatch/result.png", - "baseline_hash": "2cae8f315d44b06de8f45d937af46a67bd1389edd6e4cde32f9feb4b7472284f", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_idiff": { "status": "failed", "image_status": "diff", "hash_status": "generated", - "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 11\\.1[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", + "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 24\\.6[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "baseline_image": "subtests.subtest.test_hdiff_idiff/baseline.png", "diff_image": "subtests.subtest.test_hdiff_idiff/result-failed-diff.png", - "rms": 11.182677079602481, + "rms": 24.620185259705547, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_idiff/result.png", - "baseline_hash": "927521206ef454a25417e3ba0bd3235c84518cb202c2d1fa7afcfdfcde5fdcde", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_idiffshape": { "status": "failed", "image_status": "diff", "hash_status": "generated", - "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(400, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", + "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(300, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", "baseline_image": "subtests.subtest.test_hdiff_idiffshape/baseline.png", "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_idiffshape/result.png", - "baseline_hash": "5d37745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imissing": { @@ -100,7 +100,7 @@ "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_imissing/result.png", - "baseline_hash": "afc411cfa34db3a5819ac4127704e86acf27d24d1ea2410718853d3d7e1d6ae0", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmissing_imatch": { @@ -113,33 +113,33 @@ "rms": null, "tolerance": 2, "result_image": "subtests.subtest.test_hmissing_imatch/result.png", - "baseline_hash": "7ee8370efdc4b767634d12355657ca4f2460176670c07b31f3fb72cea0e79856", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmissing_idiff": { "status": "failed", "image_status": "diff", "hash_status": "generated", - "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 12\\.1[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", + "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 24\\.6[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "baseline_image": "subtests.subtest.test_hmissing_idiff/baseline.png", "diff_image": "subtests.subtest.test_hmissing_idiff/result-failed-diff.png", - "rms": 12.12938597648977, + "rms": 24.6217358806762, "tolerance": 2, "result_image": "subtests.subtest.test_hmissing_idiff/result.png", - "baseline_hash": "4eeda1d349f4b0f26df97df41ba5410dce2b1c7ed520062d58f3c5f0e3790ebd", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmissing_idiffshape": { "status": "failed", "image_status": "diff", "hash_status": "generated", - "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(400, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", + "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(300, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", "baseline_image": "subtests.subtest.test_hmissing_idiffshape/baseline.png", "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hmissing_idiffshape/result.png", - "baseline_hash": "204d43b643538cafafa2d0fb7dafac9cf7009dbb421d4b32c71da2e400ceb59d", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hmissing_imissing": { @@ -152,7 +152,7 @@ "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hmissing_imissing/result.png", - "baseline_hash": "5101e60ac100cf2c2f418a0a6a382aae0060339e76718730344f539b61f7dc7e", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch_tolerance": { @@ -165,20 +165,20 @@ "rms": null, "tolerance": 200, "result_image": "subtests.subtest.test_hdiff_imatch_tolerance/result.png", - "baseline_hash": "510b3273d63a2a26a27e788ff0f090e86c9df7f9f191b7c566321c57de8266d6", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_idiff_tolerance": { "status": "failed", "image_status": "diff", "hash_status": "generated", - "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 29\\.2[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 3", + "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 24\\.5[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 3", "baseline_image": "subtests.subtest.test_hdiff_idiff_tolerance/baseline.png", "diff_image": "subtests.subtest.test_hdiff_idiff_tolerance/result-failed-diff.png", - "rms": 29.260332173249314, + "rms": 24.576566752362574, "tolerance": 3, "result_image": "subtests.subtest.test_hdiff_idiff_tolerance/result.png", - "baseline_hash": "510b3273d63a2a26a27e788ff0f090e86c9df7f9f191b7c566321c57de8266d6", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch_savefig": { @@ -191,7 +191,7 @@ "rms": null, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_imatch_savefig/result.png", - "baseline_hash": "8864803a4b4026d8c6dc0ab950228793ea255cd9b6c629c39db9e6315a9af6bc", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch_style": { @@ -204,7 +204,7 @@ "rms": null, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_imatch_style/result.png", - "baseline_hash": "e3c8de36c2bad7dca131e4cbbfe229f882b5beec62750fb7da29314fd6a1ff13", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null }, "subtests.subtest.test_hdiff_imatch_removetext": { @@ -217,7 +217,7 @@ "rms": null, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_imatch_removetext/result.png", - "baseline_hash": "e4c06cf613c6836c1b1202abaae69cf65bc2232a8e31ab1040454bedc8e31e7a", + "baseline_hash": "###_BASELINE_HASH_###", "result_hash": null } } diff --git a/tests/subtests/summaries/test_html_hashes_only.json b/tests/subtests/summaries/test_html_hashes_only.json index 42442399..789795c0 100644 --- a/tests/subtests/summaries/test_html_hashes_only.json +++ b/tests/subtests/summaries/test_html_hashes_only.json @@ -9,215 +9,98 @@ "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hmatch_imatch/result.png", - "baseline_hash": "573f4c1482192b7b15bbe4f2bd370ae3b5ab40c9afa441543b87e15a71e9f672", - "result_hash": "573f4c1482192b7b15bbe4f2bd370ae3b5ab40c9afa441543b87e15a71e9f672" - }, - "subtests.subtest.test_hmatch_idiff": { - "status": "passed", - "image_status": null, - "hash_status": "match", - "status_msg": "Test hash matches baseline hash.", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": "subtests.subtest.test_hmatch_idiff/result.png", - "baseline_hash": "8b5c00365e6f784d5c8947091f09a92fd7d222e790431f297b4848f173e64857", - "result_hash": "8b5c00365e6f784d5c8947091f09a92fd7d222e790431f297b4848f173e64857" - }, - "subtests.subtest.test_hmatch_idiffshape": { - "status": "passed", - "image_status": null, - "hash_status": "match", - "status_msg": "Test hash matches baseline hash.", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": "subtests.subtest.test_hmatch_idiffshape/result.png", - "baseline_hash": "e3fed4ad2d22aff2cd771c5503dcb30c6161b21d154430ededa5faa1ec54366e", - "result_hash": "e3fed4ad2d22aff2cd771c5503dcb30c6161b21d154430ededa5faa1ec54366e" - }, - "subtests.subtest.test_hmatch_imissing": { - "status": "passed", - "image_status": null, - "hash_status": "match", - "status_msg": "Test hash matches baseline hash.", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": "subtests.subtest.test_hmatch_imissing/result.png", - "baseline_hash": "fd069e642e3b154c24077a4996b545e1c4dbffdbed34ea5ad34c7b36873af68f", - "result_hash": "fd069e642e3b154c24077a4996b545e1c4dbffdbed34ea5ad34c7b36873af68f" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch": { "status": "failed", - "status_msg": "REGEX:Hash 6e2fdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1 doesn't match hash d1ffdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch\\.", "image_status": null, "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch\\.", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_imatch/result.png", - "baseline_hash": "d1ffdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1", - "result_hash": "6e2fdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1" - }, - "subtests.subtest.test_hdiff_idiff": { - "status": "failed", - "status_msg": "REGEX:Hash 443361bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43 doesn't match hash d1ff61bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiff\\.", - "image_status": null, - "hash_status": "diff", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": "subtests.subtest.test_hdiff_idiff/result.png", - "baseline_hash": "d1ff61bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43", - "result_hash": "443361bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43" - }, - "subtests.subtest.test_hdiff_idiffshape": { - "status": "failed", - "image_status": null, - "hash_status": "diff", - "status_msg": "REGEX:Hash 5d37745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580 doesn't match hash d1ff745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiffshape\\.", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": "subtests.subtest.test_hdiff_idiffshape/result.png", - "baseline_hash": "d1ff745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580", - "result_hash": "5d37745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580" - }, - "subtests.subtest.test_hdiff_imissing": { - "status": "failed", - "status_msg": "REGEX:Hash 301e63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e doesn't match hash d1ff63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imissing\\.", - "image_status": null, - "hash_status": "diff", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": "subtests.subtest.test_hdiff_imissing/result.png", - "baseline_hash": "d1ff63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e", - "result_hash": "301e63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hmissing_imatch": { "status": "failed", - "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_imatch' not found in .*\\.json\\. Generated hash is eabd8a2e22afd88682990bfb8e4a0700a942fe68e5114e8da4ab6bd93c47b824\\.", "image_status": null, "hash_status": "missing", + "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_imatch' not found in .*\\.json\\. Generated hash is ###_RESULT_HASH_###\\.", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hmissing_imatch/result.png", "baseline_hash": null, - "result_hash": "eabd8a2e22afd88682990bfb8e4a0700a942fe68e5114e8da4ab6bd93c47b824" - }, - "subtests.subtest.test_hmissing_idiff": { - "status": "failed", - "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_idiff' not found in .*\\.json\\. Generated hash is e69570c4a70b2cc88ddee0f0a82312cae4f394b7f62e5760245feda1364c03ab\\.", - "image_status": null, - "hash_status": "missing", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": "subtests.subtest.test_hmissing_idiff/result.png", - "baseline_hash": null, - "result_hash": "e69570c4a70b2cc88ddee0f0a82312cae4f394b7f62e5760245feda1364c03ab" - }, - "subtests.subtest.test_hmissing_idiffshape": { - "status": "failed", - "image_status": null, - "hash_status": "missing", - "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_idiffshape' not found in .*\\.json\\. Generated hash is 204d43b643538cafafa2d0fb7dafac9cf7009dbb421d4b32c71da2e400ceb59d\\.", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": "subtests.subtest.test_hmissing_idiffshape/result.png", - "baseline_hash": null, - "result_hash": "204d43b643538cafafa2d0fb7dafac9cf7009dbb421d4b32c71da2e400ceb59d" - }, - "subtests.subtest.test_hmissing_imissing": { - "status": "failed", - "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_imissing' not found in .*\\.json\\. Generated hash is 5c8a9c7412e4e098f6f2683ee247c08bd50805a93df4d4b6d8fccf3579b4c56b\\.", - "image_status": null, - "hash_status": "missing", - "baseline_image": null, - "diff_image": null, - "rms": null, - "tolerance": null, - "result_image": "subtests.subtest.test_hmissing_imissing/result.png", - "baseline_hash": null, - "result_hash": "5c8a9c7412e4e098f6f2683ee247c08bd50805a93df4d4b6d8fccf3579b4c56b" + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch_tolerance": { "status": "failed", - "status_msg": "REGEX:Hash aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96 doesn't match hash d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_tolerance\\.", "image_status": null, "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_tolerance\\.", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_imatch_tolerance/result.png", - "baseline_hash": "d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96", - "result_hash": "aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_idiff_tolerance": { "status": "failed", - "status_msg": "REGEX:Hash aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96 doesn't match hash d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiff_tolerance\\.", "image_status": null, "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiff_tolerance\\.", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_idiff_tolerance/result.png", - "baseline_hash": "d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96", - "result_hash": "aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch_savefig": { "status": "failed", - "status_msg": "REGEX:Hash 5dc1c2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568 doesn't match hash d1ffc2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_savefig\\.", "image_status": null, "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_savefig\\.", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_imatch_savefig/result.png", - "baseline_hash": "d1ffc2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568", - "result_hash": "5dc1c2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch_style": { "status": "failed", - "status_msg": "REGEX:Hash 185ed1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7 doesn't match hash d1ffd1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_style\\.", "image_status": null, "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_style\\.", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_imatch_style/result.png", - "baseline_hash": "d1ffd1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7", - "result_hash": "185ed1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch_removetext": { "status": "failed", - "status_msg": "REGEX:Hash be5af83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e doesn't match hash d1fff83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_removetext\\.", "image_status": null, "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_removetext\\.", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_imatch_removetext/result.png", - "baseline_hash": "d1fff83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e", - "result_hash": "be5af83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" } } diff --git a/tests/subtests/summaries/test_html_images_only.json b/tests/subtests/summaries/test_html_images_only.json index bd23837d..fa10a4fb 100644 --- a/tests/subtests/summaries/test_html_images_only.json +++ b/tests/subtests/summaries/test_html_images_only.json @@ -16,10 +16,10 @@ "status": "failed", "image_status": "diff", "hash_status": null, - "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 11\\.1[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", + "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 24\\.6[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "baseline_image": "subtests.subtest.test_hmatch_idiff/baseline.png", "diff_image": "subtests.subtest.test_hmatch_idiff/result-failed-diff.png", - "rms": 11.100353848213828, + "rms": 24.618234716477044, "tolerance": 2, "result_image": "subtests.subtest.test_hmatch_idiff/result.png", "baseline_hash": null, @@ -29,7 +29,7 @@ "status": "failed", "image_status": "diff", "hash_status": null, - "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(400, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", + "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(300, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", "baseline_image": "subtests.subtest.test_hmatch_idiffshape/baseline.png", "diff_image": null, "rms": null, @@ -68,10 +68,10 @@ "status": "failed", "image_status": "diff", "hash_status": null, - "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 11\\.1[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", + "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 24\\.6[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "baseline_image": "subtests.subtest.test_hdiff_idiff/baseline.png", "diff_image": "subtests.subtest.test_hdiff_idiff/result-failed-diff.png", - "rms": 11.182677079602481, + "rms": 24.620185259705547, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_idiff/result.png", "baseline_hash": null, @@ -81,7 +81,7 @@ "status": "failed", "image_status": "diff", "hash_status": null, - "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(400, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", + "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(300, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", "baseline_image": "subtests.subtest.test_hdiff_idiffshape/baseline.png", "diff_image": null, "rms": null, @@ -120,10 +120,10 @@ "status": "failed", "image_status": "diff", "hash_status": null, - "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 12\\.1[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", + "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 24\\.6[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "baseline_image": "subtests.subtest.test_hmissing_idiff/baseline.png", "diff_image": "subtests.subtest.test_hmissing_idiff/result-failed-diff.png", - "rms": 12.12938597648977, + "rms": 24.6217358806762, "tolerance": 2, "result_image": "subtests.subtest.test_hmissing_idiff/result.png", "baseline_hash": null, @@ -133,7 +133,7 @@ "status": "failed", "image_status": "diff", "hash_status": null, - "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(400, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", + "status_msg": "REGEX:Error: Image dimensions did not match\\.\n Expected shape: \\(300, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", "baseline_image": "subtests.subtest.test_hmissing_idiffshape/baseline.png", "diff_image": null, "rms": null, @@ -172,10 +172,10 @@ "status": "failed", "image_status": "diff", "hash_status": null, - "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 29\\.2[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 3", + "status_msg": "REGEX:Error: Image files did not match\\.\n RMS Value: 24\\.5[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 3", "baseline_image": "subtests.subtest.test_hdiff_idiff_tolerance/baseline.png", "diff_image": "subtests.subtest.test_hdiff_idiff_tolerance/result-failed-diff.png", - "rms": 29.260332173249314, + "rms": 24.576566752362574, "tolerance": 3, "result_image": "subtests.subtest.test_hdiff_idiff_tolerance/result.png", "baseline_hash": null, diff --git a/tests/subtests/summaries/test_hybrid.json b/tests/subtests/summaries/test_hybrid.json index d65ae9cb..24bfd2fa 100644 --- a/tests/subtests/summaries/test_hybrid.json +++ b/tests/subtests/summaries/test_hybrid.json @@ -9,8 +9,8 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "573f4c1482192b7b15bbe4f2bd370ae3b5ab40c9afa441543b87e15a71e9f672", - "result_hash": "573f4c1482192b7b15bbe4f2bd370ae3b5ab40c9afa441543b87e15a71e9f672" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hmatch_idiff": { "status": "passed", @@ -22,8 +22,8 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "8b5c00365e6f784d5c8947091f09a92fd7d222e790431f297b4848f173e64857", - "result_hash": "8b5c00365e6f784d5c8947091f09a92fd7d222e790431f297b4848f173e64857" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hmatch_idiffshape": { "status": "passed", @@ -35,8 +35,8 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "e3fed4ad2d22aff2cd771c5503dcb30c6161b21d154430ededa5faa1ec54366e", - "result_hash": "e3fed4ad2d22aff2cd771c5503dcb30c6161b21d154430ededa5faa1ec54366e" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hmatch_imissing": { "status": "passed", @@ -48,176 +48,176 @@ "rms": null, "tolerance": null, "result_image": null, - "baseline_hash": "fd069e642e3b154c24077a4996b545e1c4dbffdbed34ea5ad34c7b36873af68f", - "result_hash": "fd069e642e3b154c24077a4996b545e1c4dbffdbed34ea5ad34c7b36873af68f" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch": { "status": "failed", - "status_msg": "REGEX:Hash 6e2fdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1 doesn't match hash d1ffdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "image_status": "match", "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "baseline_image": "subtests.subtest.test_hdiff_imatch/baseline.png", "diff_image": null, "rms": null, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_imatch/result.png", - "baseline_hash": "d1ffdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1", - "result_hash": "6e2fdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_idiff": { "status": "failed", - "status_msg": "REGEX:Hash 443361bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43 doesn't match hash d1ff61bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiff\\.\n\nImage comparison test\n---------------------\nError: Image files did not match\\.\n RMS Value: 11\\.1[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "image_status": "diff", "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiff\\.\n\nImage comparison test\n---------------------\nError: Image files did not match\\.\n RMS Value: 24\\.6[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "baseline_image": "subtests.subtest.test_hdiff_idiff/baseline.png", "diff_image": "subtests.subtest.test_hdiff_idiff/result-failed-diff.png", - "rms": 11.182677079602481, + "rms": 24.620185259705547, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_idiff/result.png", - "baseline_hash": "d1ff61bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43", - "result_hash": "443361bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_idiffshape": { "status": "failed", "image_status": "diff", "hash_status": "diff", - "status_msg": "REGEX:Hash 5d37745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580 doesn't match hash d1ff745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiffshape\\.\n\nImage comparison test\n---------------------\nError: Image dimensions did not match\\.\n Expected shape: \\(400, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiffshape\\.\n\nImage comparison test\n---------------------\nError: Image dimensions did not match\\.\n Expected shape: \\(300, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", "baseline_image": "subtests.subtest.test_hdiff_idiffshape/baseline.png", "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_idiffshape/result.png", - "baseline_hash": "d1ff745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580", - "result_hash": "5d37745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imissing": { "status": "failed", - "status_msg": "REGEX:Hash 301e63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e doesn't match hash d1ff63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imissing\\.\n\nImage comparison test\n---------------------\nImage file not found for comparison test in: \n\t.*\n\\(This is expected for new tests\\.\\)\nGenerated Image: \n\t.*result\\.png", "image_status": "missing", "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imissing\\.\n\nImage comparison test\n---------------------\nImage file not found for comparison test in: \n\t.*\n\\(This is expected for new tests\\.\\)\nGenerated Image: \n\t.*result\\.png", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_imissing/result.png", - "baseline_hash": "d1ff63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e", - "result_hash": "301e63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hmissing_imatch": { "status": "failed", - "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_imatch' not found in .*\\.json\\. Generated hash is eabd8a2e22afd88682990bfb8e4a0700a942fe68e5114e8da4ab6bd93c47b824\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "image_status": "match", "hash_status": "missing", + "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_imatch' not found in .*\\.json\\. Generated hash is ###_RESULT_HASH_###\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "baseline_image": "subtests.subtest.test_hmissing_imatch/baseline.png", "diff_image": null, "rms": null, "tolerance": 2, "result_image": "subtests.subtest.test_hmissing_imatch/result.png", "baseline_hash": null, - "result_hash": "eabd8a2e22afd88682990bfb8e4a0700a942fe68e5114e8da4ab6bd93c47b824" + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hmissing_idiff": { "status": "failed", - "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_idiff' not found in .*\\.json\\. Generated hash is e69570c4a70b2cc88ddee0f0a82312cae4f394b7f62e5760245feda1364c03ab\\.\n\nImage comparison test\n---------------------\nError: Image files did not match\\.\n RMS Value: 12\\.1[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "image_status": "diff", "hash_status": "missing", + "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_idiff' not found in .*\\.json\\. Generated hash is ###_RESULT_HASH_###\\.\n\nImage comparison test\n---------------------\nError: Image files did not match\\.\n RMS Value: 24\\.6[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "baseline_image": "subtests.subtest.test_hmissing_idiff/baseline.png", "diff_image": "subtests.subtest.test_hmissing_idiff/result-failed-diff.png", - "rms": 12.12938597648977, + "rms": 24.6217358806762, "tolerance": 2, "result_image": "subtests.subtest.test_hmissing_idiff/result.png", "baseline_hash": null, - "result_hash": "e69570c4a70b2cc88ddee0f0a82312cae4f394b7f62e5760245feda1364c03ab" + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hmissing_idiffshape": { "status": "failed", "image_status": "diff", "hash_status": "missing", - "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_idiffshape' not found in .*\\.json\\. Generated hash is 204d43b643538cafafa2d0fb7dafac9cf7009dbb421d4b32c71da2e400ceb59d\\.\n\nImage comparison test\n---------------------\nError: Image dimensions did not match\\.\n Expected shape: \\(400, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", + "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_idiffshape' not found in .*\\.json\\. Generated hash is ###_RESULT_HASH_###\\.\n\nImage comparison test\n---------------------\nError: Image dimensions did not match\\.\n Expected shape: \\(300, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", "baseline_image": "subtests.subtest.test_hmissing_idiffshape/baseline.png", "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hmissing_idiffshape/result.png", "baseline_hash": null, - "result_hash": "204d43b643538cafafa2d0fb7dafac9cf7009dbb421d4b32c71da2e400ceb59d" + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hmissing_imissing": { "status": "failed", - "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_imissing' not found in .*\\.json\\. Generated hash is 5c8a9c7412e4e098f6f2683ee247c08bd50805a93df4d4b6d8fccf3579b4c56b\\.\n\nImage comparison test\n---------------------\nImage file not found for comparison test in: \n\t.*\n\\(This is expected for new tests\\.\\)\nGenerated Image: \n\t.*result\\.png", "image_status": "missing", "hash_status": "missing", + "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_imissing' not found in .*\\.json\\. Generated hash is ###_RESULT_HASH_###\\.\n\nImage comparison test\n---------------------\nImage file not found for comparison test in: \n\t.*\n\\(This is expected for new tests\\.\\)\nGenerated Image: \n\t.*result\\.png", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hmissing_imissing/result.png", "baseline_hash": null, - "result_hash": "5c8a9c7412e4e098f6f2683ee247c08bd50805a93df4d4b6d8fccf3579b4c56b" + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch_tolerance": { "status": "failed", - "status_msg": "REGEX:Hash aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96 doesn't match hash d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_tolerance\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "image_status": "match", "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_tolerance\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "baseline_image": "subtests.subtest.test_hdiff_imatch_tolerance/baseline.png", "diff_image": null, "rms": null, "tolerance": 200, "result_image": "subtests.subtest.test_hdiff_imatch_tolerance/result.png", - "baseline_hash": "d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96", - "result_hash": "aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_idiff_tolerance": { "status": "failed", - "status_msg": "REGEX:Hash aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96 doesn't match hash d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiff_tolerance\\.\n\nImage comparison test\n---------------------\nError: Image files did not match\\.\n RMS Value: 29\\.2[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 3", "image_status": "diff", "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiff_tolerance\\.\n\nImage comparison test\n---------------------\nError: Image files did not match\\.\n RMS Value: 24\\.5[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 3", "baseline_image": "subtests.subtest.test_hdiff_idiff_tolerance/baseline.png", "diff_image": "subtests.subtest.test_hdiff_idiff_tolerance/result-failed-diff.png", - "rms": 29.260332173249314, + "rms": 24.576566752362574, "tolerance": 3, "result_image": "subtests.subtest.test_hdiff_idiff_tolerance/result.png", - "baseline_hash": "d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96", - "result_hash": "aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch_savefig": { "status": "failed", - "status_msg": "REGEX:Hash 5dc1c2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568 doesn't match hash d1ffc2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_savefig\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "image_status": "match", "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_savefig\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "baseline_image": "subtests.subtest.test_hdiff_imatch_savefig/baseline.png", "diff_image": null, "rms": null, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_imatch_savefig/result.png", - "baseline_hash": "d1ffc2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568", - "result_hash": "5dc1c2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch_style": { "status": "failed", - "status_msg": "REGEX:Hash 185ed1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7 doesn't match hash d1ffd1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_style\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "image_status": "match", "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_style\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "baseline_image": "subtests.subtest.test_hdiff_imatch_style/baseline.png", "diff_image": null, "rms": null, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_imatch_style/result.png", - "baseline_hash": "d1ffd1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7", - "result_hash": "185ed1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch_removetext": { "status": "failed", - "status_msg": "REGEX:Hash be5af83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e doesn't match hash d1fff83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_removetext\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "image_status": "match", "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_removetext\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "baseline_image": "subtests.subtest.test_hdiff_imatch_removetext/baseline.png", "diff_image": null, "rms": null, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_imatch_removetext/result.png", - "baseline_hash": "d1fff83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e", - "result_hash": "be5af83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" } } diff --git a/tests/subtests/summaries/test_results_always.json b/tests/subtests/summaries/test_results_always.json index 333c1e2c..4e8f4250 100644 --- a/tests/subtests/summaries/test_results_always.json +++ b/tests/subtests/summaries/test_results_always.json @@ -9,34 +9,34 @@ "rms": null, "tolerance": 2, "result_image": "subtests.subtest.test_hmatch_imatch/result.png", - "baseline_hash": "573f4c1482192b7b15bbe4f2bd370ae3b5ab40c9afa441543b87e15a71e9f672", - "result_hash": "573f4c1482192b7b15bbe4f2bd370ae3b5ab40c9afa441543b87e15a71e9f672" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hmatch_idiff": { "status": "passed", "image_status": "diff", "hash_status": "match", - "status_msg": "REGEX:Test hash matches baseline hash\\.\n\nImage comparison test\n---------------------\nError: Image files did not match\\.\n RMS Value: 11\\.1[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", + "status_msg": "REGEX:Test hash matches baseline hash\\.\n\nImage comparison test\n---------------------\nError: Image files did not match\\.\n RMS Value: 24\\.6[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "baseline_image": "subtests.subtest.test_hmatch_idiff/baseline.png", "diff_image": "subtests.subtest.test_hmatch_idiff/result-failed-diff.png", - "rms": 11.100353848213828, + "rms": 24.618234716477044, "tolerance": 2, "result_image": "subtests.subtest.test_hmatch_idiff/result.png", - "baseline_hash": "8b5c00365e6f784d5c8947091f09a92fd7d222e790431f297b4848f173e64857", - "result_hash": "8b5c00365e6f784d5c8947091f09a92fd7d222e790431f297b4848f173e64857" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hmatch_idiffshape": { "status": "passed", "image_status": "diff", "hash_status": "match", - "status_msg": "REGEX:Test hash matches baseline hash\\.\n\nImage comparison test\n---------------------\nError: Image dimensions did not match\\.\n Expected shape: \\(400, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", + "status_msg": "REGEX:Test hash matches baseline hash\\.\n\nImage comparison test\n---------------------\nError: Image dimensions did not match\\.\n Expected shape: \\(300, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", "baseline_image": "subtests.subtest.test_hmatch_idiffshape/baseline.png", "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hmatch_idiffshape/result.png", - "baseline_hash": "e3fed4ad2d22aff2cd771c5503dcb30c6161b21d154430ededa5faa1ec54366e", - "result_hash": "e3fed4ad2d22aff2cd771c5503dcb30c6161b21d154430ededa5faa1ec54366e" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hmatch_imissing": { "status": "passed", @@ -48,176 +48,176 @@ "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hmatch_imissing/result.png", - "baseline_hash": "fd069e642e3b154c24077a4996b545e1c4dbffdbed34ea5ad34c7b36873af68f", - "result_hash": "fd069e642e3b154c24077a4996b545e1c4dbffdbed34ea5ad34c7b36873af68f" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch": { "status": "failed", - "status_msg": "REGEX:Hash 6e2fdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1 doesn't match hash d1ffdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "image_status": "match", "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "baseline_image": "subtests.subtest.test_hdiff_imatch/baseline.png", "diff_image": null, "rms": null, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_imatch/result.png", - "baseline_hash": "d1ffdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1", - "result_hash": "6e2fdde5a6682dc6abba7121f5df702c3664b1ce09593534fc0d7c3514eb07e1" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_idiff": { "status": "failed", - "status_msg": "REGEX:Hash 443361bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43 doesn't match hash d1ff61bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiff\\.\n\nImage comparison test\n---------------------\nError: Image files did not match\\.\n RMS Value: 11\\.1[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "image_status": "diff", "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiff\\.\n\nImage comparison test\n---------------------\nError: Image files did not match\\.\n RMS Value: 24\\.6[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "baseline_image": "subtests.subtest.test_hdiff_idiff/baseline.png", "diff_image": "subtests.subtest.test_hdiff_idiff/result-failed-diff.png", - "rms": 11.182677079602481, + "rms": 24.620185259705547, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_idiff/result.png", - "baseline_hash": "d1ff61bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43", - "result_hash": "443361bdd0efd1cdd343eabf73af6f20439d4834ab5503a574ac7ec28e0c2b43" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_idiffshape": { "status": "failed", "image_status": "diff", "hash_status": "diff", - "status_msg": "REGEX:Hash 5d37745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580 doesn't match hash d1ff745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiffshape\\.\n\nImage comparison test\n---------------------\nError: Image dimensions did not match\\.\n Expected shape: \\(400, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiffshape\\.\n\nImage comparison test\n---------------------\nError: Image dimensions did not match\\.\n Expected shape: \\(300, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", "baseline_image": "subtests.subtest.test_hdiff_idiffshape/baseline.png", "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_idiffshape/result.png", - "baseline_hash": "d1ff745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580", - "result_hash": "5d37745bbdf2aac6743dbd830afb1877c2ac25a5f926d4f6483c1e24d19a0580" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imissing": { "status": "failed", - "status_msg": "REGEX:Hash 301e63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e doesn't match hash d1ff63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imissing\\.\n\nImage comparison test\n---------------------\nImage file not found for comparison test in: \n\t.*\n\\(This is expected for new tests\\.\\)\nGenerated Image: \n\t.*result\\.png", "image_status": "missing", "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imissing\\.\n\nImage comparison test\n---------------------\nImage file not found for comparison test in: \n\t.*\n\\(This is expected for new tests\\.\\)\nGenerated Image: \n\t.*result\\.png", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hdiff_imissing/result.png", - "baseline_hash": "d1ff63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e", - "result_hash": "301e63d656d7a586cc4e498bc32b970f8cb7c7c47bbd2fec33b931219fc0690e" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hmissing_imatch": { "status": "failed", - "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_imatch' not found in .*\\.json\\. Generated hash is eabd8a2e22afd88682990bfb8e4a0700a942fe68e5114e8da4ab6bd93c47b824\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "image_status": "match", "hash_status": "missing", + "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_imatch' not found in .*\\.json\\. Generated hash is ###_RESULT_HASH_###\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "baseline_image": "subtests.subtest.test_hmissing_imatch/baseline.png", "diff_image": null, "rms": null, "tolerance": 2, "result_image": "subtests.subtest.test_hmissing_imatch/result.png", "baseline_hash": null, - "result_hash": "eabd8a2e22afd88682990bfb8e4a0700a942fe68e5114e8da4ab6bd93c47b824" + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hmissing_idiff": { "status": "failed", - "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_idiff' not found in .*\\.json\\. Generated hash is e69570c4a70b2cc88ddee0f0a82312cae4f394b7f62e5760245feda1364c03ab\\.\n\nImage comparison test\n---------------------\nError: Image files did not match\\.\n RMS Value: 12\\.1[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "image_status": "diff", "hash_status": "missing", + "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_idiff' not found in .*\\.json\\. Generated hash is ###_RESULT_HASH_###\\.\n\nImage comparison test\n---------------------\nError: Image files did not match\\.\n RMS Value: 24\\.6[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 2", "baseline_image": "subtests.subtest.test_hmissing_idiff/baseline.png", "diff_image": "subtests.subtest.test_hmissing_idiff/result-failed-diff.png", - "rms": 12.12938597648977, + "rms": 24.6217358806762, "tolerance": 2, "result_image": "subtests.subtest.test_hmissing_idiff/result.png", "baseline_hash": null, - "result_hash": "e69570c4a70b2cc88ddee0f0a82312cae4f394b7f62e5760245feda1364c03ab" + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hmissing_idiffshape": { "status": "failed", "image_status": "diff", "hash_status": "missing", - "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_idiffshape' not found in .*\\.json\\. Generated hash is 204d43b643538cafafa2d0fb7dafac9cf7009dbb421d4b32c71da2e400ceb59d\\.\n\nImage comparison test\n---------------------\nError: Image dimensions did not match\\.\n Expected shape: \\(400, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", + "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_idiffshape' not found in .*\\.json\\. Generated hash is ###_RESULT_HASH_###\\.\n\nImage comparison test\n---------------------\nError: Image dimensions did not match\\.\n Expected shape: \\(300, 400\\)\n .*baseline\\.png\n Actual shape: \\(600, 800\\)\n .*result\\.png", "baseline_image": "subtests.subtest.test_hmissing_idiffshape/baseline.png", "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hmissing_idiffshape/result.png", "baseline_hash": null, - "result_hash": "204d43b643538cafafa2d0fb7dafac9cf7009dbb421d4b32c71da2e400ceb59d" + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hmissing_imissing": { "status": "failed", - "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_imissing' not found in .*\\.json\\. Generated hash is 5c8a9c7412e4e098f6f2683ee247c08bd50805a93df4d4b6d8fccf3579b4c56b\\.\n\nImage comparison test\n---------------------\nImage file not found for comparison test in: \n\t.*\n\\(This is expected for new tests\\.\\)\nGenerated Image: \n\t.*result\\.png", "image_status": "missing", "hash_status": "missing", + "status_msg": "REGEX:Hash for test 'subtests\\.subtest\\.test_hmissing_imissing' not found in .*\\.json\\. Generated hash is ###_RESULT_HASH_###\\.\n\nImage comparison test\n---------------------\nImage file not found for comparison test in: \n\t.*\n\\(This is expected for new tests\\.\\)\nGenerated Image: \n\t.*result\\.png", "baseline_image": null, "diff_image": null, "rms": null, "tolerance": null, "result_image": "subtests.subtest.test_hmissing_imissing/result.png", "baseline_hash": null, - "result_hash": "5c8a9c7412e4e098f6f2683ee247c08bd50805a93df4d4b6d8fccf3579b4c56b" + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch_tolerance": { "status": "failed", - "status_msg": "REGEX:Hash aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96 doesn't match hash d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_tolerance\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "image_status": "match", "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_tolerance\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "baseline_image": "subtests.subtest.test_hdiff_imatch_tolerance/baseline.png", "diff_image": null, "rms": null, "tolerance": 200, "result_image": "subtests.subtest.test_hdiff_imatch_tolerance/result.png", - "baseline_hash": "d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96", - "result_hash": "aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_idiff_tolerance": { "status": "failed", - "status_msg": "REGEX:Hash aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96 doesn't match hash d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiff_tolerance\\.\n\nImage comparison test\n---------------------\nError: Image files did not match\\.\n RMS Value: 29\\.2[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 3", "image_status": "diff", "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_idiff_tolerance\\.\n\nImage comparison test\n---------------------\nError: Image files did not match\\.\n RMS Value: 24\\.5[0-9]*\n Expected: \n .*baseline\\.png\n Actual: \n .*result\\.png\n Difference:\n .*result-failed-diff\\.png\n Tolerance: \n 3", "baseline_image": "subtests.subtest.test_hdiff_idiff_tolerance/baseline.png", "diff_image": "subtests.subtest.test_hdiff_idiff_tolerance/result-failed-diff.png", - "rms": 29.260332173249314, + "rms": 24.576566752362574, "tolerance": 3, "result_image": "subtests.subtest.test_hdiff_idiff_tolerance/result.png", - "baseline_hash": "d1ffe85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96", - "result_hash": "aaf4e85fda98298347c274adae98ca7728f9bb2444ca8a49295145b0727b8c96" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch_savefig": { "status": "failed", - "status_msg": "REGEX:Hash 5dc1c2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568 doesn't match hash d1ffc2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_savefig\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "image_status": "match", "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_savefig\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "baseline_image": "subtests.subtest.test_hdiff_imatch_savefig/baseline.png", "diff_image": null, "rms": null, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_imatch_savefig/result.png", - "baseline_hash": "d1ffc2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568", - "result_hash": "5dc1c2c68c2d34c03a89ab394e3c11349b76594d0c8837374daef299ac227568" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch_style": { "status": "failed", - "status_msg": "REGEX:Hash 185ed1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7 doesn't match hash d1ffd1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7 in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_style\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "image_status": "match", "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_style\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "baseline_image": "subtests.subtest.test_hdiff_imatch_style/baseline.png", "diff_image": null, "rms": null, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_imatch_style/result.png", - "baseline_hash": "d1ffd1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7", - "result_hash": "185ed1b702c7bbd810370b12e46ecea4b9c9eb87b743397f1d4a50177e7ba7f7" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" }, "subtests.subtest.test_hdiff_imatch_removetext": { "status": "failed", - "status_msg": "REGEX:Hash be5af83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e doesn't match hash d1fff83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_removetext\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "image_status": "match", "hash_status": "diff", + "status_msg": "REGEX:Hash ###_RESULT_HASH_### doesn't match hash ###_BASELINE_HASH_### in library .*\\.json for test subtests\\.subtest\\.test_hdiff_imatch_removetext\\.\n\nImage comparison test\n---------------------\nThe comparison to the baseline image succeeded\\.", "baseline_image": "subtests.subtest.test_hdiff_imatch_removetext/baseline.png", "diff_image": null, "rms": null, "tolerance": 2, "result_image": "subtests.subtest.test_hdiff_imatch_removetext/result.png", - "baseline_hash": "d1fff83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e", - "result_hash": "be5af83a43cb89f5e13923f532fe5c9bedbf7d13585533efef2f4051c4968b5e" + "baseline_hash": "###_BASELINE_HASH_###", + "result_hash": "###_RESULT_HASH_###" } } diff --git a/tests/subtests/test_subtest.py b/tests/subtests/test_subtest.py index eb85aa5c..4993fa9f 100644 --- a/tests/subtests/test_subtest.py +++ b/tests/subtests/test_subtest.py @@ -1,6 +1,8 @@ +import os import sys import json import shutil +import tempfile import subprocess from pathlib import Path @@ -9,7 +11,8 @@ import pytest from packaging.version import Version -from .helpers import assert_existence, diff_summary, patch_summary +from .helpers import (apply_regex, assert_existence, diff_summary, patch_summary, + remove_specific_hashes, transform_hashes, transform_images) # Handle Matplotlib and FreeType versions MPL_VERSION = Version(matplotlib.__version__) @@ -23,14 +26,28 @@ BASELINE_IMAGES_FLAG_REL = ['--mpl-baseline-path=baseline', '--mpl-baseline-relative'] BASELINE_IMAGES_FLAG_ABS = rf'--mpl-baseline-path={FULL_BASELINE_PATH}' +IMAGE_COMPARISON_MODE = ["-k", "image"] +HASH_COMPARISON_MODE = ["-k", "hash"] +# HYBRID_MODE = [] + TEST_FILE = Path(__file__).parent / 'subtest.py' # Global settings to update baselines when running pytest # Note: when updating baseline make sure you don't commit "fixes" # for tests that are expected to fail # (See also `run_subtest` argument `update_baseline` and `update_summary`.) -UPDATE_BASELINE = False # baseline images and hashes -UPDATE_SUMMARY = False # baseline summaries +UPDATE_BASELINE = os.getenv("MPL_UPDATE_BASELINE") is not None # baseline images and hashes +UPDATE_SUMMARY = os.getenv("MPL_UPDATE_SUMMARY") is not None # baseline summaries + +# When updating baseline summaries, replace parts of status_msg with regex. +# See helpers.apply_regex for more information. +REGEX_PATHS = [ + str(Path(__file__).parent), # replace all references to baseline files + os.path.realpath(tempfile.gettempdir()), # replace all references to output files +] +REGEX_STRS = [ + r'RMS Value: ', +] def run_subtest(baseline_summary_name, tmp_path, args, summaries=None, xfail=True, @@ -57,6 +74,9 @@ def run_subtest(baseline_summary_name, tmp_path, args, summaries=None, xfail=Tru Whether `--mpl-generate-hash-library` was specified and both of `--mpl-hash-library` and `hash_library=` were not. """ + if update_baseline and update_summary: + raise ValueError("Cannot enable both `update_baseline` and `update_summary`.") + # Parse arguments if summaries is None: summaries = [] @@ -82,9 +102,11 @@ def run_subtest(baseline_summary_name, tmp_path, args, summaries=None, xfail=Tru # If updating baseline, don't check summaries if update_baseline: assert status == 0 + transform_images(FULL_BASELINE_PATH) # Make image comparison tests fail correctly if HASH_LIBRARY.exists(): - # Keep in sync. Use `git add -p` to commit specific lines. shutil.copy(HASH_LIBRARY, RESULT_LIBRARY) + transform_hashes(HASH_LIBRARY) # Make hash comparison tests fail correctly + pytest.skip("Skipping testing, since `update_baseline` is enabled.") return # Ensure exit status is as expected @@ -99,6 +121,8 @@ def run_subtest(baseline_summary_name, tmp_path, args, summaries=None, xfail=Tru results_file = results_path / 'results.json' if update_summary: shutil.copy(results_file, baseline_file) + apply_regex(baseline_file, REGEX_PATHS, REGEX_STRS) + remove_specific_hashes(baseline_file) with open(baseline_file, 'r') as f: baseline_summary = json.load(f) with open(results_file, 'r') as f: @@ -132,23 +156,27 @@ def run_subtest(baseline_summary_name, tmp_path, args, summaries=None, xfail=Tru baseline = json.load(f) with open(result_hash_file, "r") as f: result = json.load(f) + + # Baseline contains hashes for all subtests so remove ones not used + for test in list(baseline.keys()): + if test not in result: + del baseline[test] + diff_summary({'a': baseline}, {'a': result}) else: assert not result_hash_file.exists() + if update_summary: + pytest.skip("Skipping testing, since `update_summary` is enabled.") + def test_default(tmp_path): - run_subtest('test_default', tmp_path, []) + run_subtest('test_default', tmp_path, [*IMAGE_COMPARISON_MODE]) @pytest.mark.skipif(not HASH_LIBRARY.exists(), reason="No hash library for this mpl version") def test_hash(tmp_path): - run_subtest('test_hash', tmp_path, [HASH_LIBRARY_FLAG]) - - -@pytest.mark.skipif(not HASH_LIBRARY.exists(), reason="No hash library for this mpl version") -def test_hybrid(tmp_path): - run_subtest('test_hybrid', tmp_path, [HASH_LIBRARY_FLAG, BASELINE_IMAGES_FLAG_ABS]) + run_subtest('test_hash', tmp_path, [HASH_LIBRARY_FLAG, *HASH_COMPARISON_MODE]) @pytest.mark.skipif(not HASH_LIBRARY.exists(), reason="No hash library for this mpl version") @@ -170,15 +198,16 @@ def test_html(tmp_path): @pytest.mark.skipif(not HASH_LIBRARY.exists(), reason="No hash library for this mpl version") def test_html_hashes_only(tmp_path): - run_subtest('test_html_hashes_only', tmp_path, [HASH_LIBRARY_FLAG], summaries=['html'], - has_result_hashes=True) + run_subtest('test_html_hashes_only', tmp_path, + [HASH_LIBRARY_FLAG, *HASH_COMPARISON_MODE], + summaries=['html'], has_result_hashes=True) assert (tmp_path / 'results' / 'fig_comparison.html').exists() assert (tmp_path / 'results' / 'extra.js').exists() assert (tmp_path / 'results' / 'styles.css').exists() def test_html_images_only(tmp_path): - run_subtest('test_html_images_only', tmp_path, [], summaries=['html']) + run_subtest('test_html_images_only', tmp_path, [*IMAGE_COMPARISON_MODE], summaries=['html']) assert (tmp_path / 'results' / 'fig_comparison.html').exists() assert (tmp_path / 'results' / 'extra.js').exists() assert (tmp_path / 'results' / 'styles.css').exists() @@ -204,7 +233,7 @@ def test_generate(tmp_path): def test_generate_images_only(tmp_path): # generating images; no testing run_subtest('test_generate_images_only', tmp_path, - [rf'--mpl-generate-path={tmp_path}'], xfail=False) + [rf'--mpl-generate-path={tmp_path}', *IMAGE_COMPARISON_MODE], xfail=False) @pytest.mark.skipif(not HASH_LIBRARY.exists(), reason="No hash library for this mpl version") @@ -229,7 +258,7 @@ def test_html_generate(tmp_path): def test_html_generate_images_only(tmp_path): # generating images; no testing run_subtest('test_html_generate_images_only', tmp_path, - [rf'--mpl-generate-path={tmp_path}'], + [rf'--mpl-generate-path={tmp_path}', *IMAGE_COMPARISON_MODE], summaries=['html'], xfail=False) assert (tmp_path / 'results' / 'fig_comparison.html').exists() @@ -248,6 +277,12 @@ def test_html_run_generate_hashes_only(tmp_path): # generating hashes; testing hashes run_subtest('test_html_hashes_only', tmp_path, [rf'--mpl-generate-hash-library={tmp_path / "test_hashes.json"}', - HASH_LIBRARY_FLAG], + HASH_LIBRARY_FLAG, *HASH_COMPARISON_MODE], summaries=['html'], has_result_hashes="test_hashes.json") assert (tmp_path / 'results' / 'fig_comparison.html').exists() + + +# Run a hybrid mode test last so if generating hash libraries, it includes all the hashes. +@pytest.mark.skipif(not HASH_LIBRARY.exists(), reason="No hash library for this mpl version") +def test_hybrid(tmp_path): + run_subtest('test_hybrid', tmp_path, [HASH_LIBRARY_FLAG, BASELINE_IMAGES_FLAG_ABS]) diff --git a/tox.ini b/tox.ini index 0460defe..bec14d22 100644 --- a/tox.ini +++ b/tox.ini @@ -11,7 +11,7 @@ requires = isolated_build = true [testenv] -passenv = DISPLAY WINDIR +passenv = DISPLAY WINDIR MPL_UPDATE_* setenv = MPLBACKEND = Agg changedir = .tmp/{envname} @@ -26,7 +26,7 @@ deps = mpl32: matplotlib==3.2.* mpl33: matplotlib==3.3.* mpl34: matplotlib==3.4.* - mpl35: matplotlib==3.5.1 + mpl35: matplotlib==3.5.* mpldev: git+https://github.com/matplotlib/matplotlib.git#egg=matplotlib pytest54: pytest==5.4.* pytest60: pytest==6.0.* @@ -51,3 +51,8 @@ description = check code style, e.g. with flake8 deps = pre-commit commands = pre-commit run --all-files + +[pytest] +markers = + image: run test during image comparison only mode. + hash: run test during hash comparison only mode.