mirror of
				https://github.com/kata-containers/kata-containers.git
				synced 2025-10-31 17:37:20 +00:00 
			
		
		
		
	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>
		
			
				
	
	
		
			210 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			210 lines
		
	
	
		
			4.6 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"
 | |
| )
 | |
| 
 | |
| // createLinkAndCategorise will create a link and categorise it. If
 | |
| // createLinkManually is set, the link will be created "manually" (without the
 | |
| // constructor) and categorise() called. If not set, the constructor will be
 | |
| // used.
 | |
| func createLinkAndCategorise(assert *assert.Assertions, createLinkManually bool) {
 | |
| 	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)
 | |
| 
 | |
| 	readmeDirName := "dir-with-readme"
 | |
| 	emptyDirName := "empty"
 | |
| 	makeDirs(assert, dir, readmeDirName, emptyDirName)
 | |
| 
 | |
| 	readmeDirPath := filepath.Join(readmeDirName, readmeName)
 | |
| 
 | |
| 	topLevelReadmeName := "top-level.md"
 | |
| 	topLevelReadmeLink := filepath.Join("/", topLevelReadmeName)
 | |
| 
 | |
| 	topLevelReadmePath := filepath.Join(dir, topLevelReadmeName)
 | |
| 
 | |
| 	type testData struct {
 | |
| 		linkAddress string
 | |
| 
 | |
| 		expectedPath string
 | |
| 
 | |
| 		expectedType LinkType
 | |
| 		expectError  bool
 | |
| 
 | |
| 		// Set if expectedPath should be checked
 | |
| 		checkPath bool
 | |
| 	}
 | |
| 
 | |
| 	docRoot = dir
 | |
| 
 | |
| 	data := []testData{
 | |
| 		{"", "", -1, true, false},
 | |
| 		{"a", "", -1, true, false},
 | |
| 		{"a.b", "", -1, true, false},
 | |
| 		{"a#b", "", -1, true, false},
 | |
| 
 | |
| 		{"htt://foo", "", -1, true, false},
 | |
| 		{"HTTP://foo", "", -1, true, false},
 | |
| 		{"moohttp://foo", "", -1, true, false},
 | |
| 		{"mailto", "", -1, true, false},
 | |
| 		{"http", "", -1, true, false},
 | |
| 		{"https", "", -1, true, false},
 | |
| 
 | |
| 		{"http://foo", "", urlLink, false, false},
 | |
| 		{"https://foo/", "", urlLink, false, false},
 | |
| 		{"https://foo/bar", "", urlLink, false, false},
 | |
| 		{"mailto:me", "", mailLink, false, false},
 | |
| 
 | |
| 		{".", "", externalFile, false, false},
 | |
| 		{"/", "", externalFile, false, false},
 | |
| 		{emptyDirName, "", externalFile, false, false},
 | |
| 
 | |
| 		{readmeDirName, readmeDirPath, externalLink, false, true},
 | |
| 		{"foo.md", "foo.md", externalLink, false, true},
 | |
| 		{"foo.md#bar", "foo.md", externalLink, false, true},
 | |
| 		{topLevelReadmeLink, topLevelReadmePath, externalLink, false, true},
 | |
| 	}
 | |
| 
 | |
| 	logger := logrus.WithField("test", "true")
 | |
| 	description := ""
 | |
| 
 | |
| 	for i, d := range data {
 | |
| 		var link Link
 | |
| 		var err error
 | |
| 
 | |
| 		doc := newDoc("foo", logger)
 | |
| 
 | |
| 		if createLinkManually {
 | |
| 			link = Link{
 | |
| 				Doc:         doc,
 | |
| 				Address:     d.linkAddress,
 | |
| 				Description: description,
 | |
| 			}
 | |
| 
 | |
| 			err = link.categorise()
 | |
| 		} else {
 | |
| 			link, err = newLink(doc, d.linkAddress, description)
 | |
| 		}
 | |
| 
 | |
| 		msg := fmt.Sprintf("test[%d] manual-link: %v: %+v, link: %+v\n", i, createLinkManually, d, link)
 | |
| 
 | |
| 		if d.expectError {
 | |
| 			assert.Error(err, msg)
 | |
| 			continue
 | |
| 		}
 | |
| 
 | |
| 		assert.NoError(err, msg)
 | |
| 
 | |
| 		assert.Equal(link.Doc, doc)
 | |
| 		assert.Equal(link.Address, d.linkAddress)
 | |
| 		assert.Equal(link.Description, description)
 | |
| 		assert.Equal(link.Type, d.expectedType)
 | |
| 
 | |
| 		if d.checkPath {
 | |
| 			assert.Equal(d.expectedPath, link.ResolvedPath)
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestNewLink(t *testing.T) {
 | |
| 	assert := assert.New(t)
 | |
| 
 | |
| 	createLinkAndCategorise(assert, false)
 | |
| }
 | |
| 
 | |
| func TestLinkCategorise(t *testing.T) {
 | |
| 	assert := assert.New(t)
 | |
| 
 | |
| 	createLinkAndCategorise(assert, true)
 | |
| }
 | |
| 
 | |
| func TestLinkHandleImplicitREADME(t *testing.T) {
 | |
| 	assert := assert.New(t)
 | |
| 
 | |
| 	dir, err := os.MkdirTemp("", "")
 | |
| 	assert.NoError(err)
 | |
| 	defer os.RemoveAll(dir)
 | |
| 
 | |
| 	cwd, err := os.Getwd()
 | |
| 	assert.NoError(err)
 | |
| 	defer os.Chdir(cwd)
 | |
| 
 | |
| 	err = os.Chdir(dir)
 | |
| 	assert.NoError(err)
 | |
| 	defer os.RemoveAll(dir)
 | |
| 
 | |
| 	readmeDirName := "dir-with-readme"
 | |
| 	emptyDirName := "empty"
 | |
| 	makeDirs(assert, dir, readmeDirName, emptyDirName)
 | |
| 
 | |
| 	readmePath := filepath.Join(readmeDirName, readmeName)
 | |
| 
 | |
| 	emptyFileName := "empty-file"
 | |
| 
 | |
| 	err = createFile(emptyFileName, "")
 | |
| 	assert.NoError(err)
 | |
| 
 | |
| 	type testData struct {
 | |
| 		linkAddr     string
 | |
| 		expectedPath string
 | |
| 		expectedType LinkType
 | |
| 		isREADME     bool
 | |
| 		expectError  bool
 | |
| 	}
 | |
| 
 | |
| 	data := []testData{
 | |
| 		{"", "", unknownLink, false, true},
 | |
| 		{"foo", "", unknownLink, false, true},
 | |
| 		{emptyFileName, "", unknownLink, false, false},
 | |
| 		{emptyDirName, "", unknownLink, false, false},
 | |
| 		{readmeDirName, readmePath, externalLink, true, false},
 | |
| 	}
 | |
| 
 | |
| 	logger := logrus.WithField("test", "true")
 | |
| 
 | |
| 	for i, d := range data {
 | |
| 		doc := newDoc("foo", logger)
 | |
| 
 | |
| 		link := Link{
 | |
| 			Doc:     doc,
 | |
| 			Address: d.linkAddr,
 | |
| 		}
 | |
| 
 | |
| 		msg := fmt.Sprintf("test[%d]: %+v\n", i, d)
 | |
| 
 | |
| 		isREADME, err := link.handleImplicitREADME()
 | |
| 
 | |
| 		if d.expectError {
 | |
| 			assert.Error(err, msg)
 | |
| 			continue
 | |
| 		}
 | |
| 
 | |
| 		assert.NoError(err, msg)
 | |
| 		assert.Equal(isREADME, d.isREADME)
 | |
| 		assert.Equal(isREADME, d.isREADME)
 | |
| 		assert.Equal(link.Address, d.linkAddr)
 | |
| 		assert.Equal(link.Type, d.expectedType)
 | |
| 		assert.Equal(link.ResolvedPath, d.expectedPath)
 | |
| 	}
 | |
| }
 |