@@ -107,7 +107,7 @@ func TestAPI(t *testing.T) {
107
107
t .Run ("Window" , testWindow (v ))
108
108
t .Run ("Tabpage" , testTabpage (v ))
109
109
t .Run ("Lines" , testLines (v ))
110
- t .Run ("Commands " , testCommands (v ))
110
+ t .Run ("Command " , testCommand (v ))
111
111
t .Run ("Var" , testVar (v ))
112
112
t .Run ("Message" , testMessage (v ))
113
113
t .Run ("Key" , testKey (v ))
@@ -2046,34 +2046,102 @@ func testLines(v *Nvim) func(*testing.T) {
2046
2046
}
2047
2047
}
2048
2048
2049
- func testCommands (v * Nvim ) func (* testing.T ) {
2049
+ func testCommand (v * Nvim ) func (* testing.T ) {
2050
2050
return func (t * testing.T ) {
2051
- t .Run ("Nvim" , func (t * testing.T ) {
2052
- opts := map [string ]interface {}{
2053
- "builtin" : false ,
2054
- }
2055
- cmds , err := v .Commands (opts )
2056
- if err != nil {
2057
- t .Fatal (err )
2058
- }
2059
- if len (cmds ) > 0 {
2060
- t .Fatalf ("expected 0 length but got %#v" , cmds )
2061
- }
2062
- })
2051
+ t .Run ("Commands" , func (t * testing.T ) {
2052
+ t .Run ("Nvim" , func (t * testing.T ) {
2053
+ opts := map [string ]interface {}{
2054
+ "builtin" : false ,
2055
+ }
2056
+ cmds , err := v .Commands (opts )
2057
+ if err != nil {
2058
+ t .Fatal (err )
2059
+ }
2060
+ if len (cmds ) > 0 {
2061
+ t .Fatalf ("expected 0 length but got %#v" , cmds )
2062
+ }
2063
+ })
2063
2064
2064
- t .Run ("Batch" , func (t * testing.T ) {
2065
- b := v .NewBatch ()
2065
+ t .Run ("Batch" , func (t * testing.T ) {
2066
+ b := v .NewBatch ()
2066
2067
2067
- opts := map [string ]interface {}{
2068
- "builtin" : false ,
2069
- }
2070
- var cmds map [string ]* Command
2071
- b .Commands (opts , & cmds )
2072
- if err := b .Execute (); err != nil {
2073
- t .Fatal (err )
2068
+ opts := map [string ]interface {}{
2069
+ "builtin" : false ,
2070
+ }
2071
+ var cmds map [string ]* Command
2072
+ b .Commands (opts , & cmds )
2073
+ if err := b .Execute (); err != nil {
2074
+ t .Fatal (err )
2075
+ }
2076
+ if len (cmds ) > 0 {
2077
+ t .Fatalf ("expected 0 length but got %#v" , cmds )
2078
+ }
2079
+ })
2080
+ })
2081
+
2082
+ t .Run ("UserCommand" , func (t * testing.T ) {
2083
+ tests := map [string ]struct {
2084
+ name string
2085
+ command UserCommand
2086
+ opts map [string ]interface {}
2087
+ want string
2088
+ }{
2089
+ "SayHello" : {
2090
+ name : "SayHello" ,
2091
+ command : UserVimCommand (`echo "Hello world!"` ),
2092
+ opts : map [string ]interface {}{
2093
+ "force" : false ,
2094
+ },
2095
+ want : "Hello world!" ,
2096
+ },
2074
2097
}
2075
- if len (cmds ) > 0 {
2076
- t .Fatalf ("expected 0 length but got %#v" , cmds )
2098
+ for name , tt := range tests {
2099
+ t .Run (path .Join (name , "Nvim" ), func (t * testing.T ) {
2100
+ skipVersion (t , "v0.7.0" )
2101
+
2102
+ if err := v .AddUserCommand (tt .name , tt .command , tt .opts ); err != nil {
2103
+ t .Fatal (err )
2104
+ }
2105
+ t .Cleanup (func () {
2106
+ if err := v .DeleteUserCommand (tt .name ); err != nil {
2107
+ t .Fatal (err )
2108
+ }
2109
+ })
2110
+
2111
+ got , err := v .Exec (tt .name , true )
2112
+ if err != nil {
2113
+ t .Fatal (err )
2114
+ }
2115
+ if ! strings .EqualFold (tt .want , got ) {
2116
+ t .Fatalf ("expected %s but got %s" , tt .want , got )
2117
+ }
2118
+ })
2119
+
2120
+ t .Run (path .Join (name , "Batch" ), func (t * testing.T ) {
2121
+ skipVersion (t , "v0.7.0" )
2122
+
2123
+ b := v .NewBatch ()
2124
+
2125
+ b .AddUserCommand (tt .name , tt .command , tt .opts )
2126
+ if err := b .Execute (); err != nil {
2127
+ t .Fatal (err )
2128
+ }
2129
+ t .Cleanup (func () {
2130
+ b .DeleteUserCommand (tt .name )
2131
+ if err := b .Execute (); err != nil {
2132
+ t .Fatal (err )
2133
+ }
2134
+ })
2135
+
2136
+ var got string
2137
+ b .Exec (tt .name , true , & got )
2138
+ if err := b .Execute (); err != nil {
2139
+ t .Fatal (err )
2140
+ }
2141
+ if ! strings .EqualFold (tt .want , got ) {
2142
+ t .Fatalf ("expected %s but got %s" , tt .want , got )
2143
+ }
2144
+ })
2077
2145
}
2078
2146
})
2079
2147
}
0 commit comments