html/template — validation proof

Go’s own html/template test suite, converted to C# by go2cs, built against the converted standard library, run under the Go-semantics test host, and compared verdict for verdict against a clean go test -json baseline of the same sources. This page is generated by the converter from that comparison — it is the evidence behind the html/template row in Validated Test Packages.

Validated 2026-08-25 · converter a338d351d

243 matched · 0 disclosed — Go 1.23.12, windows/amd64, converted package src/core/html/template.

Both runtimes skip 2 of the matched tests identically.

Verdicts

Test go test go2cs
TestAddParseTreeHTML pass pass
TestAddParseTreeToUnparsedTemplate pass pass
TestAddrOfIndex pass pass
TestAliasedParseTreeDoesNotOverescape pass pass
TestBadFuncNames pass pass
TestBlock pass pass
TestCSSEscaper pass pass
TestCSSValueFilter pass pass
TestClone pass pass
TestCloneCrash pass pass
TestCloneGrowth pass pass
TestClonePipe pass pass
TestCloneRedefinedName pass pass
TestCloneThenParse pass pass
TestComparison pass pass
TestDecodeCSS pass pass
TestDelims pass pass
TestEmptyTemplate pass pass
TestEmptyTemplateCloneCrash pass pass
TestEmptyTemplateHTML pass pass
TestEndsWithCSSKeyword pass pass
TestEnsurePipelineContains pass pass
TestErrorOnUndefined pass pass
TestErrors pass pass
TestEscape pass pass
TestEscape/CSS_attr_block_comment pass pass
TestEscape/CSS_attr_line_comment pass pass
TestEscape/CSS_comments pass pass
TestEscape/Comment_ends_flush_with_start pass pass
TestEscape/HTML_comment pass pass
TestEscape/HTML_comment_not_first_<_in_text_node. pass pass
TestEscape/HTML_doctype_not_case-insensitive pass pass
TestEscape/HTML_doctype_not_normalized pass pass
TestEscape/HTML_normalization_1 pass pass
TestEscape/HTML_normalization_2 pass pass
TestEscape/HTML_normalization_3 pass pass
TestEscape/HTML_substitution_commented_out pass pass
TestEscape/JS_HTML-like_comments pass pass
TestEscape/JS_attr_block_comment pass pass
TestEscape/JS_attr_line_comment pass pass
TestEscape/JS_block_comment_flush_with_mathematical_division pass pass
TestEscape/JS_hashbang_comment pass pass
TestEscape/JS_line_comment pass pass
TestEscape/JS_mixed_comments pass pass
TestEscape/JS_multiline_block_comment pass pass
TestEscape/JS_single-line_block_comment pass pass
TestEscape/JS_template_lit,_nested_JS pass pass
TestEscape/JS_template_lit_special_characters pass pass
TestEscape/JS_template_lit_special_characters,_nested_lit pass pass
TestEscape/No_RCDATA_end_tag_injection pass pass
TestEscape/No_comment_injection pass pass
TestEscape/No_doctype_injection pass pass
TestEscape/No_tag_injection pass pass
TestEscape/Special_tags_in_<script>_regex_literals_(mixed_case) pass pass
TestEscape/Special_tags_in_<script>_string_literals pass pass
TestEscape/Special_tags_in_<script>_string_literals_(mixed_case) pass pass
TestEscape/Split_HTML_comment pass pass
TestEscape/assignment pass pass
TestEscape/badMarshaler pass pass
TestEscape/bad_dynamic_attribute_name_1 pass pass
TestEscape/bad_dynamic_attribute_name_2 pass pass
TestEscape/bad_dynamic_attribute_name_3 pass pass
TestEscape/bad_dynamic_attribute_name_4 pass pass
TestEscape/bad_dynamic_element_name pass pass
TestEscape/conditional_dynamic_valueless_attr_name_1 pass pass
TestEscape/conditional_dynamic_valueless_attr_name_2 pass pass
TestEscape/conditional_valueless_attr_name pass pass
TestEscape/constant pass pass
TestEscape/dangerousURLStart pass pass
TestEscape/dangerousURLStart2 pass pass
TestEscape/dynamic_attribute_name pass pass
TestEscape/dynamic_element_name pass pass
TestEscape/else pass pass
TestEscape/if pass pass
TestEscape/jsBoolValue pass pass
TestEscape/jsMarshaler pass pass
TestEscape/jsNilValueTyped pass pass
TestEscape/jsNilValueUntyped pass pass
TestEscape/jsNumericValue pass pass
TestEscape/jsObjValue pass pass
TestEscape/jsObjValueNotOverEscaped pass pass
TestEscape/jsObjValueScript pass pass
TestEscape/jsRe pass pass
TestEscape/jsReAmbigOk pass pass
TestEscape/jsReBlank pass pass
TestEscape/jsStr pass pass
TestEscape/jsStrNotUnderEscaped pass pass
TestEscape/jsStrValue pass pass
TestEscape/multipleAttrs pass pass
TestEscape/nonHierURL pass pass
TestEscape/nonStringValue pass pass
TestEscape/optional_attrs pass pass
TestEscape/overescaping1 pass pass
TestEscape/overescaping2 pass pass
TestEscape/overescaping3 pass pass
TestEscape/pathRelativeURLStart pass pass
TestEscape/protocolRelativeURLStart pass pass
TestEscape/quoted_empty_attribute_value pass pass
TestEscape/rangeBody pass pass
TestEscape/rangeElse pass pass
TestEscape/range_in_textarea pass pass
TestEscape/srcset_bad_URL_in_second_position pass pass
TestEscape/srcset_buffer_growth pass pass
TestEscape/styleBidiKeywordPassed pass pass
TestEscape/styleBidiPropNamePassed pass pass
TestEscape/styleClassPassed pass pass
TestEscape/styleColorPassed pass pass
TestEscape/styleExpressionBlocked pass pass
TestEscape/styleFontNameString pass pass
TestEscape/styleFontNameString#01 pass pass
TestEscape/styleFontNameUnquoted pass pass
TestEscape/styleIDPassed pass pass
TestEscape/styleMozBindingBlocked pass pass
TestEscape/styleObfuscatedExpressionBlocked pass pass
TestEscape/styleObfuscatedMozBindingBlocked pass pass
TestEscape/stylePctPassed pass pass
TestEscape/stylePropertyPairPassed pass pass
TestEscape/styleQuantityPassed pass pass
TestEscape/styleQuotedURLQueryEncoded pass pass
TestEscape/styleStrBadProtocolBlocked pass pass
TestEscape/styleStrEncodedProtocolEncoded pass pass
TestEscape/styleStrGoodProtocolPassed pass pass
TestEscape/styleStrQueryEncoded pass pass
TestEscape/styleStrSpecialsEncoded pass pass
TestEscape/styleTagSelectorPassed pass pass
TestEscape/styleURLBadProtocolBlocked pass pass
TestEscape/styleURLEncodedForHTMLInAttr pass pass
TestEscape/styleURLGoodProtocolPassed pass pass
TestEscape/styleURLMixedCase pass pass
TestEscape/styleURLNotEncodedForHTMLInCdata pass pass
TestEscape/styleURLQueryEncoded pass pass
TestEscape/styleURLSpecialsEncoded pass pass
TestEscape/typedNilValue pass pass
TestEscape/typed_HTML_in_RCDATA pass pass
TestEscape/typed_HTML_in_attribute pass pass
TestEscape/typed_HTML_in_script pass pass
TestEscape/typed_HTML_in_text pass pass
TestEscape/unquoted_empty_attribute_value_(plaintext) pass pass
TestEscape/unquoted_empty_attribute_value_(url) pass pass
TestEscape/untypedNilValue pass pass
TestEscape/urlBranch pass pass
TestEscape/urlBranchConflictMoot pass pass
TestEscape/urlFragment pass pass
TestEscape/urlPath pass pass
TestEscape/urlQuery pass pass
TestEscape/urlStartAbsOk pass pass
TestEscape/urlStartRel pass pass
TestEscape/withBody pass pass
TestEscape/withElse pass pass
TestEscapeErrorsNotIgnorable pass pass
TestEscapeMalformedPipelines pass pass
TestEscapeMap pass pass
TestEscapeRace pass pass
TestEscapeSet pass pass
TestEscapeSetErrorsNotIgnorable pass pass
TestEscapeText pass pass
TestEscapersOnLower7AndSelectHighCodepoints pass pass
TestEscapingNilNonemptyInterfaces pass pass
TestEvalFieldErrors pass pass
TestEvalFieldErrors/ExistingFieldOnNil pass pass
TestEvalFieldErrors/MissingFieldOnNil pass pass
TestEvalFieldErrors/MissingFieldOnNonNil pass pass
TestEvalFieldErrors/MissingKeyOnMapPtrToNil pass pass
TestEvalFieldErrors/MissingKeyOnNilMap pass pass
TestEvalFieldErrors/MissingKeyOnNilMapPtr pass pass
TestExecError pass pass
TestExecute pass pass
TestExecuteError pass pass
TestExecuteGivesExecError pass pass
TestExecuteOnNewTemplate pass pass
TestExecutePanicDuringCall pass pass
TestFinalForPrintf pass pass
TestFindEndTag pass pass
TestFuncMapWorksAfterClone pass pass
TestGoodFuncNames pass pass
TestHTMLNospaceEscaper pass pass
TestHexDecode pass pass
TestIdempotentExecute pass pass
TestIndirectPrint pass pass
TestInterfaceValues pass pass
TestIsCSSNmchar pass pass
TestIsJsMimeType pass pass
TestIssue19294 pass pass
TestIssue31810 skip skip
TestJSEscaping pass pass
TestJSRegexpEscaper pass pass
TestJSStrEscaper pass pass
TestJSValEscaper pass pass
TestMaxExecDepth pass pass
TestMessageForExecuteEmpty pass pass
TestMissingMapKey pass pass
TestMultiExecute pass pass
TestNextJsCtx pass pass
TestNumbers pass pass
TestOrphanedTemplate pass pass
TestParse pass pass
TestParseFS pass pass
TestParseFiles pass pass
TestParseFilesWithData pass pass
TestParseGlob pass pass
TestParseGlobWithData pass pass
TestParseZipFS pass pass
TestPipeToMethodIsEscaped pass pass
TestRecursiveExecute pass pass
TestRecursiveExecuteViaMethod pass pass
TestRedefineAfterNamedExecution pass pass
TestRedefineAfterNonExecution pass pass
TestRedefineEmptyAfterExecution pass pass
TestRedefineNestedByNameAfterExecution pass pass
TestRedefineNestedByTemplateAfterExecution pass pass
TestRedefineNonEmptyAfterExecution pass pass
TestRedefineOtherParsers pass pass
TestRedefineSafety pass pass
TestRedefineTopUse pass pass
TestRedefinition pass pass
TestRedundantFuncs pass pass
TestSkipCSSSpace pass pass
TestSkipEscapeComments pass pass
TestSrcsetFilter pass pass
TestStringer pass pass
TestStringsInScriptsWithJsonContentTypeAreCorrectlyEscaped pass pass
TestStringsInScriptsWithJsonContentTypeAreCorrectlyEscaped/ASCII_letters pass pass
TestStringsInScriptsWithJsonContentTypeAreCorrectlyEscaped/Pizza pass pass
TestStringsInScriptsWithJsonContentTypeAreCorrectlyEscaped/Unicode pass pass
TestStringsInScriptsWithJsonContentTypeAreCorrectlyEscaped/empty pass pass
TestStringsInScriptsWithJsonContentTypeAreCorrectlyEscaped/gt_and_lt pass pass
TestStringsInScriptsWithJsonContentTypeAreCorrectlyEscaped/invalid pass pass
TestStringsInScriptsWithJsonContentTypeAreCorrectlyEscaped/null pass pass
TestStringsInScriptsWithJsonContentTypeAreCorrectlyEscaped/quotes pass pass
TestStringsInScriptsWithJsonContentTypeAreCorrectlyEscaped/tab pass pass
TestStringsInScriptsWithJsonContentTypeAreCorrectlyEscaped/unit_separator pass pass
TestStripTags pass pass
TestTemplateClone pass pass
TestTemplateCloneExecuteRace pass pass
TestTemplateCloneLookup pass pass
TestTemplateFuncsAfterClone pass pass
TestTemplateLookUp skip skip
TestTemplates pass pass
TestTree pass pass
TestTypedContent pass pass
TestURLFilters pass pass
TestURLNormalizer pass pass
TestUnterminatedStringError pass pass

Excluded declarations

Declarations filtered from both sides of the comparison, and therefore not claimed above: Benchmark, Fuzz and Example declarations the converted host does not execute, plus any test requiring a capability the managed runtime does not provide — a testing member the host has not implemented, or a platform behavior it provably cannot reproduce. Each is named with the capability it needs.