Skip to content

Commit 51592d7

Browse files
Added tests for relative-path based origin.
1 parent f5a8a65 commit 51592d7

File tree

1 file changed

+48
-2
lines changed

1 file changed

+48
-2
lines changed

Tests/SourceControlTests/GitRepositoryTests.swift

+48-2
Original file line numberDiff line numberDiff line change
@@ -769,7 +769,53 @@ class GitRepositoryTests: XCTestCase {
769769
}
770770
}
771771

772-
func testValidDirectoryLocal() async throws {
772+
func testValidDirectoryLocalRelativeOrigin() async throws {
773+
try testWithTemporaryDirectory { tmpDir in
774+
// Create a repository.
775+
let packageDir = tmpDir.appending("SomePackage")
776+
try localFileSystem.createDirectory(packageDir)
777+
778+
// Create a repository manager for it.
779+
let repoProvider = GitRepositoryProvider()
780+
let repositoryManager = RepositoryManager(
781+
fileSystem: localFileSystem,
782+
path: packageDir,
783+
provider: repoProvider,
784+
delegate: .none
785+
)
786+
787+
let customRemote = "../OriginOfSomePackage.git"
788+
789+
// Before initializing the directory with a git repo, it is never valid.
790+
XCTAssertThrowsError(try repositoryManager.isValidDirectory(packageDir))
791+
XCTAssertThrowsError(try repositoryManager.isValidDirectory(packageDir, for: RepositorySpecifier(url: SourceControlURL(packageDir.pathString))))
792+
XCTAssertThrowsError(try repositoryManager.isValidDirectory(packageDir, for: RepositorySpecifier(url: SourceControlURL(customRemote))))
793+
794+
initGitRepo(packageDir)
795+
// Set the remote.
796+
try systemQuietly([Git.tool, "-C", packageDir.pathString, "remote", "add", "origin", customRemote])
797+
XCTAssertTrue(try repositoryManager.isValidDirectory(packageDir))
798+
799+
let customRemoteWithoutPathExtension = (customRemote as NSString).deletingPathExtension
800+
XCTAssertTrue(try repositoryManager.isValidDirectory(packageDir, for: RepositorySpecifier(url: SourceControlURL(customRemote))))
801+
// We consider the directory valid even if the remote does not have the same path extension - in this case we expected '.git'.
802+
XCTAssertTrue(try repositoryManager.isValidDirectory(packageDir, for: RepositorySpecifier(url: SourceControlURL(customRemoteWithoutPathExtension))))
803+
// We consider the directory valid even if the remote does not have the same path extension - in this case we expected '.git'.
804+
XCTAssertTrue(try repositoryManager.isValidDirectory(packageDir, for: RepositorySpecifier(url: SourceControlURL((customRemote as NSString).deletingPathExtension + "/"))))
805+
806+
// The following ensure that are actually checking the remote's origin.
807+
XCTAssertFalse(try repositoryManager.isValidDirectory(packageDir, for: RepositorySpecifier(path: AbsolutePath(validating: "/"))))
808+
XCTAssertFalse(try repositoryManager.isValidDirectory(packageDir, for: RepositorySpecifier(url: SourceControlURL("/"))))
809+
XCTAssertFalse(try repositoryManager.isValidDirectory(packageDir, for: RepositorySpecifier(path: packageDir)))
810+
XCTAssertFalse(try repositoryManager.isValidDirectory(packageDir, for: RepositorySpecifier(url: SourceControlURL(packageDir.pathString))))
811+
XCTAssertFalse(try repositoryManager.isValidDirectory(packageDir, for: RepositorySpecifier(path: packageDir.appending(extension: "git"))))
812+
XCTAssertFalse(try repositoryManager.isValidDirectory(packageDir, for: RepositorySpecifier(url: SourceControlURL(packageDir.pathString.appending(".git")))))
813+
814+
XCTAssertFalse(try repositoryManager.isValidDirectory(packageDir, for: RepositorySpecifier(url: SourceControlURL("https://mycustomdomain/some-package.git"))))
815+
}
816+
}
817+
818+
func testValidDirectoryLocalAbsoluteOrigin() async throws {
773819
try testWithTemporaryDirectory { tmpDir in
774820
// Create a repository.
775821
let packageDir = tmpDir.appending("SomePackage")
@@ -819,7 +865,7 @@ class GitRepositoryTests: XCTestCase {
819865
}
820866
}
821867

822-
func testValidDirectoryRemote() async throws {
868+
func testValidDirectoryRemoteOrigin() async throws {
823869
try testWithTemporaryDirectory { tmpDir in
824870
// Create a repository.
825871
let packageDir = tmpDir.appending("SomePackage")

0 commit comments

Comments
 (0)