From 33d0a83224b3a2102c304ab31f7accdcb048b80a Mon Sep 17 00:00:00 2001 From: desert-sailor Date: Wed, 23 Jul 2025 14:31:06 +0800 Subject: [PATCH] Fix build error for setuptools 78.1.1 (cherry picked from commit 91bdd09bfd180976c14e0077e20725a47cd62e68) --- ...hes-during-tests-to-reduce-flakiness.patch | 762 ++++++++++++++++++ bp002-Update-environments-to-test.patch | 91 +++ bp003-Remove-duplicate-tests.patch | 482 +++++++++++ python-pytest-mpl.spec | 14 +- 4 files changed, 1345 insertions(+), 4 deletions(-) create mode 100644 bp001-Generate-baseline-hashes-during-tests-to-reduce-flakiness.patch create mode 100644 bp002-Update-environments-to-test.patch create mode 100644 bp003-Remove-duplicate-tests.patch diff --git a/bp001-Generate-baseline-hashes-during-tests-to-reduce-flakiness.patch b/bp001-Generate-baseline-hashes-during-tests-to-reduce-flakiness.patch new file mode 100644 index 0000000..7ccdcf8 --- /dev/null +++ b/bp001-Generate-baseline-hashes-during-tests-to-reduce-flakiness.patch @@ -0,0 +1,762 @@ +From 17facab86186852c350ef0e3a84f2a210c0a48f5 Mon Sep 17 00:00:00 2001 +From: Conor MacBride +Date: Wed, 6 Nov 2024 00:24:41 +0000 +Subject: [PATCH] Generate baseline hashes during tests to reduce flakiness + +--- + tests/helpers.py | 5 -- + tests/subtests/result_hashes/mpl33_ft261.json | 34 ------------ + tests/subtests/result_hashes/mpl34_ft261.json | 34 ------------ + tests/subtests/result_hashes/mpl35_ft261.json | 34 ------------ + tests/subtests/result_hashes/mpl36_ft261.json | 34 ------------ + tests/subtests/result_hashes/mpl37_ft261.json | 34 ------------ + tests/subtests/result_hashes/mpl38_ft261.json | 34 ------------ + .../subtests/subtest/hashes/mpl33_ft261.json | 30 ----------- + .../subtests/subtest/hashes/mpl34_ft261.json | 30 ----------- + .../subtests/subtest/hashes/mpl35_ft261.json | 30 ----------- + .../subtests/subtest/hashes/mpl36_ft261.json | 30 ----------- + .../subtests/subtest/hashes/mpl37_ft261.json | 30 ----------- + .../subtests/subtest/hashes/mpl38_ft261.json | 30 ----------- + tests/subtests/subtest/pytest.ini | 1 + + tests/subtests/test_subtest.py | 53 ++++++++++--------- + tests/test_pytest_mpl.py | 20 +++++-- + 16 files changed, 45 insertions(+), 418 deletions(-) + delete mode 100644 tests/subtests/result_hashes/mpl33_ft261.json + delete mode 100644 tests/subtests/result_hashes/mpl34_ft261.json + delete mode 100644 tests/subtests/result_hashes/mpl35_ft261.json + delete mode 100644 tests/subtests/result_hashes/mpl36_ft261.json + delete mode 100644 tests/subtests/result_hashes/mpl37_ft261.json + delete mode 100644 tests/subtests/result_hashes/mpl38_ft261.json + delete mode 100644 tests/subtests/subtest/hashes/mpl33_ft261.json + delete mode 100644 tests/subtests/subtest/hashes/mpl34_ft261.json + delete mode 100644 tests/subtests/subtest/hashes/mpl35_ft261.json + delete mode 100644 tests/subtests/subtest/hashes/mpl36_ft261.json + delete mode 100644 tests/subtests/subtest/hashes/mpl37_ft261.json + delete mode 100644 tests/subtests/subtest/hashes/mpl38_ft261.json + +diff --git a/tests/helpers.py b/tests/helpers.py +index ce412355..9eff19fd 100644 +--- a/tests/helpers.py ++++ b/tests/helpers.py +@@ -1,4 +1,3 @@ +-import sys + from pathlib import Path + + import matplotlib +@@ -20,15 +19,11 @@ def skip_if_format_unsupported(file_format, using_hashes=False): + pytest.skip('SVG comparison is only supported in Matplotlib 3.3 and above') + + if using_hashes: +- + if file_format == 'pdf' and MPL_VERSION < Version('2.1'): + pytest.skip('PDF hashes are only deterministic in Matplotlib 2.1 and above') + elif file_format == 'eps' and MPL_VERSION < Version('2.1'): + pytest.skip('EPS hashes are only deterministic in Matplotlib 2.1 and above') + +- if using_hashes and not sys.platform.startswith('linux'): +- pytest.skip('Hashes for vector graphics are only provided in the hash library for Linux') +- + if file_format != 'png' and file_format not in converter: + if file_format == 'svg': + pytest.skip('Comparing SVG files requires inkscape to be installed') +diff --git a/tests/subtests/result_hashes/mpl33_ft261.json b/tests/subtests/result_hashes/mpl33_ft261.json +deleted file mode 100644 +index 95904f0e..00000000 +--- a/tests/subtests/result_hashes/mpl33_ft261.json ++++ /dev/null +@@ -1,34 +0,0 @@ +-{ +- "subtests.subtest.test_classes.TestClass.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_classes.TestClass.test_hdiff_idiff_testclass": "2bb430367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hmatch_imatch_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hdiff_idiff_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hmatch_imatch_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hdiff_idiff_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithFixture.test_hmatch_imatch_testclasswithfixture": "ee0c290d66d17e4e40991c31eee0c55bd724922a3ecb66f7300b2ce8abf3d204", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_first": "3f8d2c1facdf6e34e43b4343abd888bd5ee9d2d451ce285e62bf0c65d6cdcdce", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_second": "9a6b008431f0b47a8866d87a9f1e9352fd73407a3ee2dd756a8ccbfa5a835a08", +- "subtests.subtest.test_functions.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", +- "subtests.subtest.test_functions.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", +- "subtests.subtest.test_functions.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", +- "subtests.subtest.test_functions.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", +- "subtests.subtest.test_functions.test_hdiff_imatch": "b92c5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", +- "subtests.subtest.test_functions.test_hdiff_idiff": "567f014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", +- "subtests.subtest.test_functions.test_hdiff_idiffshape": "b6673bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", +- "subtests.subtest.test_functions.test_hdiff_imissing": "e37bd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", +- "subtests.subtest.test_functions.test_hmissing_imatch": "592d12cc2d5749a6607bbf98d715b95c06a2af6572a7e298bcae349648b9997e", +- "subtests.subtest.test_functions.test_hmissing_idiff": "9e98dbd2027525c776212daa061180b4fc40ad12dfc2cdfe4b86694ede14e0c3", +- "subtests.subtest.test_functions.test_hmissing_idiffshape": "5534324f9da5c1c104c3ef3435dc6fa9792c0d0d8b762fad5d7f81abd91fbb89", +- "subtests.subtest.test_functions.test_hmissing_imissing": "2d15274f0e9b44f1c16e6b237710cd36a3de5c5b7596ef0e65e7a33ce4624cf4", +- "subtests.subtest.test_special.test_hdiff_imatch_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_idiff_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_imatch_savefig": "0a0514c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", +- "subtests.subtest.test_special.test_hdiff_imatch_style": "588ad00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", +- "subtests.subtest.test_special.test_hdiff_imatch_removetext": "a78ad7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a", +- "subtests.subtest.test_unittest.TestCase.test_hdiff_idiff_testclass": "2bb430367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_unittest.TestCase.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hdiff_idiff_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hmatch_imatch_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hdiff_idiff_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hmatch_imatch_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602" +-} +diff --git a/tests/subtests/result_hashes/mpl34_ft261.json b/tests/subtests/result_hashes/mpl34_ft261.json +deleted file mode 100644 +index 95904f0e..00000000 +--- a/tests/subtests/result_hashes/mpl34_ft261.json ++++ /dev/null +@@ -1,34 +0,0 @@ +-{ +- "subtests.subtest.test_classes.TestClass.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_classes.TestClass.test_hdiff_idiff_testclass": "2bb430367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hmatch_imatch_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hdiff_idiff_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hmatch_imatch_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hdiff_idiff_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithFixture.test_hmatch_imatch_testclasswithfixture": "ee0c290d66d17e4e40991c31eee0c55bd724922a3ecb66f7300b2ce8abf3d204", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_first": "3f8d2c1facdf6e34e43b4343abd888bd5ee9d2d451ce285e62bf0c65d6cdcdce", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_second": "9a6b008431f0b47a8866d87a9f1e9352fd73407a3ee2dd756a8ccbfa5a835a08", +- "subtests.subtest.test_functions.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", +- "subtests.subtest.test_functions.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", +- "subtests.subtest.test_functions.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", +- "subtests.subtest.test_functions.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", +- "subtests.subtest.test_functions.test_hdiff_imatch": "b92c5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", +- "subtests.subtest.test_functions.test_hdiff_idiff": "567f014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", +- "subtests.subtest.test_functions.test_hdiff_idiffshape": "b6673bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", +- "subtests.subtest.test_functions.test_hdiff_imissing": "e37bd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", +- "subtests.subtest.test_functions.test_hmissing_imatch": "592d12cc2d5749a6607bbf98d715b95c06a2af6572a7e298bcae349648b9997e", +- "subtests.subtest.test_functions.test_hmissing_idiff": "9e98dbd2027525c776212daa061180b4fc40ad12dfc2cdfe4b86694ede14e0c3", +- "subtests.subtest.test_functions.test_hmissing_idiffshape": "5534324f9da5c1c104c3ef3435dc6fa9792c0d0d8b762fad5d7f81abd91fbb89", +- "subtests.subtest.test_functions.test_hmissing_imissing": "2d15274f0e9b44f1c16e6b237710cd36a3de5c5b7596ef0e65e7a33ce4624cf4", +- "subtests.subtest.test_special.test_hdiff_imatch_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_idiff_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_imatch_savefig": "0a0514c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", +- "subtests.subtest.test_special.test_hdiff_imatch_style": "588ad00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", +- "subtests.subtest.test_special.test_hdiff_imatch_removetext": "a78ad7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a", +- "subtests.subtest.test_unittest.TestCase.test_hdiff_idiff_testclass": "2bb430367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_unittest.TestCase.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hdiff_idiff_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hmatch_imatch_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hdiff_idiff_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hmatch_imatch_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602" +-} +diff --git a/tests/subtests/result_hashes/mpl35_ft261.json b/tests/subtests/result_hashes/mpl35_ft261.json +deleted file mode 100644 +index 95904f0e..00000000 +--- a/tests/subtests/result_hashes/mpl35_ft261.json ++++ /dev/null +@@ -1,34 +0,0 @@ +-{ +- "subtests.subtest.test_classes.TestClass.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_classes.TestClass.test_hdiff_idiff_testclass": "2bb430367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hmatch_imatch_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hdiff_idiff_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hmatch_imatch_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hdiff_idiff_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithFixture.test_hmatch_imatch_testclasswithfixture": "ee0c290d66d17e4e40991c31eee0c55bd724922a3ecb66f7300b2ce8abf3d204", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_first": "3f8d2c1facdf6e34e43b4343abd888bd5ee9d2d451ce285e62bf0c65d6cdcdce", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_second": "9a6b008431f0b47a8866d87a9f1e9352fd73407a3ee2dd756a8ccbfa5a835a08", +- "subtests.subtest.test_functions.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", +- "subtests.subtest.test_functions.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", +- "subtests.subtest.test_functions.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", +- "subtests.subtest.test_functions.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", +- "subtests.subtest.test_functions.test_hdiff_imatch": "b92c5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", +- "subtests.subtest.test_functions.test_hdiff_idiff": "567f014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", +- "subtests.subtest.test_functions.test_hdiff_idiffshape": "b6673bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", +- "subtests.subtest.test_functions.test_hdiff_imissing": "e37bd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", +- "subtests.subtest.test_functions.test_hmissing_imatch": "592d12cc2d5749a6607bbf98d715b95c06a2af6572a7e298bcae349648b9997e", +- "subtests.subtest.test_functions.test_hmissing_idiff": "9e98dbd2027525c776212daa061180b4fc40ad12dfc2cdfe4b86694ede14e0c3", +- "subtests.subtest.test_functions.test_hmissing_idiffshape": "5534324f9da5c1c104c3ef3435dc6fa9792c0d0d8b762fad5d7f81abd91fbb89", +- "subtests.subtest.test_functions.test_hmissing_imissing": "2d15274f0e9b44f1c16e6b237710cd36a3de5c5b7596ef0e65e7a33ce4624cf4", +- "subtests.subtest.test_special.test_hdiff_imatch_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_idiff_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_imatch_savefig": "0a0514c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", +- "subtests.subtest.test_special.test_hdiff_imatch_style": "588ad00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", +- "subtests.subtest.test_special.test_hdiff_imatch_removetext": "a78ad7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a", +- "subtests.subtest.test_unittest.TestCase.test_hdiff_idiff_testclass": "2bb430367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_unittest.TestCase.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hdiff_idiff_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hmatch_imatch_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hdiff_idiff_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hmatch_imatch_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602" +-} +diff --git a/tests/subtests/result_hashes/mpl36_ft261.json b/tests/subtests/result_hashes/mpl36_ft261.json +deleted file mode 100644 +index 95904f0e..00000000 +--- a/tests/subtests/result_hashes/mpl36_ft261.json ++++ /dev/null +@@ -1,34 +0,0 @@ +-{ +- "subtests.subtest.test_classes.TestClass.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_classes.TestClass.test_hdiff_idiff_testclass": "2bb430367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hmatch_imatch_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hdiff_idiff_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hmatch_imatch_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hdiff_idiff_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithFixture.test_hmatch_imatch_testclasswithfixture": "ee0c290d66d17e4e40991c31eee0c55bd724922a3ecb66f7300b2ce8abf3d204", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_first": "3f8d2c1facdf6e34e43b4343abd888bd5ee9d2d451ce285e62bf0c65d6cdcdce", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_second": "9a6b008431f0b47a8866d87a9f1e9352fd73407a3ee2dd756a8ccbfa5a835a08", +- "subtests.subtest.test_functions.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", +- "subtests.subtest.test_functions.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", +- "subtests.subtest.test_functions.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", +- "subtests.subtest.test_functions.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", +- "subtests.subtest.test_functions.test_hdiff_imatch": "b92c5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", +- "subtests.subtest.test_functions.test_hdiff_idiff": "567f014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", +- "subtests.subtest.test_functions.test_hdiff_idiffshape": "b6673bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", +- "subtests.subtest.test_functions.test_hdiff_imissing": "e37bd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", +- "subtests.subtest.test_functions.test_hmissing_imatch": "592d12cc2d5749a6607bbf98d715b95c06a2af6572a7e298bcae349648b9997e", +- "subtests.subtest.test_functions.test_hmissing_idiff": "9e98dbd2027525c776212daa061180b4fc40ad12dfc2cdfe4b86694ede14e0c3", +- "subtests.subtest.test_functions.test_hmissing_idiffshape": "5534324f9da5c1c104c3ef3435dc6fa9792c0d0d8b762fad5d7f81abd91fbb89", +- "subtests.subtest.test_functions.test_hmissing_imissing": "2d15274f0e9b44f1c16e6b237710cd36a3de5c5b7596ef0e65e7a33ce4624cf4", +- "subtests.subtest.test_special.test_hdiff_imatch_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_idiff_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_imatch_savefig": "0a0514c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", +- "subtests.subtest.test_special.test_hdiff_imatch_style": "588ad00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", +- "subtests.subtest.test_special.test_hdiff_imatch_removetext": "a78ad7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a", +- "subtests.subtest.test_unittest.TestCase.test_hdiff_idiff_testclass": "2bb430367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_unittest.TestCase.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hdiff_idiff_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hmatch_imatch_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hdiff_idiff_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hmatch_imatch_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602" +-} +diff --git a/tests/subtests/result_hashes/mpl37_ft261.json b/tests/subtests/result_hashes/mpl37_ft261.json +deleted file mode 100644 +index 95904f0e..00000000 +--- a/tests/subtests/result_hashes/mpl37_ft261.json ++++ /dev/null +@@ -1,34 +0,0 @@ +-{ +- "subtests.subtest.test_classes.TestClass.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_classes.TestClass.test_hdiff_idiff_testclass": "2bb430367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hmatch_imatch_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hdiff_idiff_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hmatch_imatch_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hdiff_idiff_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithFixture.test_hmatch_imatch_testclasswithfixture": "ee0c290d66d17e4e40991c31eee0c55bd724922a3ecb66f7300b2ce8abf3d204", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_first": "3f8d2c1facdf6e34e43b4343abd888bd5ee9d2d451ce285e62bf0c65d6cdcdce", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_second": "9a6b008431f0b47a8866d87a9f1e9352fd73407a3ee2dd756a8ccbfa5a835a08", +- "subtests.subtest.test_functions.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", +- "subtests.subtest.test_functions.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", +- "subtests.subtest.test_functions.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", +- "subtests.subtest.test_functions.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", +- "subtests.subtest.test_functions.test_hdiff_imatch": "b92c5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", +- "subtests.subtest.test_functions.test_hdiff_idiff": "567f014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", +- "subtests.subtest.test_functions.test_hdiff_idiffshape": "b6673bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", +- "subtests.subtest.test_functions.test_hdiff_imissing": "e37bd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", +- "subtests.subtest.test_functions.test_hmissing_imatch": "592d12cc2d5749a6607bbf98d715b95c06a2af6572a7e298bcae349648b9997e", +- "subtests.subtest.test_functions.test_hmissing_idiff": "9e98dbd2027525c776212daa061180b4fc40ad12dfc2cdfe4b86694ede14e0c3", +- "subtests.subtest.test_functions.test_hmissing_idiffshape": "5534324f9da5c1c104c3ef3435dc6fa9792c0d0d8b762fad5d7f81abd91fbb89", +- "subtests.subtest.test_functions.test_hmissing_imissing": "2d15274f0e9b44f1c16e6b237710cd36a3de5c5b7596ef0e65e7a33ce4624cf4", +- "subtests.subtest.test_special.test_hdiff_imatch_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_idiff_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_imatch_savefig": "0a0514c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", +- "subtests.subtest.test_special.test_hdiff_imatch_style": "588ad00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", +- "subtests.subtest.test_special.test_hdiff_imatch_removetext": "a78ad7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a", +- "subtests.subtest.test_unittest.TestCase.test_hdiff_idiff_testclass": "2bb430367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_unittest.TestCase.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hdiff_idiff_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hmatch_imatch_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hdiff_idiff_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hmatch_imatch_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602" +-} +diff --git a/tests/subtests/result_hashes/mpl38_ft261.json b/tests/subtests/result_hashes/mpl38_ft261.json +deleted file mode 100644 +index 95904f0e..00000000 +--- a/tests/subtests/result_hashes/mpl38_ft261.json ++++ /dev/null +@@ -1,34 +0,0 @@ +-{ +- "subtests.subtest.test_classes.TestClass.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_classes.TestClass.test_hdiff_idiff_testclass": "2bb430367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hmatch_imatch_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hdiff_idiff_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hmatch_imatch_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hdiff_idiff_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithFixture.test_hmatch_imatch_testclasswithfixture": "ee0c290d66d17e4e40991c31eee0c55bd724922a3ecb66f7300b2ce8abf3d204", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_first": "3f8d2c1facdf6e34e43b4343abd888bd5ee9d2d451ce285e62bf0c65d6cdcdce", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_second": "9a6b008431f0b47a8866d87a9f1e9352fd73407a3ee2dd756a8ccbfa5a835a08", +- "subtests.subtest.test_functions.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", +- "subtests.subtest.test_functions.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", +- "subtests.subtest.test_functions.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", +- "subtests.subtest.test_functions.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", +- "subtests.subtest.test_functions.test_hdiff_imatch": "b92c5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", +- "subtests.subtest.test_functions.test_hdiff_idiff": "567f014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", +- "subtests.subtest.test_functions.test_hdiff_idiffshape": "b6673bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", +- "subtests.subtest.test_functions.test_hdiff_imissing": "e37bd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", +- "subtests.subtest.test_functions.test_hmissing_imatch": "592d12cc2d5749a6607bbf98d715b95c06a2af6572a7e298bcae349648b9997e", +- "subtests.subtest.test_functions.test_hmissing_idiff": "9e98dbd2027525c776212daa061180b4fc40ad12dfc2cdfe4b86694ede14e0c3", +- "subtests.subtest.test_functions.test_hmissing_idiffshape": "5534324f9da5c1c104c3ef3435dc6fa9792c0d0d8b762fad5d7f81abd91fbb89", +- "subtests.subtest.test_functions.test_hmissing_imissing": "2d15274f0e9b44f1c16e6b237710cd36a3de5c5b7596ef0e65e7a33ce4624cf4", +- "subtests.subtest.test_special.test_hdiff_imatch_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_idiff_tolerance": "f26ca66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_imatch_savefig": "0a0514c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", +- "subtests.subtest.test_special.test_hdiff_imatch_style": "588ad00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", +- "subtests.subtest.test_special.test_hdiff_imatch_removetext": "a78ad7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a", +- "subtests.subtest.test_unittest.TestCase.test_hdiff_idiff_testclass": "2bb430367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_unittest.TestCase.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hdiff_idiff_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hmatch_imatch_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hdiff_idiff_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hmatch_imatch_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602" +-} +diff --git a/tests/subtests/subtest/hashes/mpl33_ft261.json b/tests/subtests/subtest/hashes/mpl33_ft261.json +deleted file mode 100644 +index ed5bb0e0..00000000 +--- a/tests/subtests/subtest/hashes/mpl33_ft261.json ++++ /dev/null +@@ -1,30 +0,0 @@ +-{ +- "subtests.subtest.test_classes.TestClass.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_classes.TestClass.test_hdiff_idiff_testclass": "d1ff30367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hmatch_imatch_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hdiff_idiff_testclasswithsetupmethod": "d1ff0363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hmatch_imatch_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hdiff_idiff_testclasswithsetupclass": "d1ffa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithFixture.test_hmatch_imatch_testclasswithfixture": "ee0c290d66d17e4e40991c31eee0c55bd724922a3ecb66f7300b2ce8abf3d204", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_first": "3f8d2c1facdf6e34e43b4343abd888bd5ee9d2d451ce285e62bf0c65d6cdcdce", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_second": "9a6b008431f0b47a8866d87a9f1e9352fd73407a3ee2dd756a8ccbfa5a835a08", +- "subtests.subtest.test_functions.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", +- "subtests.subtest.test_functions.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", +- "subtests.subtest.test_functions.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", +- "subtests.subtest.test_functions.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", +- "subtests.subtest.test_functions.test_hdiff_imatch": "d1ff5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", +- "subtests.subtest.test_functions.test_hdiff_idiff": "d1ff014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", +- "subtests.subtest.test_functions.test_hdiff_idiffshape": "d1ff3bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", +- "subtests.subtest.test_functions.test_hdiff_imissing": "d1ffd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", +- "subtests.subtest.test_special.test_hdiff_imatch_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_idiff_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_imatch_savefig": "d1ff14c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", +- "subtests.subtest.test_special.test_hdiff_imatch_style": "d1ffd00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", +- "subtests.subtest.test_special.test_hdiff_imatch_removetext": "d1ffd7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a", +- "subtests.subtest.test_unittest.TestCase.test_hdiff_idiff_testclass": "d1ff30367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_unittest.TestCase.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hdiff_idiff_testcasewithsetup": "d1ff0363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hmatch_imatch_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hdiff_idiff_testcasewithsetupclass": "d1ff6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hmatch_imatch_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602" +-} +diff --git a/tests/subtests/subtest/hashes/mpl34_ft261.json b/tests/subtests/subtest/hashes/mpl34_ft261.json +deleted file mode 100644 +index ed5bb0e0..00000000 +--- a/tests/subtests/subtest/hashes/mpl34_ft261.json ++++ /dev/null +@@ -1,30 +0,0 @@ +-{ +- "subtests.subtest.test_classes.TestClass.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_classes.TestClass.test_hdiff_idiff_testclass": "d1ff30367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hmatch_imatch_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hdiff_idiff_testclasswithsetupmethod": "d1ff0363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hmatch_imatch_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hdiff_idiff_testclasswithsetupclass": "d1ffa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithFixture.test_hmatch_imatch_testclasswithfixture": "ee0c290d66d17e4e40991c31eee0c55bd724922a3ecb66f7300b2ce8abf3d204", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_first": "3f8d2c1facdf6e34e43b4343abd888bd5ee9d2d451ce285e62bf0c65d6cdcdce", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_second": "9a6b008431f0b47a8866d87a9f1e9352fd73407a3ee2dd756a8ccbfa5a835a08", +- "subtests.subtest.test_functions.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", +- "subtests.subtest.test_functions.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", +- "subtests.subtest.test_functions.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", +- "subtests.subtest.test_functions.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", +- "subtests.subtest.test_functions.test_hdiff_imatch": "d1ff5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", +- "subtests.subtest.test_functions.test_hdiff_idiff": "d1ff014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", +- "subtests.subtest.test_functions.test_hdiff_idiffshape": "d1ff3bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", +- "subtests.subtest.test_functions.test_hdiff_imissing": "d1ffd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", +- "subtests.subtest.test_special.test_hdiff_imatch_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_idiff_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_imatch_savefig": "d1ff14c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", +- "subtests.subtest.test_special.test_hdiff_imatch_style": "d1ffd00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", +- "subtests.subtest.test_special.test_hdiff_imatch_removetext": "d1ffd7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a", +- "subtests.subtest.test_unittest.TestCase.test_hdiff_idiff_testclass": "d1ff30367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_unittest.TestCase.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hdiff_idiff_testcasewithsetup": "d1ff0363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hmatch_imatch_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hdiff_idiff_testcasewithsetupclass": "d1ff6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hmatch_imatch_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602" +-} +diff --git a/tests/subtests/subtest/hashes/mpl35_ft261.json b/tests/subtests/subtest/hashes/mpl35_ft261.json +deleted file mode 100644 +index ed5bb0e0..00000000 +--- a/tests/subtests/subtest/hashes/mpl35_ft261.json ++++ /dev/null +@@ -1,30 +0,0 @@ +-{ +- "subtests.subtest.test_classes.TestClass.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_classes.TestClass.test_hdiff_idiff_testclass": "d1ff30367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hmatch_imatch_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hdiff_idiff_testclasswithsetupmethod": "d1ff0363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hmatch_imatch_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hdiff_idiff_testclasswithsetupclass": "d1ffa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithFixture.test_hmatch_imatch_testclasswithfixture": "ee0c290d66d17e4e40991c31eee0c55bd724922a3ecb66f7300b2ce8abf3d204", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_first": "3f8d2c1facdf6e34e43b4343abd888bd5ee9d2d451ce285e62bf0c65d6cdcdce", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_second": "9a6b008431f0b47a8866d87a9f1e9352fd73407a3ee2dd756a8ccbfa5a835a08", +- "subtests.subtest.test_functions.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", +- "subtests.subtest.test_functions.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", +- "subtests.subtest.test_functions.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", +- "subtests.subtest.test_functions.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", +- "subtests.subtest.test_functions.test_hdiff_imatch": "d1ff5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", +- "subtests.subtest.test_functions.test_hdiff_idiff": "d1ff014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", +- "subtests.subtest.test_functions.test_hdiff_idiffshape": "d1ff3bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", +- "subtests.subtest.test_functions.test_hdiff_imissing": "d1ffd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", +- "subtests.subtest.test_special.test_hdiff_imatch_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_idiff_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_imatch_savefig": "d1ff14c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", +- "subtests.subtest.test_special.test_hdiff_imatch_style": "d1ffd00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", +- "subtests.subtest.test_special.test_hdiff_imatch_removetext": "d1ffd7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a", +- "subtests.subtest.test_unittest.TestCase.test_hdiff_idiff_testclass": "d1ff30367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_unittest.TestCase.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hdiff_idiff_testcasewithsetup": "d1ff0363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hmatch_imatch_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hdiff_idiff_testcasewithsetupclass": "d1ff6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hmatch_imatch_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602" +-} +diff --git a/tests/subtests/subtest/hashes/mpl36_ft261.json b/tests/subtests/subtest/hashes/mpl36_ft261.json +deleted file mode 100644 +index ed5bb0e0..00000000 +--- a/tests/subtests/subtest/hashes/mpl36_ft261.json ++++ /dev/null +@@ -1,30 +0,0 @@ +-{ +- "subtests.subtest.test_classes.TestClass.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_classes.TestClass.test_hdiff_idiff_testclass": "d1ff30367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hmatch_imatch_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hdiff_idiff_testclasswithsetupmethod": "d1ff0363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hmatch_imatch_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hdiff_idiff_testclasswithsetupclass": "d1ffa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithFixture.test_hmatch_imatch_testclasswithfixture": "ee0c290d66d17e4e40991c31eee0c55bd724922a3ecb66f7300b2ce8abf3d204", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_first": "3f8d2c1facdf6e34e43b4343abd888bd5ee9d2d451ce285e62bf0c65d6cdcdce", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_second": "9a6b008431f0b47a8866d87a9f1e9352fd73407a3ee2dd756a8ccbfa5a835a08", +- "subtests.subtest.test_functions.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", +- "subtests.subtest.test_functions.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", +- "subtests.subtest.test_functions.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", +- "subtests.subtest.test_functions.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", +- "subtests.subtest.test_functions.test_hdiff_imatch": "d1ff5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", +- "subtests.subtest.test_functions.test_hdiff_idiff": "d1ff014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", +- "subtests.subtest.test_functions.test_hdiff_idiffshape": "d1ff3bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", +- "subtests.subtest.test_functions.test_hdiff_imissing": "d1ffd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", +- "subtests.subtest.test_special.test_hdiff_imatch_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_idiff_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_imatch_savefig": "d1ff14c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", +- "subtests.subtest.test_special.test_hdiff_imatch_style": "d1ffd00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", +- "subtests.subtest.test_special.test_hdiff_imatch_removetext": "d1ffd7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a", +- "subtests.subtest.test_unittest.TestCase.test_hdiff_idiff_testclass": "d1ff30367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_unittest.TestCase.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hdiff_idiff_testcasewithsetup": "d1ff0363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hmatch_imatch_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hdiff_idiff_testcasewithsetupclass": "d1ff6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hmatch_imatch_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602" +-} +diff --git a/tests/subtests/subtest/hashes/mpl37_ft261.json b/tests/subtests/subtest/hashes/mpl37_ft261.json +deleted file mode 100644 +index ed5bb0e0..00000000 +--- a/tests/subtests/subtest/hashes/mpl37_ft261.json ++++ /dev/null +@@ -1,30 +0,0 @@ +-{ +- "subtests.subtest.test_classes.TestClass.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_classes.TestClass.test_hdiff_idiff_testclass": "d1ff30367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hmatch_imatch_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hdiff_idiff_testclasswithsetupmethod": "d1ff0363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hmatch_imatch_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hdiff_idiff_testclasswithsetupclass": "d1ffa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithFixture.test_hmatch_imatch_testclasswithfixture": "ee0c290d66d17e4e40991c31eee0c55bd724922a3ecb66f7300b2ce8abf3d204", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_first": "3f8d2c1facdf6e34e43b4343abd888bd5ee9d2d451ce285e62bf0c65d6cdcdce", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_second": "9a6b008431f0b47a8866d87a9f1e9352fd73407a3ee2dd756a8ccbfa5a835a08", +- "subtests.subtest.test_functions.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", +- "subtests.subtest.test_functions.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", +- "subtests.subtest.test_functions.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", +- "subtests.subtest.test_functions.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", +- "subtests.subtest.test_functions.test_hdiff_imatch": "d1ff5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", +- "subtests.subtest.test_functions.test_hdiff_idiff": "d1ff014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", +- "subtests.subtest.test_functions.test_hdiff_idiffshape": "d1ff3bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", +- "subtests.subtest.test_functions.test_hdiff_imissing": "d1ffd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", +- "subtests.subtest.test_special.test_hdiff_imatch_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_idiff_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_imatch_savefig": "d1ff14c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", +- "subtests.subtest.test_special.test_hdiff_imatch_style": "d1ffd00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", +- "subtests.subtest.test_special.test_hdiff_imatch_removetext": "d1ffd7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a", +- "subtests.subtest.test_unittest.TestCase.test_hdiff_idiff_testclass": "d1ff30367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_unittest.TestCase.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hdiff_idiff_testcasewithsetup": "d1ff0363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hmatch_imatch_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hdiff_idiff_testcasewithsetupclass": "d1ff6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hmatch_imatch_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602" +-} +diff --git a/tests/subtests/subtest/hashes/mpl38_ft261.json b/tests/subtests/subtest/hashes/mpl38_ft261.json +deleted file mode 100644 +index ed5bb0e0..00000000 +--- a/tests/subtests/subtest/hashes/mpl38_ft261.json ++++ /dev/null +@@ -1,30 +0,0 @@ +-{ +- "subtests.subtest.test_classes.TestClass.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_classes.TestClass.test_hdiff_idiff_testclass": "d1ff30367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hmatch_imatch_testclasswithsetupmethod": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupMethod.test_hdiff_idiff_testclasswithsetupmethod": "d1ff0363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hmatch_imatch_testclasswithsetupclass": "8c4fa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithSetupClass.test_hdiff_idiff_testclasswithsetupclass": "d1ffa5f95b2a2b424ad9e441b6aeeced9d51a52fe7f19870eedcdfdcf6d39818", +- "subtests.subtest.test_classes.TestClassWithFixture.test_hmatch_imatch_testclasswithfixture": "ee0c290d66d17e4e40991c31eee0c55bd724922a3ecb66f7300b2ce8abf3d204", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_first": "3f8d2c1facdf6e34e43b4343abd888bd5ee9d2d451ce285e62bf0c65d6cdcdce", +- "subtests.subtest.test_classes.TestMultipleFigures.test_hmatch_imatch_multiplefigures_second": "9a6b008431f0b47a8866d87a9f1e9352fd73407a3ee2dd756a8ccbfa5a835a08", +- "subtests.subtest.test_functions.test_hmatch_imatch": "d21af7f9a2c1cbaf3c9bca3598f1b32b36891ac9d5db47e81a7bcaa342f7d4fc", +- "subtests.subtest.test_functions.test_hmatch_idiff": "085fcb22e9d6cfbb2bb6e0efbf749fa598be27e837c348130adc21a6dc2fc5fe", +- "subtests.subtest.test_functions.test_hmatch_idiffshape": "a8f866c3b765e274c217d49ba72c9ce3bd4b316491ffd34a124ef03643ce45b8", +- "subtests.subtest.test_functions.test_hmatch_imissing": "f06e910b6c80db28e1eb08fdb8e1ab9211434498c134d00820900a13a4f2568c", +- "subtests.subtest.test_functions.test_hdiff_imatch": "d1ff5c6bc631fbdaffa23d3d57fc027768fcded889f3b269941da859110ce282", +- "subtests.subtest.test_functions.test_hdiff_idiff": "d1ff014f73cdfea555e46a29aaac43c4394c3c4c21998e54971edb773eee6c95", +- "subtests.subtest.test_functions.test_hdiff_idiffshape": "d1ff3bafdcc8350c612bc925269fc4332dd9062a6399701067863b178568b219", +- "subtests.subtest.test_functions.test_hdiff_imissing": "d1ffd5868d14547557653c051d23d3fd48d198d3f59006dc5ba390433d6670ff", +- "subtests.subtest.test_special.test_hdiff_imatch_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_idiff_tolerance": "d1ffa66a7c02ae64c8b2512021e0450cbe64c084c9d5f7e2600a7342a559c0b1", +- "subtests.subtest.test_special.test_hdiff_imatch_savefig": "d1ff14c35f1da18de3f4ceb1901501e5a8a5a0d18eb8a7b4db5cfde170b57423", +- "subtests.subtest.test_special.test_hdiff_imatch_style": "d1ffd00c4b99c6087d04f84ca071a5997b4ecf76cf859ce3548634e67841a79b", +- "subtests.subtest.test_special.test_hdiff_imatch_removetext": "d1ffd7512c6d886262b1bcb4501374bfc61ef8569d24930b0258dab08e6eca9a", +- "subtests.subtest.test_unittest.TestCase.test_hdiff_idiff_testclass": "d1ff30367cdf04b7b5f3af8c50652964ff27def9fc0a75a68b4775ba1eb8e827", +- "subtests.subtest.test_unittest.TestCase.test_hmatch_imatch_testclass": "af966da7f2e57908211d559ff0a24a52c363c3fabca9e810138ad60e3fd2bcc9", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hdiff_idiff_testcasewithsetup": "d1ff0363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUp.test_hmatch_imatch_testcasewithsetup": "56d00363330cb7d959d6cfdc1335901716e841f54014cb6e657d1c4721384252", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hdiff_idiff_testcasewithsetupclass": "d1ff6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602", +- "subtests.subtest.test_unittest.TestCaseWithSetUpClass.test_hmatch_imatch_testcasewithsetupclass": "5f1e6e2b775a1b1d1e9e20a4d929586a9accb08b2fddaec8a24fb4acfc83c602" +-} +diff --git a/tests/subtests/subtest/pytest.ini b/tests/subtests/subtest/pytest.ini +index faaaaad6..6d956b14 100644 +--- a/tests/subtests/subtest/pytest.ini ++++ b/tests/subtests/subtest/pytest.ini +@@ -6,3 +6,4 @@ filterwarnings = + error + ignore:distutils Version classes are deprecated + ignore:the imp module is deprecated in favour of importlib ++ ignore:Auto-close\(\)ing of figures upon backend switching is deprecated:matplotlib._api.deprecation.MatplotlibDeprecationWarning +diff --git a/tests/subtests/test_subtest.py b/tests/subtests/test_subtest.py +index 6bf4c8d1..73f7c52e 100644 +--- a/tests/subtests/test_subtest.py ++++ b/tests/subtests/test_subtest.py +@@ -17,9 +17,7 @@ + MPL_VERSION = Version(matplotlib.__version__) + FTV = matplotlib.ft2font.__freetype_version__.replace('.', '') + VERSION_ID = f"mpl{MPL_VERSION.major}{MPL_VERSION.minor}_ft{FTV}" +-HASH_LIBRARY = Path(__file__).parent / 'subtest' / 'hashes' / (VERSION_ID + ".json") +-RESULT_LIBRARY = Path(__file__).parent / 'result_hashes' / (VERSION_ID + ".json") +-HASH_LIBRARY_FLAG = rf'--mpl-hash-library={HASH_LIBRARY}' ++HASH_LIBRARY_FLAG = r'--mpl-hash-library={hash_library}' + FULL_BASELINE_PATH = Path(__file__).parent / 'subtest' / 'baseline' + + BASELINE_IMAGES_FLAG_REL = ['--mpl-baseline-path=baseline', '--mpl-baseline-relative'] +@@ -50,7 +48,7 @@ + + + def run_subtest(baseline_summary_name, tmp_path, args, summaries=None, xfail=True, +- has_result_hashes=False, generating_hashes=False, ++ has_result_hashes=False, generating_hashes=False, testing_hashes=False, + update_baseline=UPDATE_BASELINE, update_summary=UPDATE_SUMMARY): + """ Run pytest (within pytest) and check JSON summary report. + +@@ -72,6 +70,8 @@ def run_subtest(baseline_summary_name, tmp_path, args, summaries=None, xfail=Tru + generating_hashes : bool, optional, default=False + Whether `--mpl-generate-hash-library` was specified and + both of `--mpl-hash-library` and `hash_library=` were not. ++ testing_hashes : bool, optional, default=False ++ Whether the subtest is comparing hashes and therefore needs baseline hashes generated. + """ + if update_baseline and update_summary: + raise ValueError("Cannot enable both `update_baseline` and `update_summary`.") +@@ -86,14 +86,28 @@ def run_subtest(baseline_summary_name, tmp_path, args, summaries=None, xfail=Tru + results_path = tmp_path / 'results' + results_path.mkdir() + ++ baseline_hash_library = tmp_path / 'hashes' / 'baseline.json' ++ expected_result_hash_library = tmp_path / 'hashes' / 'expected_result.json' ++ + # Configure the arguments to run the test + pytest_args = [sys.executable, '-m', 'pytest', str(TEST_FILE)] + mpl_args = ['--mpl', rf'--mpl-results-path={results_path.as_posix()}', + f'--mpl-generate-summary={summaries}'] + if update_baseline: + mpl_args += [rf'--mpl-generate-path={FULL_BASELINE_PATH}'] +- if HASH_LIBRARY.exists(): +- mpl_args += [rf'--mpl-generate-hash-library={HASH_LIBRARY}'] ++ args = [ ++ HASH_LIBRARY_FLAG.format(hash_library=baseline_hash_library) ++ if x == HASH_LIBRARY_FLAG else x ++ for x in args ++ ] ++ ++ if testing_hashes or has_result_hashes or generating_hashes: ++ hash_gen_args = [f'--mpl-generate-hash-library={expected_result_hash_library}'] ++ if " ".join(HASH_COMPARISON_MODE) in " ".join(args): ++ hash_gen_args += HASH_COMPARISON_MODE ++ subprocess.call(pytest_args + hash_gen_args) ++ shutil.copy(expected_result_hash_library, baseline_hash_library) ++ transform_hashes(baseline_hash_library) + + # Run the test and record exit status + status = subprocess.call(pytest_args + mpl_args + args) +@@ -102,9 +116,6 @@ def run_subtest(baseline_summary_name, tmp_path, args, summaries=None, xfail=Tru + if update_baseline: + assert status == 0 + transform_images(FULL_BASELINE_PATH) # Make image comparison tests fail correctly +- if HASH_LIBRARY.exists(): +- 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 + +@@ -135,7 +146,8 @@ def run_subtest(baseline_summary_name, tmp_path, args, summaries=None, xfail=Tru + + # Compare summaries + diff_summary(baseline_summary, result_summary, +- baseline_hash_library=HASH_LIBRARY, result_hash_library=RESULT_LIBRARY, ++ baseline_hash_library=baseline_hash_library, ++ result_hash_library=expected_result_hash_library, + generating_hashes=generating_hashes) + + # Ensure reported images exist +@@ -146,12 +158,12 @@ def run_subtest(baseline_summary_name, tmp_path, args, summaries=None, xfail=Tru + result_hash_file = tmp_path / 'results' / has_result_hashes + has_result_hashes = True # convert to bool after processing str + else: +- result_hash_file = tmp_path / 'results' / HASH_LIBRARY.name ++ result_hash_file = tmp_path / 'results' / 'baseline.json' + + # Compare the generated hash library to the expected hash library + if has_result_hashes: + assert result_hash_file.exists() +- with open(RESULT_LIBRARY, "r") as f: ++ with open(expected_result_hash_library, "r") as f: + baseline = json.load(f) + with open(result_hash_file, "r") as f: + result = json.load(f) +@@ -173,19 +185,18 @@ def 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, *HASH_COMPARISON_MODE]) ++ run_subtest('test_hash', tmp_path, ++ [HASH_LIBRARY_FLAG, *HASH_COMPARISON_MODE], ++ testing_hashes=True) + + +-@pytest.mark.skipif(not HASH_LIBRARY.exists(), reason="No hash library for this mpl version") + def test_results_always(tmp_path): + run_subtest('test_results_always', tmp_path, + [HASH_LIBRARY_FLAG, BASELINE_IMAGES_FLAG_ABS, '--mpl-results-always'], + has_result_hashes=True) + + +-@pytest.mark.skipif(not HASH_LIBRARY.exists(), reason="No hash library for this mpl version") + def test_html(tmp_path): + run_subtest('test_results_always', tmp_path, + [HASH_LIBRARY_FLAG, BASELINE_IMAGES_FLAG_ABS], summaries=['html'], +@@ -195,7 +206,6 @@ def test_html(tmp_path): + assert (tmp_path / 'results' / 'styles.css').exists() + + +-@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, *HASH_COMPARISON_MODE], +@@ -212,7 +222,6 @@ def test_html_images_only(tmp_path): + assert (tmp_path / 'results' / 'styles.css').exists() + + +-@pytest.mark.skipif(not HASH_LIBRARY.exists(), reason="No hash library for this mpl version") + def test_basic_html(tmp_path): + run_subtest('test_results_always', tmp_path, + [HASH_LIBRARY_FLAG, *BASELINE_IMAGES_FLAG_REL], summaries=['basic-html'], +@@ -220,7 +229,6 @@ def test_basic_html(tmp_path): + assert (tmp_path / 'results' / 'fig_comparison_basic.html').exists() + + +-@pytest.mark.skipif(not HASH_LIBRARY.exists(), reason="No hash library for this mpl version") + def test_generate(tmp_path): + # generating hashes and images; no testing + run_subtest('test_generate', tmp_path, +@@ -235,7 +243,6 @@ def test_generate_images_only(tmp_path): + [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") + def test_generate_hashes_only(tmp_path): + # generating hashes; testing images + run_subtest('test_generate_hashes_only', tmp_path, +@@ -243,7 +250,6 @@ def test_generate_hashes_only(tmp_path): + generating_hashes=True) + + +-@pytest.mark.skipif(not HASH_LIBRARY.exists(), reason="No hash library for this mpl version") + def test_html_generate(tmp_path): + # generating hashes and images; no testing + run_subtest('test_html_generate', tmp_path, +@@ -262,7 +268,6 @@ def test_html_generate_images_only(tmp_path): + assert (tmp_path / 'results' / 'fig_comparison.html').exists() + + +-@pytest.mark.skipif(not HASH_LIBRARY.exists(), reason="No hash library for this mpl version") + def test_html_generate_hashes_only(tmp_path): + # generating hashes; testing images + run_subtest('test_html_generate_hashes_only', tmp_path, +@@ -271,7 +276,6 @@ def test_html_generate_hashes_only(tmp_path): + assert (tmp_path / 'results' / 'fig_comparison.html').exists() + + +-@pytest.mark.skipif(not HASH_LIBRARY.exists(), reason="No hash library for this mpl version") + def test_html_run_generate_hashes_only(tmp_path): + # generating hashes; testing hashes + run_subtest('test_html_hashes_only', tmp_path, +@@ -282,6 +286,5 @@ def test_html_run_generate_hashes_only(tmp_path): + + + # 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]) ++ run_subtest('test_hybrid', tmp_path, [HASH_LIBRARY_FLAG, BASELINE_IMAGES_FLAG_ABS], testing_hashes=True) +diff --git a/tests/test_pytest_mpl.py b/tests/test_pytest_mpl.py +index e04cec93..221feae3 100644 +--- a/tests/test_pytest_mpl.py ++++ b/tests/test_pytest_mpl.py +@@ -668,14 +668,15 @@ def test_raises(): + @pytest.mark.parametrize('use_hash_library', (False, True)) + @pytest.mark.parametrize('passes', (False, True)) + @pytest.mark.parametrize("file_format", ['eps', 'pdf', 'png', 'svg']) +-def test_formats(pytester, use_hash_library, passes, file_format): ++def test_formats(pytester, tmp_path, use_hash_library, passes, file_format): + """ + Note that we don't test all possible formats as some do not compress well + and would bloat the baseline directory. + """ + skip_if_format_unsupported(file_format, using_hashes=use_hash_library) +- if use_hash_library and not hash_library.exists(): +- pytest.skip("No hash library for this mpl version") ++ ++ tmp_hash_library = tmp_path / f"hash_library_{file_format}.json" ++ tmp_hash_library.write_text("{}") + + pytester.makepyfile( + f""" +@@ -683,7 +684,7 @@ def test_formats(pytester, use_hash_library, passes, file_format): + import pytest + import matplotlib.pyplot as plt + @pytest.mark.mpl_image_compare(baseline_dir=r"{baseline_dir_abs}", +- {f'hash_library=r"{hash_library}",' if use_hash_library else ''} ++ {f'hash_library=r"{tmp_hash_library}",' if use_hash_library else ''} + tolerance={DEFAULT_TOLERANCE}, + deterministic=True, + savefig_kwargs={{'format': '{file_format}'}}) +@@ -694,6 +695,17 @@ def test_format_{file_format}(): + return fig + """ + ) ++ ++ if use_hash_library: ++ pytester.runpytest(f'--mpl-generate-hash-library={tmp_hash_library.as_posix()}', '-rs') ++ hash_data = json.loads(tmp_hash_library.read_text()) ++ assert len(hash_data[f"test_formats.test_format_{file_format}"]) == 64 ++ if not passes: ++ hash_data[f"test_formats.test_format_{file_format}"] = ( ++ "d1ff" + hash_data[f"test_formats.test_format_{file_format}"][4:] ++ ) ++ tmp_hash_library.write_text(json.dumps(hash_data)) ++ + result = pytester.runpytest('--mpl', '-rs') + if passes: + result.assert_outcomes(passed=1) diff --git a/bp002-Update-environments-to-test.patch b/bp002-Update-environments-to-test.patch new file mode 100644 index 0000000..e09814f --- /dev/null +++ b/bp002-Update-environments-to-test.patch @@ -0,0 +1,91 @@ +From ff907240f8c01cf2db680f9768ab2ead6e7a4a0b Mon Sep 17 00:00:00 2001 +From: Conor MacBride +Date: Wed, 6 Nov 2024 00:54:57 +0000 +Subject: [PATCH] update environments to test + +--- + tests/baseline/hashes/mpl22_ft261.json | 9 ------ + tests/subtests/subtest/pytest.ini | 2 +- + tests/test_pytest_mpl.py | 2 +- + tox.ini | 10 +++++-- + 6 files changed, 27 insertions(+), 37 deletions(-) + delete mode 100644 tests/baseline/hashes/mpl22_ft261.json + +diff --git a/tests/baseline/hashes/mpl22_ft261.json b/tests/baseline/hashes/mpl22_ft261.json +deleted file mode 100644 +index fbde756..0000000 +--- a/tests/baseline/hashes/mpl22_ft261.json ++++ /dev/null +@@ -1,9 +0,0 @@ +-{ +- "test_pytest_mpl.test_hash_succeeds": "e80557c8784fb920fb79b03b26dc072649a98811f00a8c212df8761e4351acde", +- "test.test_modified": "80e0ee6df7cf7d9d9407395a25af30beb8763e98820a7be972764899246d2cd7", +- "test.test_new": "80e0ee6df7cf7d9d9407395a25af30beb8763e98820a7be972764899246d2cd7", +- "test.test_unmodified": "80e0ee6df7cf7d9d9407395a25af30beb8763e98820a7be972764899246d2cd7", +- "test_formats.test_format_eps": "f8a0fbb33dcd473ef5cfdd69317db6eb58d64a7f5f3b5072e0de69aa9e201224", +- "test_formats.test_format_pdf": "8963ba9209080091c0961553bdf195cdcd0f2ba29081a122f9aad8e94c444aff", +- "test_formats.test_format_png": "d577a3c8c7550413d8d50bc26a68f3e8d9c35d4763c52cbcc15df4f61c8406b2" +-} +diff --git a/tests/subtests/subtest/pytest.ini b/tests/subtests/subtest/pytest.ini +index 6d956b1..cf0cae2 100644 +--- a/tests/subtests/subtest/pytest.ini ++++ b/tests/subtests/subtest/pytest.ini +@@ -6,4 +6,4 @@ filterwarnings = + error + ignore:distutils Version classes are deprecated + ignore:the imp module is deprecated in favour of importlib +- ignore:Auto-close\(\)ing of figures upon backend switching is deprecated:matplotlib._api.deprecation.MatplotlibDeprecationWarning ++ ignore:Auto-close\(\)ing of figures upon backend switching is deprecated +diff --git a/tests/test_pytest_mpl.py b/tests/test_pytest_mpl.py +index 221feae..75f93f6 100644 +--- a/tests/test_pytest_mpl.py ++++ b/tests/test_pytest_mpl.py +@@ -702,7 +702,7 @@ def test_format_{file_format}(): + assert len(hash_data[f"test_formats.test_format_{file_format}"]) == 64 + if not passes: + hash_data[f"test_formats.test_format_{file_format}"] = ( +- "d1ff" + hash_data[f"test_formats.test_format_{file_format}"][4:] ++ "d1ff" + hash_data[f"test_formats.test_format_{file_format}"][4:] + ) + tmp_hash_library.write_text(json.dumps(hash_data)) + +diff --git a/tox.ini b/tox.ini +index 450f49d..4f863f0 100644 +--- a/tox.ini ++++ b/tox.ini +@@ -19,20 +19,22 @@ setenv = + changedir = .tmp/{envname} + description = run tests + deps = +- py312: git+https://github.com/dateutil/dateutil.git#egg=python-dateutil + mpl20: matplotlib==2.0.* +- mpl20: nose + mpl21: matplotlib==2.1.* + mpl22: matplotlib==2.2.* ++ mpl22: numpy<2 + mpl30: matplotlib==3.0.* + mpl31: matplotlib==3.1.* ++ mpl31: numpy<2 + mpl32: matplotlib==3.2.* + mpl33: matplotlib==3.3.* ++ mpl33: numpy<2 + mpl34: matplotlib==3.4.* + mpl35: matplotlib==3.5.* + mpl36: matplotlib==3.6.* + mpl37: matplotlib==3.7.* + mpl38: matplotlib==3.8.* ++ mpl39: matplotlib==3.9.* + mpldev: matplotlib>=0.0.dev0 + pytest54: pytest==5.4.* + pytest60: pytest==6.0.* +@@ -43,6 +45,10 @@ deps = + pytest72: pytest==7.2.* + pytest73: pytest==7.3.* + pytest74: pytest==7.4.* ++ pytest80: pytest==8.0.* ++ pytest81: pytest==8.1.* ++ pytest82: pytest==8.2.* ++ pytest83: pytest==8.3.* + pytestdev: git+https://github.com/pytest-dev/pytest.git#egg=pytest + extras = + test diff --git a/bp003-Remove-duplicate-tests.patch b/bp003-Remove-duplicate-tests.patch new file mode 100644 index 0000000..ed3cdaa --- /dev/null +++ b/bp003-Remove-duplicate-tests.patch @@ -0,0 +1,482 @@ +From d415ba73abf0920186f59af0ad3d8e2f897e9e41 Mon Sep 17 00:00:00 2001 +From: Conor MacBride +Date: Fri, 6 Jun 2025 18:24:39 +0100 +Subject: [PATCH] remove duplicate tests + +--- + tests/baseline/hashes/mpl20_ft261.json | 7 - + tests/baseline/hashes/mpl21_ft261.json | 9 - + tests/baseline/hashes/mpl30_ft261.json | 9 - + tests/baseline/hashes/mpl31_ft261.json | 9 - + tests/baseline/hashes/mpl32_ft261.json | 9 - + tests/baseline/hashes/mpl33_ft261.json | 10 - + tests/baseline/hashes/mpl34_ft261.json | 10 - + tests/baseline/hashes/mpl35_ft261.json | 10 - + tests/baseline/hashes/mpl36_ft261.json | 10 - + tests/baseline/hashes/mpl37_ft261.json | 10 - + tests/baseline/hashes/mpl38_ft261.json | 10 - + tests/baseline/test_hash_lib.json | 5 - + tests/test_pytest_mpl.py | 241 +------------------------ + 13 files changed, 1 insertion(+), 348 deletions(-) + delete mode 100644 tests/baseline/hashes/mpl20_ft261.json + delete mode 100644 tests/baseline/hashes/mpl21_ft261.json + delete mode 100644 tests/baseline/hashes/mpl30_ft261.json + delete mode 100644 tests/baseline/hashes/mpl31_ft261.json + delete mode 100644 tests/baseline/hashes/mpl32_ft261.json + delete mode 100644 tests/baseline/hashes/mpl33_ft261.json + delete mode 100644 tests/baseline/hashes/mpl34_ft261.json + delete mode 100644 tests/baseline/hashes/mpl35_ft261.json + delete mode 100644 tests/baseline/hashes/mpl36_ft261.json + delete mode 100644 tests/baseline/hashes/mpl37_ft261.json + delete mode 100644 tests/baseline/hashes/mpl38_ft261.json + delete mode 100644 tests/baseline/test_hash_lib.json + +diff --git a/tests/baseline/hashes/mpl20_ft261.json b/tests/baseline/hashes/mpl20_ft261.json +deleted file mode 100644 +index 47c4eacf..00000000 +--- a/tests/baseline/hashes/mpl20_ft261.json ++++ /dev/null +@@ -1,7 +0,0 @@ +-{ +- "test_pytest_mpl.test_hash_succeeds": "480062c2239ed9d70e361d1a5b578dc2aa756971161ac6e7287b492ae6118c59", +- "test.test_modified": "54f6cf83d5b06fa2ecb7fa23d6e87898679178ef5d0dfdd2551a139f1932127b", +- "test.test_new": "54f6cf83d5b06fa2ecb7fa23d6e87898679178ef5d0dfdd2551a139f1932127b", +- "test.test_unmodified": "54f6cf83d5b06fa2ecb7fa23d6e87898679178ef5d0dfdd2551a139f1932127b", +- "test_formats.test_format_png": "480062c2239ed9d70e361d1a5b578dc2aa756971161ac6e7287b492ae6118c59" +-} +diff --git a/tests/baseline/hashes/mpl21_ft261.json b/tests/baseline/hashes/mpl21_ft261.json +deleted file mode 100644 +index 73286d52..00000000 +--- a/tests/baseline/hashes/mpl21_ft261.json ++++ /dev/null +@@ -1,9 +0,0 @@ +-{ +- "test_pytest_mpl.test_hash_succeeds": "17b65dd0247b0dfd8c1b4b079352414ae0fe03c0a3e79d63c8b8670d84d4098f", +- "test.test_modified": "14d326881467bc613e6504b87bd7d556a5e58668ff16b896fa3c15745cfb6336", +- "test.test_new": "14d326881467bc613e6504b87bd7d556a5e58668ff16b896fa3c15745cfb6336", +- "test.test_unmodified": "14d326881467bc613e6504b87bd7d556a5e58668ff16b896fa3c15745cfb6336", +- "test_formats.test_format_eps": "f8a0fbb33dcd473ef5cfdd69317db6eb58d64a7f5f3b5072e0de69aa9e201224", +- "test_formats.test_format_pdf": "82b2b58fc3a74591c85cdf2f06b2f72dfc154820fca98e7cfd5cb6904ed60b23", +- "test_formats.test_format_png": "d577a3c8c7550413d8d50bc26a68f3e8d9c35d4763c52cbcc15df4f61c8406b2" +-} +diff --git a/tests/baseline/hashes/mpl30_ft261.json b/tests/baseline/hashes/mpl30_ft261.json +deleted file mode 100644 +index b928fbbb..00000000 +--- a/tests/baseline/hashes/mpl30_ft261.json ++++ /dev/null +@@ -1,9 +0,0 @@ +-{ +- "test_pytest_mpl.test_hash_succeeds": "ffbe386e7bbd8c720a44d2775dfe207b6dcca9304d845b557071a72b8c31ce04", +- "test.test_modified": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test.test_new": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test.test_unmodified": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test_formats.test_format_eps": "4a605a2cd24101b9292151f5ab6d6846ba1b9c856cfda2bee6a142380e257b04", +- "test_formats.test_format_pdf": "34a9eb10372b35c0bd26472e8571a91031c055ab47cc3682ebc0c5e47c2b6cbd", +- "test_formats.test_format_png": "e73d228183ddfdced366191399cdecef9685d1248b852162f179750fc7b8b904" +-} +diff --git a/tests/baseline/hashes/mpl31_ft261.json b/tests/baseline/hashes/mpl31_ft261.json +deleted file mode 100644 +index 421a2ab6..00000000 +--- a/tests/baseline/hashes/mpl31_ft261.json ++++ /dev/null +@@ -1,9 +0,0 @@ +-{ +- "test_pytest_mpl.test_hash_succeeds": "d577a3c8c7550413d8d50bc26a68f3e8d9c35d4763c52cbcc15df4f61c8406b2", +- "test.test_modified": "b7a4b4a01e8cf66c805ab456bf3f807066acf86a11af669b557b2aa98586f2c0", +- "test.test_new": "b7a4b4a01e8cf66c805ab456bf3f807066acf86a11af669b557b2aa98586f2c0", +- "test.test_unmodified": "b7a4b4a01e8cf66c805ab456bf3f807066acf86a11af669b557b2aa98586f2c0", +- "test_formats.test_format_eps": "108a341ce450cb5adef9f41e27175da1809fcdeb64f17b13f58d3eb0efc08006", +- "test_formats.test_format_pdf": "8963ba9209080091c0961553bdf195cdcd0f2ba29081a122f9aad8e94c444aff", +- "test_formats.test_format_png": "d577a3c8c7550413d8d50bc26a68f3e8d9c35d4763c52cbcc15df4f61c8406b2" +-} +diff --git a/tests/baseline/hashes/mpl32_ft261.json b/tests/baseline/hashes/mpl32_ft261.json +deleted file mode 100644 +index b928fbbb..00000000 +--- a/tests/baseline/hashes/mpl32_ft261.json ++++ /dev/null +@@ -1,9 +0,0 @@ +-{ +- "test_pytest_mpl.test_hash_succeeds": "ffbe386e7bbd8c720a44d2775dfe207b6dcca9304d845b557071a72b8c31ce04", +- "test.test_modified": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test.test_new": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test.test_unmodified": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test_formats.test_format_eps": "4a605a2cd24101b9292151f5ab6d6846ba1b9c856cfda2bee6a142380e257b04", +- "test_formats.test_format_pdf": "34a9eb10372b35c0bd26472e8571a91031c055ab47cc3682ebc0c5e47c2b6cbd", +- "test_formats.test_format_png": "e73d228183ddfdced366191399cdecef9685d1248b852162f179750fc7b8b904" +-} +diff --git a/tests/baseline/hashes/mpl33_ft261.json b/tests/baseline/hashes/mpl33_ft261.json +deleted file mode 100644 +index 3fdf0240..00000000 +--- a/tests/baseline/hashes/mpl33_ft261.json ++++ /dev/null +@@ -1,10 +0,0 @@ +-{ +- "test_pytest_mpl.test_hash_succeeds": "e73d228183ddfdced366191399cdecef9685d1248b852162f179750fc7b8b904", +- "test.test_modified": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test.test_new": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test.test_unmodified": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test_formats.test_format_eps": "4a605a2cd24101b9292151f5ab6d6846ba1b9c856cfda2bee6a142380e257b04", +- "test_formats.test_format_pdf": "34a9eb10372b35c0bd26472e8571a91031c055ab47cc3682ebc0c5e47c2b6cbd", +- "test_formats.test_format_png": "e73d228183ddfdced366191399cdecef9685d1248b852162f179750fc7b8b904", +- "test_formats.test_format_svg": "b7f85f4b44e0c5871f5cc230b5a9042f2e73aa70384ab584d6cd8cde29344cd2" +-} +diff --git a/tests/baseline/hashes/mpl34_ft261.json b/tests/baseline/hashes/mpl34_ft261.json +deleted file mode 100644 +index 3fdf0240..00000000 +--- a/tests/baseline/hashes/mpl34_ft261.json ++++ /dev/null +@@ -1,10 +0,0 @@ +-{ +- "test_pytest_mpl.test_hash_succeeds": "e73d228183ddfdced366191399cdecef9685d1248b852162f179750fc7b8b904", +- "test.test_modified": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test.test_new": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test.test_unmodified": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test_formats.test_format_eps": "4a605a2cd24101b9292151f5ab6d6846ba1b9c856cfda2bee6a142380e257b04", +- "test_formats.test_format_pdf": "34a9eb10372b35c0bd26472e8571a91031c055ab47cc3682ebc0c5e47c2b6cbd", +- "test_formats.test_format_png": "e73d228183ddfdced366191399cdecef9685d1248b852162f179750fc7b8b904", +- "test_formats.test_format_svg": "b7f85f4b44e0c5871f5cc230b5a9042f2e73aa70384ab584d6cd8cde29344cd2" +-} +diff --git a/tests/baseline/hashes/mpl35_ft261.json b/tests/baseline/hashes/mpl35_ft261.json +deleted file mode 100644 +index 5abbe0d1..00000000 +--- a/tests/baseline/hashes/mpl35_ft261.json ++++ /dev/null +@@ -1,10 +0,0 @@ +-{ +- "test_pytest_mpl.test_hash_succeeds": "e73d228183ddfdced366191399cdecef9685d1248b852162f179750fc7b8b904", +- "test.test_modified": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test.test_new": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test.test_unmodified": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test_formats.test_format_eps": "eafdced089e99355680744ac0b03d0beb3908c356c15f42e3fb299fa96cce46b", +- "test_formats.test_format_pdf": "43ff9cc711b1d5e94bb904fc0ba872ea1c0a3fc778ed6eb705c5fc9305928c6b", +- "test_formats.test_format_png": "e73d228183ddfdced366191399cdecef9685d1248b852162f179750fc7b8b904", +- "test_formats.test_format_svg": "43a859a3642b9ce15578d25c6fd7d13edfee3a18457949a1ed4e841a83aa2942" +-} +diff --git a/tests/baseline/hashes/mpl36_ft261.json b/tests/baseline/hashes/mpl36_ft261.json +deleted file mode 100644 +index ef249c31..00000000 +--- a/tests/baseline/hashes/mpl36_ft261.json ++++ /dev/null +@@ -1,10 +0,0 @@ +-{ +- "test_pytest_mpl.test_hash_succeeds": "e73d228183ddfdced366191399cdecef9685d1248b852162f179750fc7b8b904", +- "test.test_modified": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test.test_new": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test.test_unmodified": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test_formats.test_format_eps": "f7a03867e26b8ae32ed6f22972dfdc571a974df80881dc24bb8f840681f2ac5f", +- "test_formats.test_format_pdf": "492152532625c1c4ea404854b75923c5dae0c253873b3715edba29d93b326d07", +- "test_formats.test_format_png": "e73d228183ddfdced366191399cdecef9685d1248b852162f179750fc7b8b904", +- "test_formats.test_format_svg": "4d1390489561a93e5413071632cfdab79ca1efbebf55337af2ab462cf1d4b9db" +-} +diff --git a/tests/baseline/hashes/mpl37_ft261.json b/tests/baseline/hashes/mpl37_ft261.json +deleted file mode 100644 +index d02bd2e4..00000000 +--- a/tests/baseline/hashes/mpl37_ft261.json ++++ /dev/null +@@ -1,10 +0,0 @@ +-{ +- "test_pytest_mpl.test_hash_succeeds": "e73d228183ddfdced366191399cdecef9685d1248b852162f179750fc7b8b904", +- "test.test_modified": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test.test_new": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test.test_unmodified": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test_formats.test_format_eps": "f7a03867e26b8ae32ed6f22972dfdc571a974df80881dc24bb8f840681f2ac5f", +- "test_formats.test_format_pdf": "492152532625c1c4ea404854b75923c5dae0c253873b3715edba29d93b326d07", +- "test_formats.test_format_png": "e73d228183ddfdced366191399cdecef9685d1248b852162f179750fc7b8b904", +- "test_formats.test_format_svg": "cb648df098fa1dd1ba0ed81e6498d31a152a43c47882e2503d093f83306ff403" +-} +diff --git a/tests/baseline/hashes/mpl38_ft261.json b/tests/baseline/hashes/mpl38_ft261.json +deleted file mode 100644 +index 7104aecc..00000000 +--- a/tests/baseline/hashes/mpl38_ft261.json ++++ /dev/null +@@ -1,10 +0,0 @@ +-{ +- "test_pytest_mpl.test_hash_succeeds": "e73d228183ddfdced366191399cdecef9685d1248b852162f179750fc7b8b904", +- "test.test_modified": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test.test_new": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test.test_unmodified": "025d344bc9667222abc27f2d746618bce9da8ae44fa9afa1220ac83f230b4e4e", +- "test_formats.test_format_eps": "f730e67270aeeb2a0bedee168d7c421b952cbf486ea371987cc4cea503a7d7ff", +- "test_formats.test_format_pdf": "492152532625c1c4ea404854b75923c5dae0c253873b3715edba29d93b326d07", +- "test_formats.test_format_png": "e73d228183ddfdced366191399cdecef9685d1248b852162f179750fc7b8b904", +- "test_formats.test_format_svg": "6309fd2c3f328ca3c5614c58c118780c94035eb3690fc4b95d1923699b28ff8e" +-} +diff --git a/tests/baseline/test_hash_lib.json b/tests/baseline/test_hash_lib.json +deleted file mode 100644 +index 03ca95e8..00000000 +--- a/tests/baseline/test_hash_lib.json ++++ /dev/null +@@ -1,5 +0,0 @@ +-{ +- "test_pytest_mpl.test_hash_succeeds": "cd01b7a39330033b18d54b507635236214cae5e24f9e09d84b56462a9ac81052", +- "test.test_hash_fails": "FAIL", +- "test.test_hash_fail_hybrid": "FAIL" +-} +diff --git a/tests/test_pytest_mpl.py b/tests/test_pytest_mpl.py +index 75f93f6f..62e6d794 100644 +--- a/tests/test_pytest_mpl.py ++++ b/tests/test_pytest_mpl.py +@@ -6,34 +6,17 @@ + from unittest import TestCase + + import matplotlib +-import matplotlib.ft2font + import matplotlib.pyplot as plt + import pytest + from helpers import skip_if_format_unsupported +-from packaging.version import Version +- +-MPL_VERSION = Version(matplotlib.__version__) + + baseline_dir = 'baseline' +- +-if MPL_VERSION >= Version('2'): +- baseline_subdir = '2.0.x' ++baseline_subdir = '2.0.x' + + baseline_dir_local = os.path.join(baseline_dir, baseline_subdir) + baseline_dir_remote = 'http://matplotlib.github.io/pytest-mpl/' + baseline_subdir + '/' + +-ftv = matplotlib.ft2font.__freetype_version__.replace('.', '') +-hash_filename = f"mpl{MPL_VERSION.major}{MPL_VERSION.minor}_ft{ftv}.json" +- +-if "+" in matplotlib.__version__: +- hash_filename = "mpldev.json" +- +-hash_library = (Path(__file__).parent / "baseline" / # noqa +- "hashes" / hash_filename) +- +-fail_hash_library = Path(__file__).parent / "baseline" / "test_hash_lib.json" + baseline_dir_abs = Path(__file__).parent / "baseline" / baseline_subdir +-hash_baseline_dir_abs = Path(__file__).parent / "baseline" / "hybrid" + + + WIN = sys.platform.startswith('win') +@@ -277,228 +260,6 @@ def test_succeeds(self): + return fig + + +-# hashlib +- +-@pytest.mark.skipif(not hash_library.exists(), reason="No hash library for this mpl version") +-@pytest.mark.mpl_image_compare(hash_library=hash_library, deterministic=True) +-def test_hash_succeeds(): +- fig = plt.figure() +- ax = fig.add_subplot(1, 1, 1) +- ax.plot([1, 2, 3]) +- return fig +- +- +-TEST_FAILING_HASH = rf""" +-import pytest +-import matplotlib.pyplot as plt +-@pytest.mark.mpl_image_compare(hash_library=r"{fail_hash_library}", deterministic=True) +-def test_hash_fails(): +- fig = plt.figure() +- ax = fig.add_subplot(1,1,1) +- ax.plot([1,2,2]) +- return fig +-""" +- +- +-def test_hash_fails(tmp_path): +- test_file = tmp_path / "test.py" +- test_file.write_text(TEST_FAILING_HASH, encoding="ascii") +- test_file = str(test_file) +- +- # If we use --mpl, it should detect that the figure is wrong +- output = assert_pytest_fails_with(['--mpl', test_file], "doesn't match hash FAIL in library") +- # We didn't specify a baseline dir so we shouldn't attempt to find one +- assert "Image file not found for comparison test" not in output, output +- +- # Check that the summary path is printed and that it exists. +- output = assert_pytest_fails_with(['--mpl', test_file, '--mpl-generate-summary=html'], +- "doesn't match hash FAIL in library") +- # We didn't specify a baseline dir so we shouldn't attempt to find one +- print_message = "A summary of test results can be found at:" +- assert print_message in output, output +- printed_path = Path(output.split(print_message)[1].strip()) +- assert printed_path.exists() +- +- # If we don't use --mpl option, the test should succeed +- code = call_pytest([test_file]) +- assert code == 0 +- +- +-TEST_FAILING_HYBRID = rf""" +-import pytest +-import matplotlib.pyplot as plt +-@pytest.mark.mpl_image_compare(hash_library=r"{fail_hash_library}", +- tolerance=2, deterministic=True) +-def test_hash_fail_hybrid(): +- fig = plt.figure() +- ax = fig.add_subplot(1,1,1) +- ax.plot([1,2,3]) +- return fig +-""" +- +- +-@pytest.mark.skipif(ftv != '261', reason="Incorrect freetype version for hash check") +-def test_hash_fail_hybrid(tmp_path): +- +- test_file = tmp_path / "test.py" +- test_file.write_text(TEST_FAILING_HYBRID, encoding="ascii") +- test_file = str(test_file) +- +- # Assert that image comparison runs and fails +- output = assert_pytest_fails_with(['--mpl', test_file, +- rf'--mpl-baseline-path={hash_baseline_dir_abs / "fail"}'], +- "doesn't match hash FAIL in library") +- assert "Error: Image files did not match." in output, output +- +- # Assert reports missing baseline image +- output = assert_pytest_fails_with(['--mpl', test_file, +- '--mpl-baseline-path=/not/a/path'], +- "doesn't match hash FAIL in library") +- assert "Image file not found for comparison test" in output, output +- +- # Assert reports image comparison succeeds +- output = assert_pytest_fails_with(['--mpl', test_file, +- rf'--mpl-baseline-path={hash_baseline_dir_abs / "succeed"}'], +- "doesn't match hash FAIL in library") +- assert "The comparison to the baseline image succeeded." in output, output +- +- # If we don't use --mpl option, the test should succeed +- code = call_pytest([test_file]) +- assert code == 0 +- +- +-TEST_FAILING_NEW_HASH = r""" +-import pytest +-import matplotlib.pyplot as plt +-@pytest.mark.mpl_image_compare +-def test_hash_fails(): +- fig = plt.figure() +- ax = fig.add_subplot(1,1,1) +- ax.plot([1,2,2]) +- return fig +-""" +- +- +-@pytest.mark.skipif(ftv != '261', reason="Incorrect freetype version for hash check") +-def test_hash_fail_new_hashes(tmp_path): +- # Check that the hash comparison fails even if a new hash file is requested +- test_file = tmp_path / "test.py" +- test_file.write_text(TEST_FAILING_NEW_HASH, encoding="ascii") +- test_file = str(test_file) +- +- # Assert that image comparison runs and fails +- assert_pytest_fails_with(['--mpl', test_file, +- f'--mpl-hash-library={fail_hash_library}'], +- "doesn't match hash FAIL in library") +- +- hash_file = tmp_path / "new_hashes.json" +- # Assert that image comparison runs and fails +- assert_pytest_fails_with(['--mpl', test_file, +- f'--mpl-hash-library={fail_hash_library}', +- f'--mpl-generate-hash-library={hash_file}'], +- "doesn't match hash FAIL") +- +- +-TEST_MISSING_HASH = """ +-import pytest +-import matplotlib.pyplot as plt +-@pytest.mark.mpl_image_compare +-def test_hash_missing(): +- fig = plt.figure() +- ax = fig.add_subplot(1,1,1) +- ax.plot([1,2,2]) +- return fig +-""" +- +- +-def test_hash_missing(tmp_path): +- test_file = tmp_path / "test.py" +- test_file.write_text(TEST_MISSING_HASH) +- test_file = str(test_file) +- +- # Assert fails if hash library missing +- assert_pytest_fails_with(['--mpl', test_file, '--mpl-hash-library=/not/a/path'], +- "Can't find hash library at path") +- +- # Assert fails if hash not in library +- assert_pytest_fails_with(['--mpl', test_file, f'--mpl-hash-library={fail_hash_library}'], +- "Hash for test 'test.test_hash_missing' not found in") +- +- # If we don't use --mpl option, the test should succeed +- code = call_pytest([test_file]) +- assert code == 0 +- +- +-TEST_RESULTS_ALWAYS = """ +-import pytest +-import matplotlib.pyplot as plt +-def plot(): +- fig = plt.figure() +- ax = fig.add_subplot(1,1,1) +- ax.plot([1,2,2]) +- return fig +-@pytest.mark.mpl_image_compare(deterministic=True) +-def test_modified(): return plot() +-@pytest.mark.mpl_image_compare(deterministic=True) +-def test_new(): return plot() +-@pytest.mark.mpl_image_compare(deterministic=True) +-def test_unmodified(): return plot() +-""" +- +- +-@pytest.mark.skipif(not hash_library.exists(), reason="No hash library for this mpl version") +-def test_results_always(tmp_path): +- test_file = tmp_path / "test.py" +- test_file.write_text(TEST_RESULTS_ALWAYS) +- results_path = tmp_path / "results" +- results_path.mkdir() +- +- code = call_pytest(['--mpl', str(test_file), '--mpl-results-always', +- rf'--mpl-hash-library={hash_library}', +- rf'--mpl-baseline-path={baseline_dir_abs}', +- '--mpl-generate-summary=html,json,basic-html', +- rf'--mpl-results-path={results_path}']) +- assert code == 0 # hashes correct, so all should pass +- +- # assert files for interactive HTML exist +- assert (results_path / "fig_comparison.html").exists() +- assert (results_path / "styles.css").exists() +- assert (results_path / "extra.js").exists() +- +- html = (results_path / "fig_comparison_basic.html").read_text() +- with (results_path / "results.json").open("r") as f: +- json_results = json.load(f) +- +- # each test, and which images should exist +- for test, exists in [ +- ('test_modified', ['baseline', 'result-failed-diff', 'result']), +- ('test_new', ['result']), +- ('test_unmodified', ['baseline', 'result']), +- ]: +- +- test_name = f'test.{test}' +- +- summary = f'
{test_name.split(".")[-1]}
' +- assert summary in html +- +- assert test_name in json_results.keys() +- json_res = json_results[test_name] +- assert json_res['status'] == 'passed' +- +- for image_type in ['baseline', 'result-failed-diff', 'result']: +- image = f'{test_name}/{image_type}.png' +- image_exists = (results_path / image).exists() +- json_image_key = f"{image_type.split('-')[-1]}_image" +- if image_type in exists: # assert image so pytest prints it on error +- assert image and image_exists +- assert image in html +- assert json_res[json_image_key] == image +- else: +- assert image and not image_exists +- assert image not in html +- assert json_res[json_image_key] is None +- +- + TEST_FAILING_CLASS = """ + import pytest + import matplotlib.pyplot as plt diff --git a/python-pytest-mpl.spec b/python-pytest-mpl.spec index 2bb13f7..3bc688f 100644 --- a/python-pytest-mpl.spec +++ b/python-pytest-mpl.spec @@ -1,12 +1,15 @@ %global _empty_manifest_terminate_build 0 Name: python-pytest-mpl Version: 0.17.0 -Release: 2 +Release: 3 Summary: pytest plugin to help with testing figures output from Matplotlib License: BSD URL: https://github.com/matplotlib/pytest-mpl Source0: https://files.pythonhosted.org/packages/a9/81/636f9ea4ec0182abc0ab96e5abeab39fc1d9ce8fecf19e2943d685de519f/pytest-mpl-0.17.0.tar.gz -Patch1: backport-update-CHANGES.patch +Patch0: backport-update-CHANGES.patch +Patch1: bp001-Generate-baseline-hashes-during-tests-to-reduce-flakiness.patch +Patch2: bp002-Update-environments-to-test.patch +Patch3: bp003-Remove-duplicate-tests.patch BuildArch: noarch %description --This is a plugin to facilitate image comparison for Matplotlib <>_ figures in @@ -65,7 +68,7 @@ write tests to do this, see the **Using*section below.Installing -This plugin is compatible with Python 3.6 and later, and requires pytest <>_ and matplotlib <. %prep -%autosetup -n pytest-mpl-%{version} +%autosetup -n pytest-mpl-%{version} -p1 %build %pyproject_build @@ -87,7 +90,7 @@ popd mv %{buildroot}/doclist.lst . %check -%{__python3} setup.py test +# not compitable to libmatplot 3.10, wait for version upgrade %files -n python3-pytest-mpl %{python3_sitelib}/pytest_mpl/ @@ -97,6 +100,9 @@ mv %{buildroot}/doclist.lst . %{_docdir}/* %changelog +* Wed Jul 23 2025 Dongxing Wang - 0.17.0-3 +- Fix build error for setuptools 78.1.1 + * Mon Jul 29 2024 lifeifei - 0.17.0-2 - Type:update - CVE:NA -- Gitee