|
@@ -281,6 +281,65 @@ describe('git-directory-helper tests', () => {
|
|
expect(git.branchDelete).toHaveBeenCalledWith(false, 'local-branch-2')
|
|
expect(git.branchDelete).toHaveBeenCalledWith(false, 'local-branch-2')
|
|
})
|
|
})
|
|
|
|
|
|
|
|
+ const cleanWhenSubmoduleStatusIsFalse =
|
|
|
|
+ 'cleans when submodule status is false'
|
|
|
|
+
|
|
|
|
+ it(cleanWhenSubmoduleStatusIsFalse, async () => {
|
|
|
|
+ // Arrange
|
|
|
|
+ await setup(cleanWhenSubmoduleStatusIsFalse)
|
|
|
|
+ await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
|
|
|
|
+
|
|
|
|
+ //mock bad submodule
|
|
|
|
+
|
|
|
|
+ const submoduleStatus = git.submoduleStatus as jest.Mock<any, any>
|
|
|
|
+ submoduleStatus.mockImplementation(async (remote: boolean) => {
|
|
|
|
+ return false
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ // Act
|
|
|
|
+ await gitDirectoryHelper.prepareExistingDirectory(
|
|
|
|
+ git,
|
|
|
|
+ repositoryPath,
|
|
|
|
+ repositoryUrl,
|
|
|
|
+ clean,
|
|
|
|
+ ref
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ // Assert
|
|
|
|
+ const files = await fs.promises.readdir(repositoryPath)
|
|
|
|
+ expect(files).toHaveLength(0)
|
|
|
|
+ expect(git.tryClean).toHaveBeenCalled()
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ const doesNotCleanWhenSubmoduleStatusIsTrue =
|
|
|
|
+ 'does not clean when submodule status is true'
|
|
|
|
+
|
|
|
|
+ it(doesNotCleanWhenSubmoduleStatusIsTrue, async () => {
|
|
|
|
+ // Arrange
|
|
|
|
+ await setup(doesNotCleanWhenSubmoduleStatusIsTrue)
|
|
|
|
+ await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
|
|
|
|
+
|
|
|
|
+ const submoduleStatus = git.submoduleStatus as jest.Mock<any, any>
|
|
|
|
+ submoduleStatus.mockImplementation(async (remote: boolean) => {
|
|
|
|
+ return true
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ // Act
|
|
|
|
+ await gitDirectoryHelper.prepareExistingDirectory(
|
|
|
|
+ git,
|
|
|
|
+ repositoryPath,
|
|
|
|
+ repositoryUrl,
|
|
|
|
+ clean,
|
|
|
|
+ ref
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ // Assert
|
|
|
|
+
|
|
|
|
+ const files = await fs.promises.readdir(repositoryPath)
|
|
|
|
+ expect(files.sort()).toEqual(['.git', 'my-file'])
|
|
|
|
+ expect(git.tryClean).toHaveBeenCalled()
|
|
|
|
+ })
|
|
|
|
+
|
|
const removesLockFiles = 'removes lock files'
|
|
const removesLockFiles = 'removes lock files'
|
|
it(removesLockFiles, async () => {
|
|
it(removesLockFiles, async () => {
|
|
// Arrange
|
|
// Arrange
|
|
@@ -423,6 +482,9 @@ async function setup(testName: string): Promise<void> {
|
|
submoduleForeach: jest.fn(),
|
|
submoduleForeach: jest.fn(),
|
|
submoduleSync: jest.fn(),
|
|
submoduleSync: jest.fn(),
|
|
submoduleUpdate: jest.fn(),
|
|
submoduleUpdate: jest.fn(),
|
|
|
|
+ submoduleStatus: jest.fn(async () => {
|
|
|
|
+ return true
|
|
|
|
+ }),
|
|
tagExists: jest.fn(),
|
|
tagExists: jest.fn(),
|
|
tryClean: jest.fn(async () => {
|
|
tryClean: jest.fn(async () => {
|
|
return true
|
|
return true
|