@@ -171,7 +171,7 @@ func TestEditorOpenWriteQuit(t *testing.T) {
171
171
}
172
172
}
173
173
174
- func TestEditorOpenForceQuit (t * testing.T ) {
174
+ func TestEditorOpenQuitBang (t * testing.T ) {
175
175
ui := newTestUI ()
176
176
editor := NewEditor (ui , window .NewManager (), cmdline .NewCmdline ())
177
177
if err := editor .Init (); err != nil {
@@ -200,6 +200,48 @@ func TestEditorOpenForceQuit(t *testing.T) {
200
200
}
201
201
}
202
202
203
+ func TestEditorOpenWriteQuitBang (t * testing.T ) {
204
+ ui := newTestUI ()
205
+ editor := NewEditor (ui , window .NewManager (), cmdline .NewCmdline ())
206
+ if err := editor .Init (); err != nil {
207
+ t .Fatalf ("err should be nil but got: %v" , err )
208
+ }
209
+ f , err := createTemp (t .TempDir (), "ab" )
210
+ if err != nil {
211
+ t .Fatalf ("err should be nil but got: %v" , err )
212
+ }
213
+ if err := editor .Open (f .Name ()); err != nil {
214
+ t .Fatalf ("err should be nil but got: %v" , err )
215
+ }
216
+ go func () {
217
+ ui .Emit (event.Event {Type : event .SwitchFocus })
218
+ ui .Emit (event.Event {Type : event .StartAppendEnd })
219
+ ui .Emit (event.Event {Type : event .Rune , Rune : 'c' })
220
+ ui .Emit (event.Event {Type : event .ExitInsert })
221
+ ui .Emit (event.Event {Type : event .WriteQuit , Arg : f .Name () + ".out" , Bang : true })
222
+ }()
223
+ if err := editor .Run (); err != nil {
224
+ t .Errorf ("err should be nil but got: %v" , err )
225
+ }
226
+ if err := editor .Close (); err != nil {
227
+ t .Errorf ("err should be nil but got: %v" , err )
228
+ }
229
+ bs , err := os .ReadFile (f .Name ())
230
+ if err != nil {
231
+ t .Errorf ("err should be nil but got: %v" , err )
232
+ }
233
+ if expected := "ab" ; string (bs ) != expected {
234
+ t .Errorf ("file contents should be %q but got %q" , expected , string (bs ))
235
+ }
236
+ bs , err = os .ReadFile (f .Name () + ".out" )
237
+ if err != nil {
238
+ t .Errorf ("err should be nil but got: %v" , err )
239
+ }
240
+ if expected := "abc" ; string (bs ) != expected {
241
+ t .Errorf ("file contents should be %q but got %q" , expected , string (bs ))
242
+ }
243
+ }
244
+
203
245
func TestEditorReadWriteQuit (t * testing.T ) {
204
246
ui := newTestUI ()
205
247
editor := NewEditor (ui , window .NewManager (), cmdline .NewCmdline ())
0 commit comments