-
-
Notifications
You must be signed in to change notification settings - Fork 59
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
blurb: Add tests and run on CI (#520)
Co-authored-by: Hugo van Kemenade <[email protected]> Co-authored-by: C.A.M. Gerlach <[email protected]>
- Loading branch information
1 parent
c9c3e4a
commit a51e311
Showing
4 changed files
with
167 additions
and
70 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# .coveragerc to control coverage.py | ||
|
||
[report] | ||
# Regexes for lines to exclude from consideration | ||
exclude_also = | ||
# Don't complain if non-runnable code isn't run: | ||
if __name__ == .__main__.: | ||
def main | ||
|
||
[run] | ||
omit = | ||
**/blurb/__main__.py |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,140 @@ | ||
import pytest | ||
from pyfakefs.fake_filesystem import FakeFilesystem | ||
|
||
import blurb | ||
|
||
|
||
UNCHANGED_SECTIONS = ( | ||
"C API", | ||
"Core and Builtins", | ||
"Library", | ||
) | ||
|
||
|
||
@pytest.mark.parametrize("section", UNCHANGED_SECTIONS) | ||
def test_sanitize_section_no_change(section: str) -> None: | ||
sanitized = blurb.sanitize_section(section) | ||
assert sanitized == section | ||
|
||
|
||
@pytest.mark.parametrize( | ||
"section, expected", | ||
( | ||
("Tools/Demos", "Tools-Demos"), | ||
), | ||
) | ||
def test_sanitize_section_changed(section: str, expected: str) -> None: | ||
sanitized = blurb.sanitize_section(section) | ||
assert sanitized == expected | ||
|
||
|
||
@pytest.mark.parametrize("section", UNCHANGED_SECTIONS) | ||
def test_unsanitize_section_no_change(section: str) -> None: | ||
unsanitized = blurb.unsanitize_section(section) | ||
assert unsanitized == section | ||
|
||
|
||
@pytest.mark.parametrize( | ||
"section, expected", | ||
( | ||
("Tools-Demos", "Tools/Demos"), | ||
), | ||
) | ||
def test_unsanitize_section_changed(section: str, expected: str) -> None: | ||
unsanitized = blurb.unsanitize_section(section) | ||
assert unsanitized == expected | ||
|
||
|
||
def test_glob_blurbs_next(fs: FakeFilesystem) -> None: | ||
# Arrange | ||
fake_news_entries = ( | ||
"Misc/NEWS.d/next/Library/2022-04-11-18-34-33.gh-issue-11111.pC7gnM.rst", | ||
"Misc/NEWS.d/next/Core and Builtins/2023-03-17-12-09-45.gh-issue-33333.Pf_BI7.rst", | ||
"Misc/NEWS.d/next/Tools-Demos/2023-03-21-01-27-07.gh-issue-44444.2F1Byz.rst", | ||
"Misc/NEWS.d/next/C API/2023-03-27-22-09-07.gh-issue-66666.3SN8Bs.rst", | ||
) | ||
fake_readmes = ( | ||
"Misc/NEWS.d/next/Library/README.rst", | ||
"Misc/NEWS.d/next/Core and Builtins/README.rst", | ||
"Misc/NEWS.d/next/Tools-Demos/README.rst", | ||
"Misc/NEWS.d/next/C API/README.rst", | ||
) | ||
for fn in fake_news_entries + fake_readmes: | ||
fs.create_file(fn) | ||
|
||
# Act | ||
filenames = blurb.glob_blurbs("next") | ||
|
||
# Assert | ||
assert set(filenames) == set(fake_news_entries) | ||
|
||
|
||
@pytest.mark.parametrize( | ||
"news_entry, expected_section", | ||
( | ||
( | ||
"Misc/NEWS.d/next/Library/2022-04-11-18-34-33.gh-issue-55555.pC7gnM.rst", | ||
"Library", | ||
), | ||
( | ||
"Misc/NEWS.d/next/Core and Builtins/2023-03-17-12-09-45.gh-issue-33333.Pf_BI7.rst", | ||
"Core and Builtins", | ||
), | ||
( | ||
"Misc/NEWS.d/next/Tools-Demos/2023-03-21-01-27-07.gh-issue-44444.2F1Byz.rst", | ||
"Tools/Demos", | ||
), | ||
( | ||
"Misc/NEWS.d/next/C API/2023-03-27-22-09-07.gh-issue-66666.3SN8Bs.rst", | ||
"C API", | ||
), | ||
), | ||
) | ||
def test_load_next(news_entry: str, expected_section: str, fs: FakeFilesystem) -> None: | ||
# Arrange | ||
fs.create_file(news_entry, contents="testing") | ||
blurbs = blurb.Blurbs() | ||
|
||
# Act | ||
blurbs.load_next(news_entry) | ||
|
||
# Assert | ||
metadata = blurbs[0][0] | ||
assert metadata["section"] == expected_section | ||
|
||
|
||
@pytest.mark.parametrize( | ||
"news_entry, expected_path", | ||
( | ||
( | ||
"Misc/NEWS.d/next/Library/2022-04-11-18-34-33.gh-issue-55555.pC7gnM.rst", | ||
"root/Misc/NEWS.d/next/Library/2022-04-11-18-34-33.gh-issue-55555.pC7gnM.rst", | ||
), | ||
( | ||
"Misc/NEWS.d/next/Core and Builtins/2023-03-17-12-09-45.gh-issue-33333.Pf_BI7.rst", | ||
"root/Misc/NEWS.d/next/Core and Builtins/2023-03-17-12-09-45.gh-issue-33333.Pf_BI7.rst", | ||
), | ||
( | ||
"Misc/NEWS.d/next/Tools-Demos/2023-03-21-01-27-07.gh-issue-44444.2F1Byz.rst", | ||
"root/Misc/NEWS.d/next/Tools-Demos/2023-03-21-01-27-07.gh-issue-44444.2F1Byz.rst", | ||
), | ||
( | ||
"Misc/NEWS.d/next/C API/2023-03-27-22-09-07.gh-issue-66666.3SN8Bs.rst", | ||
"root/Misc/NEWS.d/next/C API/2023-03-27-22-09-07.gh-issue-66666.3SN8Bs.rst", | ||
), | ||
), | ||
) | ||
def test_extract_next_filename( | ||
news_entry: str, expected_path: str, fs: FakeFilesystem | ||
) -> None: | ||
# Arrange | ||
fs.create_file(news_entry, contents="testing") | ||
blurb.root = "root" | ||
blurbs = blurb.Blurbs() | ||
blurbs.load_next(news_entry) | ||
|
||
# Act | ||
path = blurbs._extract_next_filename() | ||
|
||
# Assert | ||
assert path == expected_path |