Skip to content

Commit 7cc69a1

Browse files
Add RefDB Backend (Advanced) tests
1 parent 712c4f7 commit 7cc69a1

1 file changed

Lines changed: 140 additions & 0 deletions

File tree

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
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 RefDBBackendAdvancedTests: XCTestCaseStopOnFail
17+
{
18+
func testGitRefDBBackendFS() throws
19+
{
20+
try Repository.withRepository
21+
{
22+
repository in
23+
24+
var backendPointer: UnsafeMutablePointer<git_refdb_backend>? = nil
25+
26+
defer
27+
{
28+
if backendPointer != nil
29+
{
30+
backendPointer?.pointee.free(backendPointer)
31+
}
32+
}
33+
34+
35+
36+
let refDBBackendFSResult: GitErrorCode = gitRefDBBackendFS(
37+
backendOut: &backendPointer,
38+
repo: repository.pointer
39+
)
40+
41+
XCTAssertOK(refDBBackendFSResult)
42+
XCTAssertNotNil(backendPointer)
43+
}
44+
}
45+
46+
47+
48+
func testGitRefDBBackendVersion() throws
49+
{
50+
XCTAssertEqual(Int32(gitRefDBBackendVersion), GIT_REFDB_BACKEND_VERSION)
51+
}
52+
53+
54+
55+
func testGitRefDBInitBackend() throws
56+
{
57+
var refDBBackend = git_refdb_backend()
58+
59+
let refDBInitBackendResult: GitErrorCode = gitRefDBInitBackend(
60+
opts: &refDBBackend,
61+
version: gitRefDBBackendVersion
62+
)
63+
64+
XCTAssertOK(refDBInitBackendResult)
65+
}
66+
67+
68+
69+
func testGitRefDBSetBackend() throws
70+
{
71+
try Repository.withRepository
72+
{
73+
repository in
74+
75+
var backendOwnershipTransferred: Bool = false
76+
77+
var refDBPointer : OpaquePointer? = nil
78+
var backendPointer : UnsafeMutablePointer<git_refdb_backend>? = nil
79+
80+
defer
81+
{
82+
gitRefDBFree(refDB: refDBPointer)
83+
84+
if
85+
!backendOwnershipTransferred,
86+
backendPointer != nil
87+
{
88+
/// Ownership of the memory transfers to `refDBPointer`
89+
/// after adding the backend. Free the memory manually if
90+
/// the memory was allocated, but the add operation failed.
91+
backendPointer?.pointee.free(backendPointer)
92+
}
93+
}
94+
95+
96+
97+
let refDBBackendFSResult: GitErrorCode = gitRefDBBackendFS(
98+
backendOut: &backendPointer,
99+
repo: repository.pointer
100+
)
101+
102+
XCTAssertOK(refDBBackendFSResult)
103+
104+
guard let backendPointer: UnsafeMutablePointer<git_refdb_backend>
105+
= backendPointer
106+
else
107+
{
108+
XCTFail("The reference database backend pointer was nil.")
109+
return
110+
}
111+
112+
113+
114+
let refDBNewResult: GitErrorCode = gitRefDBNew(
115+
out: &refDBPointer,
116+
repo: repository.pointer
117+
)
118+
119+
XCTAssertOK(refDBNewResult)
120+
121+
guard let refDBPointer: OpaquePointer = refDBPointer
122+
else
123+
{
124+
XCTFail("The reference database pointer was nil.")
125+
return
126+
}
127+
128+
129+
130+
let refDBSetBackendResult: GitErrorCode = gitRefDBSetBackend(
131+
refDB: refDBPointer,
132+
backend: backendPointer
133+
)
134+
135+
XCTAssertOK(refDBSetBackendResult)
136+
137+
backendOwnershipTransferred = true
138+
}
139+
}
140+
}

0 commit comments

Comments
 (0)