Read-only mirror — the public repositories of the Forgejo instance, refreshed every 10 minutes. The live instance (fg.dieschoenewolke.de) is reachable only over the VPN; clone here with https://git.dieschoenewolke.de/git/<owner>/<repo>.git.
summaryrefslogtreecommitdiff
path: root/__test__
diff options
context:
space:
mode:
authorRobert Wieczoreck <1175008+RobertWieczoreck@users.noreply.github.com>2023-08-16 22:34:54 +0200
committerGitHub <noreply@github.com>2023-08-16 16:34:54 -0400
commit656b4ef8263848a38ec468288a4192bae917f502 (patch)
tree8b7b41f04d13160fd1eab8b6b2c73c6e4247b1bb /__test__
parentc9ee2550280ba382763bd72bd8065404a3082b18 (diff)
Add option to fetch tags even if fetch-depth > 0 (#579)
* Add option to fetch tags even if fetch-depth > 0 * Add jest tests for fetchDepth and fetchTags options
Diffstat (limited to '__test__')
-rw-r--r--__test__/git-auth-helper.test.ts1
-rw-r--r--__test__/git-command-manager.test.ts176
-rw-r--r--__test__/input-helper.test.ts1
3 files changed, 178 insertions, 0 deletions
diff --git a/__test__/git-auth-helper.test.ts b/__test__/git-auth-helper.test.ts
index fec6573..8e580c1 100644
--- a/__test__/git-auth-helper.test.ts
+++ b/__test__/git-auth-helper.test.ts
@@ -805,6 +805,7 @@ async function setup(testName: string): Promise<void> {
sparseCheckout: [],
sparseCheckoutConeMode: true,
fetchDepth: 1,
+ fetchTags: false,
lfs: false,
submodules: false,
nestedSubmodules: false,
diff --git a/__test__/git-command-manager.test.ts b/__test__/git-command-manager.test.ts
index 1c31ef9..16c348f 100644
--- a/__test__/git-command-manager.test.ts
+++ b/__test__/git-command-manager.test.ts
@@ -88,3 +88,179 @@ describe('git-auth-helper tests', () => {
expect(branches.sort()).toEqual(['foo'].sort())
})
})
+
+describe('Test fetchDepth and fetchTags options', () => {
+ beforeEach(async () => {
+ jest.spyOn(fshelper, 'fileExistsSync').mockImplementation(jest.fn())
+ jest.spyOn(fshelper, 'directoryExistsSync').mockImplementation(jest.fn())
+ mockExec.mockImplementation((path, args, options) => {
+ console.log(args, options.listeners.stdout)
+
+ if (args.includes('version')) {
+ options.listeners.stdout(Buffer.from('2.18'))
+ }
+
+ return 0
+ })
+ })
+
+ afterEach(() => {
+ jest.restoreAllMocks()
+ })
+
+ it('should call execGit with the correct arguments when fetchDepth is 0 and fetchTags is true', async () => {
+ jest.spyOn(exec, 'exec').mockImplementation(mockExec)
+ const workingDirectory = 'test'
+ const lfs = false
+ const doSparseCheckout = false
+ git = await commandManager.createCommandManager(
+ workingDirectory,
+ lfs,
+ doSparseCheckout
+ )
+
+ const refSpec = ['refspec1', 'refspec2']
+ const options = {
+ filter: 'filterValue',
+ fetchDepth: 0,
+ fetchTags: true
+ }
+
+ await git.fetch(refSpec, options)
+
+ expect(mockExec).toHaveBeenCalledWith(
+ expect.any(String),
+ [
+ '-c',
+ 'protocol.version=2',
+ 'fetch',
+ '--prune',
+ '--progress',
+ '--no-recurse-submodules',
+ '--filter=filterValue',
+ 'origin',
+ 'refspec1',
+ 'refspec2'
+ ],
+ expect.any(Object)
+ )
+ })
+
+ it('should call execGit with the correct arguments when fetchDepth is 0 and fetchTags is false', async () => {
+ jest.spyOn(exec, 'exec').mockImplementation(mockExec)
+
+ const workingDirectory = 'test'
+ const lfs = false
+ const doSparseCheckout = false
+ git = await commandManager.createCommandManager(
+ workingDirectory,
+ lfs,
+ doSparseCheckout
+ )
+ const refSpec = ['refspec1', 'refspec2']
+ const options = {
+ filter: 'filterValue',
+ fetchDepth: 0,
+ fetchTags: false
+ }
+
+ await git.fetch(refSpec, options)
+
+ expect(mockExec).toHaveBeenCalledWith(
+ expect.any(String),
+ [
+ '-c',
+ 'protocol.version=2',
+ 'fetch',
+ '--no-tags',
+ '--prune',
+ '--progress',
+ '--no-recurse-submodules',
+ '--filter=filterValue',
+ 'origin',
+ 'refspec1',
+ 'refspec2'
+ ],
+ expect.any(Object)
+ )
+ })
+
+ it('should call execGit with the correct arguments when fetchDepth is 1 and fetchTags is false', async () => {
+ jest.spyOn(exec, 'exec').mockImplementation(mockExec)
+
+ const workingDirectory = 'test'
+ const lfs = false
+ const doSparseCheckout = false
+ git = await commandManager.createCommandManager(
+ workingDirectory,
+ lfs,
+ doSparseCheckout
+ )
+ const refSpec = ['refspec1', 'refspec2']
+ const options = {
+ filter: 'filterValue',
+ fetchDepth: 1,
+ fetchTags: false
+ }
+
+ await git.fetch(refSpec, options)
+
+ expect(mockExec).toHaveBeenCalledWith(
+ expect.any(String),
+ [
+ '-c',
+ 'protocol.version=2',
+ 'fetch',
+ '--no-tags',
+ '--prune',
+ '--progress',
+ '--no-recurse-submodules',
+ '--filter=filterValue',
+ '--depth=1',
+ 'origin',
+ 'refspec1',
+ 'refspec2'
+ ],
+ expect.any(Object)
+ )
+ })
+
+ it('should call execGit with the correct arguments when fetchDepth is 1 and fetchTags is true', async () => {
+ jest.spyOn(exec, 'exec').mockImplementation(mockExec)
+
+ const workingDirectory = 'test'
+ const lfs = false
+ const doSparseCheckout = false
+ git = await commandManager.createCommandManager(
+ workingDirectory,
+ lfs,
+ doSparseCheckout
+ )
+ const refSpec = ['refspec1', 'refspec2']
+ const options = {
+ filter: 'filterValue',
+ fetchDepth: 1,
+ fetchTags: true
+ }
+
+ await git.fetch(refSpec, options)
+
+ expect(mockExec).toHaveBeenCalledWith(
+ expect.any(String),
+ [
+ '-c',
+ 'protocol.version=2',
+ 'fetch',
+ '--prune',
+ '--progress',
+ '--no-recurse-submodules',
+ '--filter=filterValue',
+ '--depth=1',
+ 'origin',
+ 'refspec1',
+ 'refspec2'
+ ],
+ expect.any(Object)
+ )
+ })
+})
diff --git a/__test__/input-helper.test.ts b/__test__/input-helper.test.ts
index 069fda4..aa58415 100644
--- a/__test__/input-helper.test.ts
+++ b/__test__/input-helper.test.ts
@@ -82,6 +82,7 @@ describe('input-helper tests', () => {
expect(settings.sparseCheckout).toBe(undefined)
expect(settings.sparseCheckoutConeMode).toBe(true)
expect(settings.fetchDepth).toBe(1)
+ expect(settings.fetchTags).toBe(false)
expect(settings.lfs).toBe(false)
expect(settings.ref).toBe('refs/heads/some-ref')
expect(settings.repositoryName).toBe('some-repo')