diff --git a/go.mod b/go.mod index 2d74f929aef..e396f3c165d 100644 --- a/go.mod +++ b/go.mod @@ -17,6 +17,7 @@ require ( github.com/prometheus/client_golang v1.12.2 github.com/spf13/cobra v1.5.0 github.com/spf13/viper v1.12.0 + github.com/stretchr/testify v1.7.1 github.com/xeipuuv/gojsonschema v1.2.0 github.com/yuin/goldmark v1.5.2 golang.org/x/tools v0.1.11 @@ -46,6 +47,7 @@ require ( github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4 // indirect github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490 // indirect github.com/cockroachdb/apd/v2 v2.0.1 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc // indirect github.com/dgryski/go-minhash v0.0.0-20170608043002-7fe510aff544 // indirect github.com/dgryski/go-spooky v0.0.0-20170606183049-ed3d087f40e2 // indirect @@ -90,6 +92,7 @@ require ( github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.0.1 // indirect github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_model v0.2.0 // indirect github.com/prometheus/common v0.32.1 // indirect github.com/prometheus/procfs v0.7.3 // indirect diff --git a/licenses/github.com/davecgh/go-spew/LICENSE b/licenses/github.com/davecgh/go-spew/LICENSE new file mode 100644 index 00000000000..bc52e96f2b0 --- /dev/null +++ b/licenses/github.com/davecgh/go-spew/LICENSE @@ -0,0 +1,15 @@ +ISC License + +Copyright (c) 2012-2016 Dave Collins + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/licenses/github.com/pmezard/go-difflib/LICENSE b/licenses/github.com/pmezard/go-difflib/LICENSE new file mode 100644 index 00000000000..c67dad612a3 --- /dev/null +++ b/licenses/github.com/pmezard/go-difflib/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2013, Patrick Mezard +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + The names of its contributors may not be used to endorse or promote +products derived from this software without specific prior written +permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/licenses/github.com/stretchr/testify/LICENSE b/licenses/github.com/stretchr/testify/LICENSE new file mode 100644 index 00000000000..4b0421cf9ee --- /dev/null +++ b/licenses/github.com/stretchr/testify/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2012-2020 Mat Ryer, Tyler Bunnell and contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/pkg/markdown/md.go b/pkg/markdown/md.go index 81ce0974724..80165d34377 100644 --- a/pkg/markdown/md.go +++ b/pkg/markdown/md.go @@ -25,12 +25,12 @@ import ( var md = goldmark.New( goldmark.WithExtensions(extension.GFM), + goldmark.WithExtensions(extension.NewTypographer()), goldmark.WithParserOptions( parser.WithAutoHeadingID(), ), goldmark.WithRendererOptions( - html.WithHardWraps(), - html.WithXHTML(), + html.WithUnsafe(), ), ) diff --git a/pkg/markdown/md_test.go b/pkg/markdown/md_test.go new file mode 100644 index 00000000000..2823c421eef --- /dev/null +++ b/pkg/markdown/md_test.go @@ -0,0 +1,64 @@ +// Copyright 2018 Istio Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package markdown + +import ( + "fmt" + "os" + "path" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestRun(t *testing.T) { + cases := []struct { + name string + }{ + { + name: "AnalysisMessageWeakSchema", + }, + { + name: "links", + }, + { + name: "telemetry", + }, + } + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + in, err := readInput(tc.name) + assert.NoError(t, err) + out, err := readOutput(tc.name) + assert.NoError(t, err) + + got := Run(in) + assert.Equal(t, string(out), string(got)) + }) + } +} + +func readInput(name string) ([]byte, error) { + return readFile(fmt.Sprintf("%s.input", name)) +} + +func readOutput(name string) ([]byte, error) { + return readFile(fmt.Sprintf("%s.output", name)) +} + +func readFile(f string) ([]byte, error) { + return os.ReadFile(path.Join("testdata", f)) +} diff --git a/pkg/markdown/testdata/AnalysisMessageWeakSchema.input b/pkg/markdown/testdata/AnalysisMessageWeakSchema.input new file mode 100644 index 00000000000..e6d5a54d459 --- /dev/null +++ b/pkg/markdown/testdata/AnalysisMessageWeakSchema.input @@ -0,0 +1,4 @@ +AnalysisMessageWeakSchema is the set of information that's needed to define a +weakly-typed schema. The purpose of this proto is to provide a mechanism for +validating istio/istio/galley/pkg/config/analysis/msg/messages.yaml to make +sure that we don't allow committing underspecified types. \ No newline at end of file diff --git a/pkg/markdown/testdata/AnalysisMessageWeakSchema.output b/pkg/markdown/testdata/AnalysisMessageWeakSchema.output new file mode 100644 index 00000000000..7d37c163801 --- /dev/null +++ b/pkg/markdown/testdata/AnalysisMessageWeakSchema.output @@ -0,0 +1,4 @@ +

AnalysisMessageWeakSchema is the set of information that’s needed to define a +weakly-typed schema. The purpose of this proto is to provide a mechanism for +validating istio/istio/galley/pkg/config/analysis/msg/messages.yaml to make +sure that we don’t allow committing underspecified types.

diff --git a/pkg/markdown/testdata/links.input b/pkg/markdown/testdata/links.input new file mode 100644 index 00000000000..78a028e8b57 --- /dev/null +++ b/pkg/markdown/testdata/links.input @@ -0,0 +1,2 @@ +Current service state of pod. +More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions \ No newline at end of file diff --git a/pkg/markdown/testdata/links.output b/pkg/markdown/testdata/links.output new file mode 100644 index 00000000000..8383e01d176 --- /dev/null +++ b/pkg/markdown/testdata/links.output @@ -0,0 +1,2 @@ +

Current service state of pod. +More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

diff --git a/pkg/markdown/testdata/telemetry.input b/pkg/markdown/testdata/telemetry.input new file mode 100644 index 00000000000..a9a36fb5a37 --- /dev/null +++ b/pkg/markdown/testdata/telemetry.input @@ -0,0 +1,4 @@ +Telemetry defines how the telemetry is generated for workloads within a mesh. + +For mesh level configuration, put the resource in root configuration +namespace for your Istio installation *without* a workload selector. \ No newline at end of file diff --git a/pkg/markdown/testdata/telemetry.output b/pkg/markdown/testdata/telemetry.output new file mode 100644 index 00000000000..b183d4bb1b5 --- /dev/null +++ b/pkg/markdown/testdata/telemetry.output @@ -0,0 +1,3 @@ +

Telemetry defines how the telemetry is generated for workloads within a mesh.

+

For mesh level configuration, put the resource in root configuration +namespace for your Istio installation without a workload selector.