@@ -8,9 +8,15 @@ import (
8
8
"gopkg.in/src-d/go-git.v4/plumbing/storer"
9
9
"gopkg.in/src-d/go-git.v4/storage/memory"
10
10
11
+ "bytes"
11
12
. "gopkg.in/check.v1"
12
13
"gopkg.in/src-d/go-billy.v4/memfs"
14
+ "gopkg.in/src-d/go-billy.v4/osfs"
13
15
"gopkg.in/src-d/go-billy.v4/util"
16
+ "gopkg.in/src-d/go-git.v4/storage/filesystem"
17
+ "io/ioutil"
18
+ "os"
19
+ "os/exec"
14
20
)
15
21
16
22
func (s * WorktreeSuite ) TestCommitInvalidOptions (c * C ) {
@@ -135,6 +141,54 @@ func (s *WorktreeSuite) TestRemoveAndCommitAll(c *C) {
135
141
assertStorageStatus (c , s .Repository , 13 , 11 , 11 , expected )
136
142
}
137
143
144
+ func (s * WorktreeSuite ) TestCommitTreeSort (c * C ) {
145
+ path , err := ioutil .TempDir (os .TempDir (), "test-commit-tree-sort" )
146
+ c .Assert (err , IsNil )
147
+ fs := osfs .New (path )
148
+ st , err := filesystem .NewStorage (fs )
149
+ c .Assert (err , IsNil )
150
+ r , err := Init (st , nil )
151
+ c .Assert (err , IsNil )
152
+
153
+ r , err = Clone (memory .NewStorage (), memfs .New (), & CloneOptions {
154
+ URL : path ,
155
+ })
156
+
157
+ w , err := r .Worktree ()
158
+ c .Assert (err , IsNil )
159
+
160
+ mfs := w .Filesystem
161
+
162
+ err = mfs .MkdirAll ("delta" , 0755 )
163
+ c .Assert (err , IsNil )
164
+
165
+ for _ , p := range []string {"delta_last" , "Gamma" , "delta/middle" , "Beta" , "delta-first" , "alpha" } {
166
+ util .WriteFile (mfs , p , []byte ("foo" ), 0644 )
167
+ _ , err = w .Add (p )
168
+ c .Assert (err , IsNil )
169
+ }
170
+
171
+ _ , err = w .Commit ("foo\n " , & CommitOptions {
172
+ All : true ,
173
+ Author : defaultSignature (),
174
+ })
175
+ c .Assert (err , IsNil )
176
+
177
+ err = r .Push (& PushOptions {})
178
+ c .Assert (err , IsNil )
179
+
180
+ cmd := exec .Command ("git" , "fsck" )
181
+ cmd .Dir = path
182
+ cmd .Env = os .Environ ()
183
+ buf := & bytes.Buffer {}
184
+ cmd .Stderr = buf
185
+ cmd .Stdout = buf
186
+
187
+ err = cmd .Run ()
188
+
189
+ c .Assert (err , IsNil , Commentf ("%s" , buf .Bytes ()))
190
+ }
191
+
138
192
func assertStorageStatus (
139
193
c * C , r * Repository ,
140
194
treesCount , blobCount , commitCount int , head plumbing.Hash ,
0 commit comments