from intent.features.diff import line_diff from intent.markdown import render def test_blocks_carry_source_lines(): html = render("Para one\ncontinues.\n\n- a\n- b\n") assert '

' in html assert '

  • ' in html def test_headings_shift_down_one_level(): html = render("# Top\n\n###### Deepest\n") assert "alert(1)\n\n[x](javascript:alert(1)) ") assert "old" in html def test_line_diff_hunks(): old = "\n".join(f"line {i}" for i in range(1, 21)) new = old.replace("line 10", "line ten") [hunk] = line_diff(old, new) kinds = [(line.kind, line.old_number, line.new_number) for line in hunk] assert ("removed", 10, None) in kinds assert ("added", None, 10) in kinds assert kinds[0] == ("same", 7, 7) # three lines of context assert line_diff(old, old) == [] def test_blocks_split_top_level_markdown_with_line_ranges(): from intent.markdown import render_blocks, source_lines text = "# Title\n\nPara one\ncontinues.\n\n- a\n- b\n\n```\ncode\n```\n" blocks = render_blocks(text) assert [(b.start, b.end) for b in blocks] == [(1, 1), (3, 4), (6, 7), (9, 11)] assert blocks[0].anchor == "L1-1" and "