mirror of
				https://github.com/kovetskiy/mark.git
				synced 2025-11-04 14:27:36 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package util
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/urfave/cli/v3"
 | 
						|
)
 | 
						|
 | 
						|
func runWithArgs(args []string) error {
 | 
						|
	cmd := &cli.Command{
 | 
						|
		Flags: []cli.Flag{
 | 
						|
			&cli.BoolFlag{Name: "title-from-h1"},
 | 
						|
			&cli.BoolFlag{Name: "title-from-filename"},
 | 
						|
		},
 | 
						|
		Before: CheckMutuallyExclusiveTitleFlags,
 | 
						|
		Action: func(ctx context.Context, cmd *cli.Command) error {
 | 
						|
			return nil
 | 
						|
		},
 | 
						|
	}
 | 
						|
	return cmd.Run(context.Background(), args)
 | 
						|
}
 | 
						|
 | 
						|
func TestCheckMutuallyExclusiveTitleFlags(t *testing.T) {
 | 
						|
	t.Run("neither flag set", func(t *testing.T) {
 | 
						|
		err := runWithArgs([]string{"cmd"})
 | 
						|
		if err != nil {
 | 
						|
			t.Errorf("unexpected error: %v", err)
 | 
						|
		}
 | 
						|
	})
 | 
						|
 | 
						|
	t.Run("only title-from-h1 set", func(t *testing.T) {
 | 
						|
		err := runWithArgs([]string{"cmd", "--title-from-h1"})
 | 
						|
		if err != nil {
 | 
						|
			t.Errorf("unexpected error: %v", err)
 | 
						|
		}
 | 
						|
	})
 | 
						|
 | 
						|
	t.Run("only title-from-filename set", func(t *testing.T) {
 | 
						|
		err := runWithArgs([]string{"cmd", "--title-from-filename"})
 | 
						|
		if err != nil {
 | 
						|
			t.Errorf("unexpected error: %v", err)
 | 
						|
		}
 | 
						|
	})
 | 
						|
 | 
						|
	t.Run("both flags set", func(t *testing.T) {
 | 
						|
		err := runWithArgs([]string{"cmd", "--title-from-h1", "--title-from-filename"})
 | 
						|
		if err == nil {
 | 
						|
			t.Errorf("expected error, got nil")
 | 
						|
		}
 | 
						|
	})
 | 
						|
}
 |