mirror of
https://github.com/aler9/rtsp-simple-server
synced 2026-04-22 23:17:11 +08:00
92 lines
1.8 KiB
Go
92 lines
1.8 KiB
Go
//go:build enable_linters
|
|
|
|
package docsorder
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"regexp"
|
|
"sort"
|
|
"strconv"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
const repoPath = "../../.."
|
|
|
|
var numberedFileRe = regexp.MustCompile(`^(\d+)-`)
|
|
|
|
type numberedFile struct {
|
|
name string
|
|
numStr string
|
|
num int
|
|
}
|
|
|
|
func TestDocsOrder(t *testing.T) {
|
|
entries, err := os.ReadDir(repoPath + "/docs")
|
|
require.NoError(t, err)
|
|
|
|
for _, entry := range entries {
|
|
if !entry.IsDir() {
|
|
continue
|
|
}
|
|
|
|
dirPath := fmt.Sprintf("%s/docs/%s", repoPath, entry.Name())
|
|
|
|
files, err := os.ReadDir(dirPath)
|
|
require.NoError(t, err)
|
|
|
|
var numbered []numberedFile
|
|
for _, f := range files {
|
|
if f.IsDir() {
|
|
continue
|
|
}
|
|
m := numberedFileRe.FindStringSubmatch(f.Name())
|
|
if m == nil {
|
|
continue
|
|
}
|
|
num, err2 := strconv.Atoi(m[1])
|
|
if err2 != nil {
|
|
t.Errorf("docs/%s/%s: cannot parse numeric prefix %q", entry.Name(), f.Name(), m[1])
|
|
continue
|
|
}
|
|
numbered = append(numbered, numberedFile{
|
|
name: f.Name(),
|
|
numStr: m[1],
|
|
num: num,
|
|
})
|
|
}
|
|
|
|
if len(numbered) == 0 {
|
|
continue
|
|
}
|
|
|
|
sort.Slice(numbered, func(i, j int) bool {
|
|
return numbered[i].num < numbered[j].num
|
|
})
|
|
|
|
usesPadding := len(numbered) >= 10
|
|
|
|
for i, nf := range numbered {
|
|
expected := i + 1
|
|
|
|
if nf.num != expected {
|
|
t.Errorf("docs/%s/%s: expected number %d, got %d", entry.Name(), nf.name, expected, nf.num)
|
|
}
|
|
|
|
if usesPadding {
|
|
expectedStr := fmt.Sprintf("%02d", expected)
|
|
if nf.numStr != expectedStr {
|
|
t.Errorf("docs/%s/%s: expected zero-padded prefix %q, got %q", entry.Name(), nf.name, expectedStr, nf.numStr)
|
|
}
|
|
} else {
|
|
if strings.HasPrefix(nf.numStr, "0") {
|
|
t.Errorf("docs/%s/%s: unexpected zero-padded prefix %q (directory has fewer than 10 files)", entry.Name(), nf.name, nf.numStr)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|