kata-containers/tests/cmd/check-markdown/add_test.go
Chelsea Mafrica 8ad433d4ad tests: move markdown check tool to main repo
Move the tool as a dependency for static checks migration.

Fixes #8187

Signed-off-by: Bin Liu <bin@hyper.sh>
Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
Signed-off-by: Julio Montes <julio.montes@intel.com>
2023-11-28 11:13:55 -08:00

192 lines
3.9 KiB
Go

//
// Copyright (c) 2019 Intel Corporation
//
// SPDX-License-Identifier: Apache-2.0
//
package main
import (
"fmt"
"os"
"path/filepath"
"testing"
"github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
)
const (
testFileMode = os.FileMode(0640)
testDirMode = os.FileMode(0750)
readmeName = "README.md"
)
func createFile(file, contents string) error {
return os.WriteFile(file, []byte(contents), testFileMode)
}
// makeDirs creates two directories below the specified base directory: one is
// an empty director named emptyDirName and the other is named readmeDirName
// and contains a markdown file called "README.md".
func makeDirs(assert *assert.Assertions, baseDir string, readmeDirName, emptyDirName string) {
readmeDir := filepath.Join(baseDir, readmeDirName)
err := os.MkdirAll(readmeDir, testDirMode)
assert.NoError(err)
readme := filepath.Join(readmeDir, "README.md")
err = createFile(readme, "# hello")
assert.NoError(err)
emptyDir := filepath.Join(baseDir, emptyDirName)
err = os.MkdirAll(emptyDir, testDirMode)
assert.NoError(err)
}
func TestDocAddHeading(t *testing.T) {
assert := assert.New(t)
type testData struct {
heading Heading
expectError bool
}
data := []testData{
{Heading{"", "", "", -1}, true},
{Heading{"Foo", "", "", -1}, true},
{Heading{"Foo", "", "", 0}, true},
{Heading{"Foo", "", "", 1}, true},
{Heading{"Foo", "", "foo", -1}, true},
{Heading{"Foo", "", "foo", 0}, true},
{Heading{"Foo", "", "foo", 1}, false},
{Heading{"`Foo`", "`Foo`", "foo", 1}, false},
}
logger := logrus.WithField("test", "true")
for i, d := range data {
doc := newDoc("foo", logger)
assert.Empty(doc.Headings)
msg := fmt.Sprintf("test[%d]: %+v\n", i, d)
err := doc.addHeading(d.heading)
if d.expectError {
assert.Error(err, msg)
continue
}
assert.NoError(err, msg)
assert.NotEmpty(doc.Headings, msg)
name := d.heading.Name
result, ok := doc.Headings[name]
assert.True(ok, msg)
assert.Equal(d.heading, result, msg)
}
}
func TestDocAddLink(t *testing.T) {
assert := assert.New(t)
type testData struct {
link Link
expectError bool
}
data := []testData{
{Link{nil, "", "", "", -1}, true},
{Link{nil, "foo", "", "", unknownLink}, true},
{Link{nil, "foo", "", "", internalLink}, false},
{Link{nil, "http://google.com", "", "", urlLink}, false},
{Link{nil, "https://google.com", "", "", urlLink}, false},
{Link{nil, "mailto:me@somewhere.com", "", "", mailLink}, false},
}
logger := logrus.WithField("test", "true")
for i, d := range data {
doc := newDoc("foo", logger)
assert.Empty(doc.Links)
msg := fmt.Sprintf("test[%d]: %+v\n", i, d)
err := doc.addLink(d.link)
if d.expectError {
assert.Error(err, msg)
continue
}
assert.NoError(err, msg)
assert.NotEmpty(doc.Links, msg)
addr := d.link.Address
result := doc.Links[addr][0]
assert.Equal(result, d.link)
}
}
func TestDocLinkAddrToPath(t *testing.T) {
assert := assert.New(t)
dir, err := os.MkdirTemp("", "")
assert.NoError(err)
cwd, err := os.Getwd()
assert.NoError(err)
defer os.Chdir(cwd)
err = os.Chdir(dir)
assert.NoError(err)
defer os.RemoveAll(dir)
savedDocRoot := docRoot
docRoot = dir
defer func() {
docRoot = savedDocRoot
}()
mdFile := "bar.md"
mdPath := filepath.Join("/", mdFile)
actualMDPath := filepath.Join(dir, mdFile)
type testData struct {
linkAddr string
expectedPath string
expectError bool
}
data := []testData{
{"", "", true},
{"bar", "bar", false},
{"bar.md", "bar.md", false},
{mdPath, actualMDPath, false},
}
logger := logrus.WithField("test", "true")
doc := newDoc("foo", logger)
for i, d := range data {
msg := fmt.Sprintf("test[%d]: %+v\n", i, d)
result, err := doc.linkAddrToPath(d.linkAddr)
if d.expectError {
assert.Error(err, msg)
continue
}
assert.NoError(err, msg)
assert.Equal(d.expectedPath, result)
}
}