mirror of
				https://github.com/avelino/awesome-go.git
				synced 2025-10-30 23:17:40 -04:00 
			
		
		
		
	markdown structure improvements
- removing duplicate content menu - enabling vscode editing with markdown lint on - previously it was automatically correcting the content menu swapping, messing up the order and making it fail the tests - markdown lint Signed-off-by: Avelino <avelinorun@gmail.com>
This commit is contained in:
		
							parent
							
								
									720deee8c6
								
							
						
					
					
						commit
						781ae15086
					
				
					 2 changed files with 2627 additions and 2637 deletions
				
			
		
							
								
								
									
										34
									
								
								repo_test.go
									
										
									
									
									
								
							
							
						
						
									
										34
									
								
								repo_test.go
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -10,40 +10,42 @@ import (
 | 
			
		|||
	"github.com/PuerkitoBio/goquery"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	reContainsLink        = regexp.MustCompile(`\* \[.*\]\(.*\)`)
 | 
			
		||||
	reOnlyLink            = regexp.MustCompile(`\* \[.*\]\([^()]*\)$`)
 | 
			
		||||
	reLinkWithDescription = regexp.MustCompile(`\* \[.*\]\(.*\) - \S.*[\.\!]`)
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestAlpha(t *testing.T) {
 | 
			
		||||
	query := startQuery()
 | 
			
		||||
 | 
			
		||||
	query.Find("body > ul").Each(func(_ int, s *goquery.Selection) {
 | 
			
		||||
		testList(t, s)
 | 
			
		||||
	query.Find("body > ul").Each(func(i int, s *goquery.Selection) {
 | 
			
		||||
		if i != 0 {
 | 
			
		||||
			// skip content menu
 | 
			
		||||
			// TODO: the sub items (with 3 hash marks `###`) are staying in
 | 
			
		||||
			// the main list, not respecting the hierarchy and making it
 | 
			
		||||
			// impossible to test the alphabetical order
 | 
			
		||||
			testList(t, s)
 | 
			
		||||
		}
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestDuplicatedLinks(t *testing.T) {
 | 
			
		||||
	query := startQuery()
 | 
			
		||||
	links := make(map[string]bool, 0)
 | 
			
		||||
 | 
			
		||||
	query.Find("body li > a:first-child").Each(func(_ int, s *goquery.Selection) {
 | 
			
		||||
		t.Run(s.Text(), func(t *testing.T) {
 | 
			
		||||
			href, ok := s.Attr("href")
 | 
			
		||||
			if !ok {
 | 
			
		||||
				t.Error("expected to have href")
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if links[href] {
 | 
			
		||||
				t.Fatalf("duplicated link '%s'", href)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			links[href] = true
 | 
			
		||||
		})
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	reContainsLink        = regexp.MustCompile(`\* \[.*\]\(.*\)`)
 | 
			
		||||
	reOnlyLink            = regexp.MustCompile(`\* \[.*\]\([^()]*\)$`)
 | 
			
		||||
	reLinkWithDescription = regexp.MustCompile(`\* \[.*\]\(.*\) - \S.*[\.\!]`)
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Test if an entry has description, it must be separated from link with ` - `
 | 
			
		||||
func TestSeparator(t *testing.T) {
 | 
			
		||||
	var matched, containsLink, noDescription bool
 | 
			
		||||
| 
						 | 
				
			
			@ -60,7 +62,6 @@ func TestSeparator(t *testing.T) {
 | 
			
		|||
			if noDescription {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			matched = reLinkWithDescription.MatchString(line)
 | 
			
		||||
			if !matched {
 | 
			
		||||
				t.Errorf("expected entry to be in form of `* [link] - description.`, got '%s'", line)
 | 
			
		||||
| 
						 | 
				
			
			@ -80,10 +81,7 @@ func testList(t *testing.T, list *goquery.Selection) {
 | 
			
		|||
		testList(t, items)
 | 
			
		||||
		items.RemoveFiltered("ul")
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	category := list.Prev().Text()
 | 
			
		||||
 | 
			
		||||
	t.Run(category, func(t *testing.T) {
 | 
			
		||||
	t.Run(list.Prev().Text(), func(t *testing.T) {
 | 
			
		||||
		checkAlphabeticOrder(t, list)
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -92,11 +90,9 @@ func checkAlphabeticOrder(t *testing.T, s *goquery.Selection) {
 | 
			
		|||
	items := s.Find("li > a:first-child").Map(func(_ int, li *goquery.Selection) string {
 | 
			
		||||
		return strings.ToLower(li.Text())
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	sorted := make([]string, len(items))
 | 
			
		||||
	copy(sorted, items)
 | 
			
		||||
	sort.Strings(sorted)
 | 
			
		||||
 | 
			
		||||
	for k, item := range items {
 | 
			
		||||
		if item != sorted[k] {
 | 
			
		||||
			t.Errorf("expected '%s' but actual is '%s'", sorted[k], item)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue