Skip to content

Commit f0620be

Browse files
Add Refs (Advanced) tests
1 parent 0a14eda commit f0620be

1 file changed

Lines changed: 127 additions & 0 deletions

File tree

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
//===----------------------------------------------------------------------===//
2+
//
3+
// This source file is part of the swift-libgit2 open source project.
4+
//
5+
// Copyright (c) Margins Technologies LLC.
6+
// Licensed under the Apache License, Version 2.0.
7+
//
8+
//===----------------------------------------------------------------------===//
9+
10+
import CLibgit2
11+
import XCTest
12+
@testable import SwiftLibgit2
13+
14+
15+
16+
final class RefsAdvancedTests: XCTestCaseStopOnFail
17+
{
18+
func testGitReferenceAlloc() throws
19+
{
20+
try Repository.withRepository
21+
{
22+
repository in
23+
24+
var directRefPointer: OpaquePointer? = nil
25+
26+
defer
27+
{
28+
gitReferenceFree(ref: directRefPointer)
29+
}
30+
31+
32+
33+
let refName : String = "HEAD"
34+
let refOID : GitOID = repository.headOID
35+
36+
directRefPointer = gitReferenceAlloc(
37+
name: refName,
38+
oid: refOID,
39+
peel: refOID
40+
)
41+
42+
guard let directRefPointer: OpaquePointer = directRefPointer
43+
else
44+
{
45+
XCTFail("The direct reference pointer was nil.")
46+
return
47+
}
48+
49+
50+
51+
let directRefName: String?
52+
= gitReferenceName(ref: directRefPointer)
53+
54+
XCTAssertNotNil(directRefName)
55+
XCTAssertEqual(directRefName, refName)
56+
57+
58+
59+
let directRefType: GitReferenceT?
60+
= gitReferenceType(ref: directRefPointer)
61+
62+
XCTAssertNotNil(directRefType)
63+
XCTAssertEqual(directRefType, .gitReferenceDirect)
64+
65+
66+
67+
let directTargetOID: GitOID?
68+
= gitReferenceTarget(ref: directRefPointer)
69+
70+
XCTAssertNotNil(directTargetOID)
71+
XCTAssertEqual(directTargetOID, refOID)
72+
}
73+
}
74+
75+
76+
77+
func testGitReferenceAllocSymbolic() throws
78+
{
79+
var symbolicRefPointer: OpaquePointer? = nil
80+
81+
defer
82+
{
83+
gitReferenceFree(ref: symbolicRefPointer)
84+
}
85+
86+
87+
88+
let refName : String = "refs/heads/symbolic-test"
89+
let refTargetName : String = "HEAD"
90+
91+
symbolicRefPointer = gitReferenceAllocSymbolic(
92+
name: refName,
93+
target: refTargetName
94+
)
95+
96+
guard let symbolicRefPointer: OpaquePointer = symbolicRefPointer
97+
else
98+
{
99+
XCTFail("The symbolic reference pointer was nil.")
100+
return
101+
}
102+
103+
104+
105+
let symbolicRefName: String?
106+
= gitReferenceName(ref: symbolicRefPointer)
107+
108+
XCTAssertNotNil(symbolicRefName)
109+
XCTAssertEqual(symbolicRefName, refName)
110+
111+
112+
113+
let symbolicRefType: GitReferenceT?
114+
= gitReferenceType(ref: symbolicRefPointer)
115+
116+
XCTAssertNotNil(symbolicRefType)
117+
XCTAssertEqual(symbolicRefType, .gitReferenceSymbolic)
118+
119+
120+
121+
let symbolicTarget: String?
122+
= gitReferenceSymbolicTarget(ref: symbolicRefPointer)
123+
124+
XCTAssertNotNil(symbolicTarget)
125+
XCTAssertEqual(symbolicTarget, refTargetName)
126+
}
127+
}

0 commit comments

Comments
 (0)