|
47 | 47 | QuickSpecBegin(GTRemotePushSpec)
|
48 | 48 |
|
49 | 49 | describe(@"pushing", ^{
|
50 |
| - __block GTRepository *localRepo; |
51 |
| - __block GTRepository *remoteRepo; |
52 | 50 | __block GTRepository *notBareRepo;
|
53 |
| - __block GTRemote *remote; |
54 |
| - __block NSURL *remoteRepoURL; |
55 |
| - __block NSURL *localRepoURL; |
56 |
| - __block NSError *error; |
57 | 51 |
|
58 | 52 | beforeEach(^{
|
59 |
| - // This repo is not really "bare" |
60 | 53 | notBareRepo = self.bareFixtureRepository;
|
61 | 54 | expect(notBareRepo).notTo(beNil());
|
| 55 | + // This repo is not really "bare" according to libgit2 |
62 | 56 | expect(@(notBareRepo.isBare)).to(beFalse());
|
63 | 57 | });
|
64 | 58 |
|
65 | 59 | describe(@"to remote", ^{ // via local transport
|
| 60 | + __block NSURL *remoteRepoURL; |
| 61 | + __block NSURL *localRepoURL; |
| 62 | + __block GTRepository *remoteRepo; |
| 63 | + __block GTRepository *localRepo; |
| 64 | + __block GTRemote *remote; |
| 65 | + __block NSError *error; |
| 66 | + |
66 | 67 | beforeEach(^{
|
67 | 68 | // Make a bare clone to serve as the remote
|
68 | 69 | remoteRepoURL = [notBareRepo.gitDirectoryURL.URLByDeletingLastPathComponent URLByAppendingPathComponent:@"bare_remote_repo.git"];
|
|
92 | 93 | });
|
93 | 94 |
|
94 | 95 | afterEach(^{
|
95 |
| - [NSFileManager.defaultManager removeItemAtURL:remoteRepoURL error:NULL]; |
96 |
| - [NSFileManager.defaultManager removeItemAtURL:localRepoURL error:NULL]; |
| 96 | + [NSFileManager.defaultManager removeItemAtURL:remoteRepoURL error:&error]; |
| 97 | + expect(error).to(beNil()); |
| 98 | + [NSFileManager.defaultManager removeItemAtURL:localRepoURL error:&error]; |
| 99 | + expect(error).to(beNil()); |
97 | 100 | error = NULL;
|
98 | 101 | });
|
99 | 102 |
|
|
121 | 124 | });
|
122 | 125 |
|
123 | 126 | it(@"can push one commit", ^{
|
124 |
| - // Create a new commit in the master repo |
| 127 | + // Create a new commit in the local repo |
125 | 128 | NSString *testData = @"Test";
|
126 | 129 | NSString *fileName = @"test.txt";
|
127 | 130 | GTCommit *testCommit = createCommitInRepository(@"Test commit", [testData dataUsingEncoding:NSUTF8StringEncoding], fileName, localRepo);
|
|
131 | 134 | GTBranch *masterBranch = localBranchWithName(@"master", localRepo);
|
132 | 135 | expect(@([masterBranch numberOfCommitsWithError:NULL])).to(equal(@4));
|
133 | 136 |
|
| 137 | + // Number of commits on tracking branch before push |
| 138 | + BOOL success = NO; |
| 139 | + GTBranch *localTrackingBranch = [masterBranch trackingBranchWithError:&error success:&success]; |
| 140 | + expect(error).to(beNil()); |
| 141 | + expect(@(success)).to(beTrue()); |
| 142 | + expect(@([localTrackingBranch numberOfCommitsWithError:NULL])).to(equal(@3)); |
| 143 | + |
134 | 144 | // Number of commits on remote before push
|
135 |
| - GTBranch *remoteMasterBranch = localBranchWithName(@"master", remoteRepo); |
136 |
| - expect(@([remoteMasterBranch numberOfCommitsWithError:NULL])).to(equal(@3)); |
| 145 | +// GTBranch *remoteMasterBranch = localBranchWithName(@"master", remoteRepo); |
| 146 | +// expect(@([remoteMasterBranch numberOfCommitsWithError:NULL])).to(equal(@3)); |
137 | 147 |
|
138 | 148 | // Push
|
139 | 149 | __block BOOL transferProgressed = NO;
|
|
144 | 154 | expect(@(result)).to(beTruthy());
|
145 | 155 | expect(@(transferProgressed)).to(beFalse()); // Local transport doesn't currently call progress callbacks
|
146 | 156 |
|
| 157 | + // Number of commits on tracking branch after push |
| 158 | + localTrackingBranch = [masterBranch trackingBranchWithError:&error success:&success]; |
| 159 | + expect(error).to(beNil()); |
| 160 | + expect(@(success)).to(beTrue()); |
| 161 | + expect(@([localTrackingBranch numberOfCommitsWithError:NULL])).to(equal(@3)); |
| 162 | + |
147 | 163 | // Refetch master branch to ensure the commit count is accurate
|
148 |
| - remoteMasterBranch = localBranchWithName(@"master", remoteRepo); |
| 164 | +// remoteMasterBranch = localBranchWithName(@"master", remoteRepo); |
149 | 165 |
|
150 | 166 | // Number of commits on remote after push
|
151 |
| - expect(@([remoteMasterBranch numberOfCommitsWithError:NULL])).to(equal(@4)); |
| 167 | +// expect(@([remoteMasterBranch numberOfCommitsWithError:NULL])).to(equal(@4)); |
152 | 168 |
|
153 | 169 | // Verify commit is in remote
|
154 | 170 | GTCommit *pushedCommit = [remoteRepo lookUpObjectByOID:testCommit.OID objectType:GTObjectTypeCommit error:&error];
|
|
166 | 182 | });
|
167 | 183 |
|
168 | 184 | it(@"can push two branches", ^{
|
| 185 | + // refs/heads/master on local |
169 | 186 | GTBranch *branch1 = localBranchWithName(@"master", localRepo);
|
170 |
| - GTBranch *branch2 = localBranchWithName(@"packed", remoteRepo); |
| 187 | + |
| 188 | + // Create refs/heads/new_master on local |
| 189 | + [localRepo createReferenceNamed:@"refs/heads/new_master" fromReference:branch1.reference committer:localRepo.userSignatureForNow message:@"Create new_master branch" error:&error]; |
| 190 | + GTBranch *branch2 = localBranchWithName(@"new_master", localRepo); |
171 | 191 |
|
172 | 192 | BOOL result = [localRepo pushBranches:@[ branch1, branch2 ] toRemote:remote withOptions:nil error:&error progress:NULL];
|
173 | 193 | expect(error).to(beNil());
|
|
0 commit comments