@@ -408,6 +408,200 @@ def test_template__no_files(coverage_obj, diff_coverage_obj_more_files):
408408 assert "other.py" not in result
409409
410410
411+ def test_get_plain_text_markdown (make_coverage , make_coverage_and_diff ):
412+ previous_cov = make_coverage (
413+ """
414+ # file: codebase/code.py
415+ 1 covered
416+ 2 covered
417+ 3
418+ 4 missing
419+ 5 covered
420+ 6 covered
421+ 7
422+ 8
423+ 9 covered
424+ # file: codebase/other.py
425+ 1 covered
426+ 2 covered
427+ 3 covered
428+ 4 covered
429+ 5 covered
430+ 6 covered
431+ # file: codebase/third.py
432+ 1 covered
433+ 2 covered
434+ 3 covered
435+ 4 covered
436+ 5 covered
437+ 6 missing
438+ 7 missing
439+ """
440+ )
441+ cov , diff_cov = make_coverage_and_diff (
442+ """
443+ # file: codebase/code.py
444+ 1 covered
445+ 2 covered
446+ 3
447+ 4
448+ 5 covered
449+ 6 covered
450+ 7
451+ 8
452+ 9 covered
453+ 10
454+ 11
455+ + 12 missing
456+ + 13 missing
457+ + 14 missing
458+ + 15 covered
459+ + 16 covered
460+ + 17
461+ + 18
462+ + 19
463+ + 20
464+ + 21
465+ + 22 missing
466+ # file: codebase/other.py
467+ 1 covered
468+ 2 covered
469+ 3 covered
470+ # file: codebase/third.py
471+ 1 covered
472+ 2 covered
473+ 3 covered
474+ 4 covered
475+ 5 covered
476+ 6 covered
477+ 7 covered
478+ """
479+ )
480+
481+ files , total = template .select_files (
482+ coverage = cov ,
483+ diff_coverage = diff_cov ,
484+ previous_coverage = previous_cov ,
485+ max_files = 25 ,
486+ )
487+
488+ result = template .get_plain_text_markdown (
489+ coverage = cov ,
490+ diff_coverage = diff_cov ,
491+ previous_coverage = previous_cov ,
492+ previous_coverage_rate = decimal .Decimal ("11" ) / decimal .Decimal ("12" ),
493+ files = files ,
494+ count_files = total ,
495+ max_files = 25 ,
496+ )
497+ print (result )
498+ # No HTML anywhere
499+ assert "<img" not in result
500+ assert "<table" not in result
501+ assert "<td" not in result
502+ assert "<tr" not in result
503+ assert "<a " not in result
504+ # Has markdown table
505+ assert "| File" in result or "| ---- |" in result
506+ # Contains key data
507+ assert "code.py" in result
508+ assert "other.py" in result
509+ assert "third.py" in result
510+ assert "80.95%" in result # overall coverage
511+ assert "91.66%" in result # previous coverage rate
512+ assert "33.33%" in result # diff coverage
513+ assert "12-14" in result # missing line range
514+ assert "22" in result # missing single line
515+ assert "**Total**" in result
516+
517+
518+ def test_get_plain_text_markdown__no_files (coverage_obj ):
519+ diff_cov = coverage .DiffCoverage (
520+ total_num_lines = 0 ,
521+ total_num_violations = 0 ,
522+ total_percent_covered = decimal .Decimal ("1" ),
523+ num_changed_lines = 0 ,
524+ files = {},
525+ )
526+ result = template .get_plain_text_markdown (
527+ coverage = coverage_obj ,
528+ diff_coverage = diff_cov ,
529+ previous_coverage = None ,
530+ previous_coverage_rate = None ,
531+ files = [],
532+ count_files = 0 ,
533+ max_files = 25 ,
534+ )
535+ print (result )
536+ assert "does not seem to contain any modification" in result
537+ assert "<img" not in result
538+ assert "| File" not in result
539+
540+
541+ def test_get_plain_text_markdown__with_failure_msg (coverage_obj , diff_coverage_obj ):
542+ files , total = template .select_files (
543+ coverage = coverage_obj ,
544+ diff_coverage = diff_coverage_obj ,
545+ previous_coverage = None ,
546+ max_files = 25 ,
547+ )
548+ result = template .get_plain_text_markdown (
549+ coverage = coverage_obj ,
550+ diff_coverage = diff_coverage_obj ,
551+ previous_coverage = None ,
552+ previous_coverage_rate = None ,
553+ files = files ,
554+ count_files = total ,
555+ max_files = 25 ,
556+ failure_msg = "The diff is too large to process" ,
557+ )
558+ print (result )
559+ assert "WARNING: The diff is too large to process" in result
560+ assert "N/A" in result # diff coverage should show N/A
561+
562+
563+ def test_get_plain_text_markdown__no_previous (coverage_obj , diff_coverage_obj ):
564+ files , total = template .select_files (
565+ coverage = coverage_obj ,
566+ diff_coverage = diff_coverage_obj ,
567+ previous_coverage = None ,
568+ max_files = 25 ,
569+ )
570+ result = template .get_plain_text_markdown (
571+ coverage = coverage_obj ,
572+ diff_coverage = diff_coverage_obj ,
573+ previous_coverage = None ,
574+ previous_coverage_rate = None ,
575+ files = files ,
576+ count_files = total ,
577+ max_files = 25 ,
578+ )
579+ print (result )
580+ # Should not contain "was" or "->" for coverage evolution
581+ assert "(was " not in result
582+ assert "-> " not in result
583+
584+
585+ def test_get_plain_text_markdown__subproject (coverage_obj , diff_coverage_obj ):
586+ files , total = template .select_files (
587+ coverage = coverage_obj ,
588+ diff_coverage = diff_coverage_obj ,
589+ previous_coverage = None ,
590+ max_files = 25 ,
591+ )
592+ result = template .get_plain_text_markdown (
593+ coverage = coverage_obj ,
594+ diff_coverage = diff_coverage_obj ,
595+ previous_coverage = None ,
596+ previous_coverage_rate = None ,
597+ files = files ,
598+ count_files = total ,
599+ max_files = 25 ,
600+ subproject_id = "mylib" ,
601+ )
602+ assert "(mylib)" in result
603+
604+
411605def test_read_template_file ():
412606 assert template .read_template_file ("comment.md.j2" ).startswith (
413607 "{%- block title -%}## Coverage report{%- if subproject_id %}"
0 commit comments