github.com/trevoraustin/hub@v2.2.0-preview1.0.20141105230840-96d8bfc654cc+incompatible/github/editor_test.go (about) 1 package github 2 3 import ( 4 "bufio" 5 "fmt" 6 "io/ioutil" 7 "os" 8 "path/filepath" 9 "strings" 10 "testing" 11 12 "github.com/bmizerany/assert" 13 ) 14 15 func TestEditor_openAndEdit_deleteFileWhenOpeningEditorFails(t *testing.T) { 16 tempFile, _ := ioutil.TempFile("", "editor-test") 17 ioutil.WriteFile(tempFile.Name(), []byte("hello"), 0644) 18 editor := Editor{ 19 Program: "memory", 20 File: tempFile.Name(), 21 Topic: "test", 22 openEditor: func(program string, file string) error { 23 assert.Equal(t, "memory", program) 24 assert.Equal(t, tempFile.Name(), file) 25 return fmt.Errorf("error") 26 }, 27 } 28 29 _, err := editor.openAndEdit() 30 assert.NotEqual(t, nil, err) 31 assert.Equal(t, "error using text editor for test message", fmt.Sprintf("%s", err)) 32 33 _, err = os.Stat(tempFile.Name()) 34 assert.T(t, os.IsNotExist(err)) 35 } 36 37 func TestEditor_openAndEdit_readFileIfExist(t *testing.T) { 38 tempFile, _ := ioutil.TempFile("", "editor-test") 39 ioutil.WriteFile(tempFile.Name(), []byte("hello"), 0644) 40 editor := Editor{ 41 Program: "memory", 42 File: tempFile.Name(), 43 openEditor: func(program string, file string) error { 44 assert.Equal(t, "memory", program) 45 assert.Equal(t, tempFile.Name(), file) 46 47 return nil 48 }, 49 } 50 51 content, err := editor.openAndEdit() 52 assert.Equal(t, nil, err) 53 assert.Equal(t, "hello", string(content)) 54 } 55 56 func TestEditor_openAndEdit_writeFileIfNotExist(t *testing.T) { 57 tempDir, _ := ioutil.TempDir("", "editor-test") 58 tempFile := filepath.Join(tempDir, "PULLREQ") 59 editor := Editor{ 60 Program: "memory", 61 File: tempFile, 62 openEditor: func(program string, file string) error { 63 assert.Equal(t, "memory", program) 64 assert.Equal(t, tempFile, file) 65 66 return ioutil.WriteFile(file, []byte("hello"), 0644) 67 }, 68 } 69 70 content, err := editor.openAndEdit() 71 assert.Equal(t, nil, err) 72 assert.Equal(t, "hello", string(content)) 73 } 74 75 func TestEditor_EditTitleAndBody(t *testing.T) { 76 tempDir, _ := ioutil.TempDir("", "editor-test") 77 tempFile := filepath.Join(tempDir, "PULLREQ") 78 editor := Editor{ 79 Program: "memory", 80 File: tempFile, 81 CS: "#", 82 openEditor: func(program string, file string) error { 83 assert.Equal(t, "memory", program) 84 assert.Equal(t, tempFile, file) 85 86 message := `A title 87 A title continues 88 89 A body 90 A body continues 91 # comment 92 ` 93 return ioutil.WriteFile(file, []byte(message), 0644) 94 }, 95 } 96 97 title, body, err := editor.EditTitleAndBody() 98 assert.Equal(t, nil, err) 99 assert.Equal(t, "A title A title continues", title) 100 assert.Equal(t, "A body\nA body continues", body) 101 } 102 103 func TestReadTitleAndBody(t *testing.T) { 104 message := `A title 105 A title continues 106 107 A body 108 A body continues 109 # comment 110 ` 111 r := strings.NewReader(message) 112 reader := bufio.NewReader(r) 113 title, body, err := readTitleAndBody(reader, "#") 114 assert.Equal(t, nil, err) 115 assert.Equal(t, "A title A title continues", title) 116 assert.Equal(t, "A body\nA body continues", body) 117 118 message = `# Dat title 119 120 / This line is commented out. 121 122 Dem body. 123 ` 124 r = strings.NewReader(message) 125 reader = bufio.NewReader(r) 126 title, body, err = readTitleAndBody(reader, "/") 127 assert.Equal(t, nil, err) 128 assert.Equal(t, "# Dat title", title) 129 assert.Equal(t, "Dem body.", body) 130 } 131 132 func TestGetMessageFile(t *testing.T) { 133 gitPullReqMsgFile, _ := getMessageFile("PULLREQ") 134 assert.T(t, strings.Contains(gitPullReqMsgFile, "PULLREQ_EDITMSG")) 135 }