porting all github actions from bluesky-social/indigo to tangled CI
at ci 1.7 kB view raw
1package syntax 2 3import ( 4 "bufio" 5 "encoding" 6 "fmt" 7 "os" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11) 12 13func TestInteropHandlesValid(t *testing.T) { 14 assert := assert.New(t) 15 file, err := os.Open("testdata/handle_syntax_valid.txt") 16 assert.NoError(err) 17 defer file.Close() 18 scanner := bufio.NewScanner(file) 19 for scanner.Scan() { 20 line := scanner.Text() 21 if len(line) == 0 || line[0] == '#' { 22 continue 23 } 24 _, err := ParseHandle(line) 25 if err != nil { 26 fmt.Println("FAILED, GOOD: " + line) 27 } 28 assert.NoError(err) 29 } 30 assert.NoError(scanner.Err()) 31} 32 33func TestInteropHandlesInvalid(t *testing.T) { 34 assert := assert.New(t) 35 file, err := os.Open("testdata/handle_syntax_invalid.txt") 36 assert.NoError(err) 37 defer file.Close() 38 scanner := bufio.NewScanner(file) 39 for scanner.Scan() { 40 line := scanner.Text() 41 if len(line) == 0 || line[0] == '#' { 42 continue 43 } 44 _, err := ParseHandle(line) 45 if err == nil { 46 fmt.Println("FAILED, BAD: " + line) 47 } 48 assert.Error(err) 49 } 50 assert.NoError(scanner.Err()) 51} 52 53func TestHandleNormalize(t *testing.T) { 54 assert := assert.New(t) 55 56 handle, err := ParseHandle("JoHn.TeST") 57 assert.NoError(err) 58 assert.Equal("john.test", string(handle.Normalize())) 59 assert.NoError(err) 60 assert.Equal(handle.String(), handle.AtIdentifier().String()) 61 62 _, err = ParseHandle("JoH!n.TeST") 63 assert.Error(err) 64} 65 66func TestHandleNoPanic(t *testing.T) { 67 for _, s := range []string{"", ".", ".."} { 68 bad := Handle(s) 69 _ = bad.Normalize() 70 _ = bad.TLD() 71 _ = bad.AllowedTLD() 72 _ = bad.AtIdentifier() 73 _ = bad.AtIdentifier().String() 74 } 75} 76func TestHandleInterfaces(t *testing.T) { 77 h := Handle("e.com") 78 var _ encoding.TextMarshaler = h 79 var _ encoding.TextUnmarshaler = &h 80}