mirror of
https://github.com/hanzoai/forge.git
synced 2026-10-30 15:00:39 +00:00
2978 files. The fork is 2026-07-15 (rebrand: gitea.dev -> github.com/hanzoai/git), so 2026 is the year, and "Copyright 2026 Hanzo AI, Inc." was already the form used by the handful of files that had ours. Shape is now: // Copyright 2026 Hanzo AI, Inc. All rights reserved. // Copyright 2015 The Gogs Authors. All rights reserved. // Copyright 2019 The Gitea Authors. All rights reserved. // SPDX-License-Identifier: MIT Ours on top, theirs retained verbatim. Retained because MIT requires it, and separately because they are true — those authors did write that code. Not renamed to "The Git Authors": Git is a different project under a different license, and putting its name here would attribute this code to people who have nothing to do with it. Adding our line is the fix; overwriting theirs would have been both a licence violation and a false statement. gofmt still reports import-order drift in some of these files. It predates this change (verified against a stash) and is left alone rather than burying a one-line-per-file legal change under 3000 files of unrelated reordering. Build clean. Co-authored-by: Hanzo Dev <[email protected]>
60 lines
2.2 KiB
Go
60 lines
2.2 KiB
Go
// Copyright 2026 Hanzo AI, Inc. All rights reserved.
|
|
// Copyright 2024 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package markdown_test
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/hanzoai/git/modules/markup"
|
|
"github.com/hanzoai/git/modules/markup/markdown"
|
|
"github.com/hanzoai/git/modules/svg"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"golang.org/x/text/cases"
|
|
"golang.org/x/text/language"
|
|
)
|
|
|
|
func TestAttention(t *testing.T) {
|
|
defer svg.MockIcon("octicon-info")()
|
|
defer svg.MockIcon("octicon-light-bulb")()
|
|
defer svg.MockIcon("octicon-report")()
|
|
defer svg.MockIcon("octicon-alert")()
|
|
defer svg.MockIcon("octicon-stop")()
|
|
|
|
test := func(input, expected string) {
|
|
result, err := markdown.RenderString(markup.NewTestRenderContext(), input)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(string(result)))
|
|
}
|
|
renderAttention := func(attention, icon string) string {
|
|
tmpl := `<blockquote class="attention-header attention-{attention}"><p><svg class="attention-icon attention-{attention} svg {icon}" width="16" height="16"></svg><strong class="attention-{attention}">{Attention}</strong></p>`
|
|
tmpl = strings.ReplaceAll(tmpl, "{attention}", attention)
|
|
tmpl = strings.ReplaceAll(tmpl, "{icon}", icon)
|
|
tmpl = strings.ReplaceAll(tmpl, "{Attention}", cases.Title(language.English).String(attention))
|
|
return tmpl
|
|
}
|
|
|
|
test(`
|
|
> [!NOTE]
|
|
> text
|
|
`, renderAttention("note", "octicon-info")+"\n<p>text</p>\n</blockquote>")
|
|
|
|
test(`> [!note]`, renderAttention("note", "octicon-info")+"\n</blockquote>")
|
|
test(`> [!tip]`, renderAttention("tip", "octicon-light-bulb")+"\n</blockquote>")
|
|
test(`> [!important]`, renderAttention("important", "octicon-report")+"\n</blockquote>")
|
|
test(`> [!warning]`, renderAttention("warning", "octicon-alert")+"\n</blockquote>")
|
|
test(`> [!caution]`, renderAttention("caution", "octicon-stop")+"\n</blockquote>")
|
|
|
|
// escaped by mdformat
|
|
test(`> \[!NOTE\]`, renderAttention("note", "octicon-info")+"\n</blockquote>")
|
|
|
|
// legacy GitHub style
|
|
test(`> **warning**`, renderAttention("warning", "octicon-alert")+"\n</blockquote>")
|
|
|
|
// edge case (it used to cause panic)
|
|
test(">\ntext", "<blockquote>\n</blockquote>\n<p>text</p>")
|
|
}
|