| 
									
										
										
										
											2020-04-28 17:18:53 +02:00
										 |  |  | import * as core from '@actions/core' | 
					
						
							|  |  |  | import * as path from 'path' | 
					
						
							|  |  |  | import * as io from '@actions/io' | 
					
						
							|  |  |  | import {promises as fs} from 'fs' | 
					
						
							| 
									
										
										
										
											2024-01-22 15:52:35 -05:00
										 |  |  | import {findFilesToUpload} from '../src/shared/search' | 
					
						
							| 
									
										
										
										
											2020-04-28 17:18:53 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | const root = path.join(__dirname, '_temp', 'search') | 
					
						
							|  |  |  | const searchItem1Path = path.join( | 
					
						
							|  |  |  |   root, | 
					
						
							|  |  |  |   'folder-a', | 
					
						
							|  |  |  |   'folder-b', | 
					
						
							|  |  |  |   'folder-c', | 
					
						
							|  |  |  |   'search-item1.txt' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | const searchItem2Path = path.join(root, 'folder-d', 'search-item2.txt') | 
					
						
							|  |  |  | const searchItem3Path = path.join(root, 'folder-d', 'search-item3.txt') | 
					
						
							|  |  |  | const searchItem4Path = path.join(root, 'folder-d', 'search-item4.txt') | 
					
						
							|  |  |  | const searchItem5Path = path.join(root, 'search-item5.txt') | 
					
						
							|  |  |  | const extraSearchItem1Path = path.join( | 
					
						
							|  |  |  |   root, | 
					
						
							|  |  |  |   'folder-a', | 
					
						
							|  |  |  |   'folder-b', | 
					
						
							|  |  |  |   'folder-c', | 
					
						
							|  |  |  |   'extraSearch-item1.txt' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | const extraSearchItem2Path = path.join( | 
					
						
							|  |  |  |   root, | 
					
						
							|  |  |  |   'folder-d', | 
					
						
							|  |  |  |   'extraSearch-item2.txt' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | const extraSearchItem3Path = path.join( | 
					
						
							|  |  |  |   root, | 
					
						
							|  |  |  |   'folder-f', | 
					
						
							|  |  |  |   'extraSearch-item3.txt' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | const extraSearchItem4Path = path.join( | 
					
						
							|  |  |  |   root, | 
					
						
							|  |  |  |   'folder-h', | 
					
						
							|  |  |  |   'folder-i', | 
					
						
							|  |  |  |   'extraSearch-item4.txt' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | const extraSearchItem5Path = path.join( | 
					
						
							|  |  |  |   root, | 
					
						
							|  |  |  |   'folder-h', | 
					
						
							|  |  |  |   'folder-i', | 
					
						
							|  |  |  |   'extraSearch-item5.txt' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | const extraFileInFolderCPath = path.join( | 
					
						
							|  |  |  |   root, | 
					
						
							|  |  |  |   'folder-a', | 
					
						
							|  |  |  |   'folder-b', | 
					
						
							|  |  |  |   'folder-c', | 
					
						
							|  |  |  |   'extra-file-in-folder-c.txt' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | const amazingFileInFolderHPath = path.join(root, 'folder-h', 'amazing-item.txt') | 
					
						
							|  |  |  | const lonelyFilePath = path.join( | 
					
						
							|  |  |  |   root, | 
					
						
							|  |  |  |   'folder-h', | 
					
						
							|  |  |  |   'folder-j', | 
					
						
							|  |  |  |   'folder-k', | 
					
						
							|  |  |  |   'lonely-file.txt' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-15 17:26:43 -04:00
										 |  |  | const hiddenFile = path.join(root, '.hidden-file.txt') | 
					
						
							| 
									
										
										
										
											2024-08-15 16:22:09 -04:00
										 |  |  | const fileInHiddenFolderPath = path.join( | 
					
						
							|  |  |  |   root, | 
					
						
							|  |  |  |   '.hidden-folder', | 
					
						
							|  |  |  |   'folder-in-hidden-folder', | 
					
						
							|  |  |  |   'file.txt' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | const fileInHiddenFolderInFolderA = path.join( | 
					
						
							|  |  |  |   root, | 
					
						
							|  |  |  |   'folder-a', | 
					
						
							|  |  |  |   '.hidden-folder-in-folder-a', | 
					
						
							|  |  |  |   'file.txt' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-28 17:18:53 +02:00
										 |  |  | describe('Search', () => { | 
					
						
							|  |  |  |   beforeAll(async () => { | 
					
						
							|  |  |  |     // mock all output so that there is less noise when running tests
 | 
					
						
							|  |  |  |     jest.spyOn(console, 'log').mockImplementation(() => {}) | 
					
						
							|  |  |  |     jest.spyOn(core, 'debug').mockImplementation(() => {}) | 
					
						
							|  |  |  |     jest.spyOn(core, 'info').mockImplementation(() => {}) | 
					
						
							|  |  |  |     jest.spyOn(core, 'warning').mockImplementation(() => {}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // clear temp directory
 | 
					
						
							|  |  |  |     await io.rmRF(root) | 
					
						
							|  |  |  |     await fs.mkdir(path.join(root, 'folder-a', 'folder-b', 'folder-c'), { | 
					
						
							|  |  |  |       recursive: true | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  |     await fs.mkdir(path.join(root, 'folder-a', 'folder-b', 'folder-e'), { | 
					
						
							|  |  |  |       recursive: true | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  |     await fs.mkdir(path.join(root, 'folder-d'), { | 
					
						
							|  |  |  |       recursive: true | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  |     await fs.mkdir(path.join(root, 'folder-f'), { | 
					
						
							|  |  |  |       recursive: true | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  |     await fs.mkdir(path.join(root, 'folder-g'), { | 
					
						
							|  |  |  |       recursive: true | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  |     await fs.mkdir(path.join(root, 'folder-h', 'folder-i'), { | 
					
						
							|  |  |  |       recursive: true | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  |     await fs.mkdir(path.join(root, 'folder-h', 'folder-j', 'folder-k'), { | 
					
						
							|  |  |  |       recursive: true | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-15 16:22:09 -04:00
										 |  |  |     await fs.mkdir( | 
					
						
							|  |  |  |       path.join(root, '.hidden-folder', 'folder-in-hidden-folder'), | 
					
						
							|  |  |  |       {recursive: true} | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     await fs.mkdir(path.join(root, 'folder-a', '.hidden-folder-in-folder-a'), { | 
					
						
							|  |  |  |       recursive: true | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-28 17:18:53 +02:00
										 |  |  |     await fs.writeFile(searchItem1Path, 'search item1 file') | 
					
						
							|  |  |  |     await fs.writeFile(searchItem2Path, 'search item2 file') | 
					
						
							|  |  |  |     await fs.writeFile(searchItem3Path, 'search item3 file') | 
					
						
							|  |  |  |     await fs.writeFile(searchItem4Path, 'search item4 file') | 
					
						
							|  |  |  |     await fs.writeFile(searchItem5Path, 'search item5 file') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await fs.writeFile(extraSearchItem1Path, 'extraSearch item1 file') | 
					
						
							|  |  |  |     await fs.writeFile(extraSearchItem2Path, 'extraSearch item2 file') | 
					
						
							|  |  |  |     await fs.writeFile(extraSearchItem3Path, 'extraSearch item3 file') | 
					
						
							|  |  |  |     await fs.writeFile(extraSearchItem4Path, 'extraSearch item4 file') | 
					
						
							|  |  |  |     await fs.writeFile(extraSearchItem5Path, 'extraSearch item5 file') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await fs.writeFile(extraFileInFolderCPath, 'extra file') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await fs.writeFile(amazingFileInFolderHPath, 'amazing file') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await fs.writeFile(lonelyFilePath, 'all by itself') | 
					
						
							| 
									
										
										
										
											2024-08-15 17:26:43 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     await fs.writeFile(hiddenFile, 'hidden file') | 
					
						
							|  |  |  |     await fs.writeFile(fileInHiddenFolderPath, 'file in hidden directory') | 
					
						
							|  |  |  |     await fs.writeFile(fileInHiddenFolderInFolderA, 'file in hidden directory') | 
					
						
							| 
									
										
										
										
											2020-04-28 17:18:53 +02:00
										 |  |  |     /* | 
					
						
							|  |  |  |       Directory structure of files that get created: | 
					
						
							|  |  |  |       root/ | 
					
						
							| 
									
										
										
										
											2024-08-15 16:22:09 -04:00
										 |  |  |           .hidden-folder/ | 
					
						
							|  |  |  |               folder-in-hidden-folder/ | 
					
						
							|  |  |  |                   file.txt | 
					
						
							| 
									
										
										
										
											2020-04-28 17:18:53 +02:00
										 |  |  |           folder-a/ | 
					
						
							| 
									
										
										
										
											2024-08-15 16:22:09 -04:00
										 |  |  |               .hidden-folder-in-folder-a/ | 
					
						
							|  |  |  |                   file.txt | 
					
						
							| 
									
										
										
										
											2020-04-28 17:18:53 +02:00
										 |  |  |               folder-b/ | 
					
						
							|  |  |  |                   folder-c/ | 
					
						
							|  |  |  |                       search-item1.txt | 
					
						
							|  |  |  |                       extraSearch-item1.txt | 
					
						
							|  |  |  |                       extra-file-in-folder-c.txt | 
					
						
							|  |  |  |                   folder-e/ | 
					
						
							|  |  |  |           folder-d/ | 
					
						
							|  |  |  |               search-item2.txt | 
					
						
							|  |  |  |               search-item3.txt | 
					
						
							|  |  |  |               search-item4.txt | 
					
						
							|  |  |  |               extraSearch-item2.txt | 
					
						
							|  |  |  |           folder-f/ | 
					
						
							|  |  |  |               extraSearch-item3.txt | 
					
						
							|  |  |  |           folder-g/ | 
					
						
							|  |  |  |           folder-h/ | 
					
						
							|  |  |  |               amazing-item.txt | 
					
						
							|  |  |  |               folder-i/ | 
					
						
							|  |  |  |                   extraSearch-item4.txt | 
					
						
							|  |  |  |                   extraSearch-item5.txt | 
					
						
							|  |  |  |               folder-j/ | 
					
						
							|  |  |  |                   folder-k/ | 
					
						
							|  |  |  |                       lonely-file.txt | 
					
						
							| 
									
										
										
										
											2024-08-15 16:22:09 -04:00
										 |  |  |           .hidden-file.txt | 
					
						
							| 
									
										
										
										
											2020-04-28 17:18:53 +02:00
										 |  |  |           search-item5.txt | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('Single file search - Absolute Path', async () => { | 
					
						
							|  |  |  |     const searchResult = await findFilesToUpload(extraFileInFolderCPath) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.length).toEqual(1) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload[0]).toEqual(extraFileInFolderCPath) | 
					
						
							|  |  |  |     expect(searchResult.rootDirectory).toEqual( | 
					
						
							|  |  |  |       path.join(root, 'folder-a', 'folder-b', 'folder-c') | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('Single file search - Relative Path', async () => { | 
					
						
							|  |  |  |     const relativePath = path.join( | 
					
						
							|  |  |  |       '__tests__', | 
					
						
							|  |  |  |       '_temp', | 
					
						
							|  |  |  |       'search', | 
					
						
							|  |  |  |       'folder-a', | 
					
						
							|  |  |  |       'folder-b', | 
					
						
							|  |  |  |       'folder-c', | 
					
						
							|  |  |  |       'search-item1.txt' | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const searchResult = await findFilesToUpload(relativePath) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.length).toEqual(1) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload[0]).toEqual(searchItem1Path) | 
					
						
							|  |  |  |     expect(searchResult.rootDirectory).toEqual( | 
					
						
							|  |  |  |       path.join(root, 'folder-a', 'folder-b', 'folder-c') | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('Single file using wildcard', async () => { | 
					
						
							|  |  |  |     const expectedRoot = path.join(root, 'folder-h') | 
					
						
							|  |  |  |     const searchPath = path.join(root, 'folder-h', '**/*lonely*') | 
					
						
							|  |  |  |     const searchResult = await findFilesToUpload(searchPath) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.length).toEqual(1) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload[0]).toEqual(lonelyFilePath) | 
					
						
							|  |  |  |     expect(searchResult.rootDirectory).toEqual(expectedRoot) | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('Single file using directory', async () => { | 
					
						
							|  |  |  |     const searchPath = path.join(root, 'folder-h', 'folder-j') | 
					
						
							|  |  |  |     const searchResult = await findFilesToUpload(searchPath) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.length).toEqual(1) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload[0]).toEqual(lonelyFilePath) | 
					
						
							|  |  |  |     expect(searchResult.rootDirectory).toEqual(searchPath) | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('Directory search - Absolute Path', async () => { | 
					
						
							|  |  |  |     const searchPath = path.join(root, 'folder-h') | 
					
						
							|  |  |  |     const searchResult = await findFilesToUpload(searchPath) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.length).toEqual(4) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect( | 
					
						
							|  |  |  |       searchResult.filesToUpload.includes(amazingFileInFolderHPath) | 
					
						
							|  |  |  |     ).toEqual(true) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem4Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem5Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(lonelyFilePath)).toEqual(true) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(searchResult.rootDirectory).toEqual(searchPath) | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('Directory search - Relative Path', async () => { | 
					
						
							|  |  |  |     const searchPath = path.join('__tests__', '_temp', 'search', 'folder-h') | 
					
						
							|  |  |  |     const expectedRootDirectory = path.join(root, 'folder-h') | 
					
						
							|  |  |  |     const searchResult = await findFilesToUpload(searchPath) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.length).toEqual(4) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect( | 
					
						
							|  |  |  |       searchResult.filesToUpload.includes(amazingFileInFolderHPath) | 
					
						
							|  |  |  |     ).toEqual(true) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem4Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem5Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(lonelyFilePath)).toEqual(true) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(searchResult.rootDirectory).toEqual(expectedRootDirectory) | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('Wildcard search - Absolute Path', async () => { | 
					
						
							|  |  |  |     const searchPath = path.join(root, '**/*[Ss]earch*') | 
					
						
							|  |  |  |     const searchResult = await findFilesToUpload(searchPath) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.length).toEqual(10) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(searchItem1Path)).toEqual(true) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(searchItem2Path)).toEqual(true) | 
					
						
							| 
									
										
										
										
											2020-07-09 20:53:45 +02:00
										 |  |  |     expect(searchResult.filesToUpload.includes(searchItem3Path)).toEqual(true) | 
					
						
							| 
									
										
										
										
											2020-04-28 17:18:53 +02:00
										 |  |  |     expect(searchResult.filesToUpload.includes(searchItem4Path)).toEqual(true) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(searchItem5Path)).toEqual(true) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem1Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem2Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem3Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem4Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem5Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(searchResult.rootDirectory).toEqual(root) | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('Wildcard search - Relative Path', async () => { | 
					
						
							|  |  |  |     const searchPath = path.join( | 
					
						
							|  |  |  |       '__tests__', | 
					
						
							|  |  |  |       '_temp', | 
					
						
							|  |  |  |       'search', | 
					
						
							|  |  |  |       '**/*[Ss]earch*' | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     const searchResult = await findFilesToUpload(searchPath) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.length).toEqual(10) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(searchItem1Path)).toEqual(true) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(searchItem2Path)).toEqual(true) | 
					
						
							| 
									
										
										
										
											2020-07-09 20:53:45 +02:00
										 |  |  |     expect(searchResult.filesToUpload.includes(searchItem3Path)).toEqual(true) | 
					
						
							| 
									
										
										
										
											2020-04-28 17:18:53 +02:00
										 |  |  |     expect(searchResult.filesToUpload.includes(searchItem4Path)).toEqual(true) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(searchItem5Path)).toEqual(true) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem1Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem2Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem3Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem4Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem5Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(searchResult.rootDirectory).toEqual(root) | 
					
						
							|  |  |  |   }) | 
					
						
							| 
									
										
										
										
											2020-07-09 20:53:45 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   it('Multi path search - root directory', async () => { | 
					
						
							|  |  |  |     const searchPath1 = path.join(root, 'folder-a') | 
					
						
							|  |  |  |     const searchPath2 = path.join(root, 'folder-d') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const searchPaths = searchPath1 + '\n' + searchPath2 | 
					
						
							|  |  |  |     const searchResult = await findFilesToUpload(searchPaths) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(searchResult.rootDirectory).toEqual(root) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.length).toEqual(7) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(searchItem1Path)).toEqual(true) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(searchItem2Path)).toEqual(true) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(searchItem3Path)).toEqual(true) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(searchItem4Path)).toEqual(true) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem1Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem2Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraFileInFolderCPath)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('Multi path search - with exclude character', async () => { | 
					
						
							|  |  |  |     const searchPath1 = path.join(root, 'folder-a') | 
					
						
							|  |  |  |     const searchPath2 = path.join(root, 'folder-d') | 
					
						
							|  |  |  |     const searchPath3 = path.join(root, 'folder-a', 'folder-b', '**/extra*.txt') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // negating the third search path
 | 
					
						
							|  |  |  |     const searchPaths = searchPath1 + '\n' + searchPath2 + '\n!' + searchPath3 | 
					
						
							|  |  |  |     const searchResult = await findFilesToUpload(searchPaths) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(searchResult.rootDirectory).toEqual(root) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.length).toEqual(5) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(searchItem1Path)).toEqual(true) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(searchItem2Path)).toEqual(true) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(searchItem3Path)).toEqual(true) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(searchItem4Path)).toEqual(true) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem2Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('Multi path search - non root directory', async () => { | 
					
						
							|  |  |  |     const searchPath1 = path.join(root, 'folder-h', 'folder-i') | 
					
						
							|  |  |  |     const searchPath2 = path.join(root, 'folder-h', 'folder-j', 'folder-k') | 
					
						
							|  |  |  |     const searchPath3 = amazingFileInFolderHPath | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const searchPaths = [searchPath1, searchPath2, searchPath3].join('\n') | 
					
						
							|  |  |  |     const searchResult = await findFilesToUpload(searchPaths) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(searchResult.rootDirectory).toEqual(path.join(root, 'folder-h')) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.length).toEqual(4) | 
					
						
							|  |  |  |     expect( | 
					
						
							|  |  |  |       searchResult.filesToUpload.includes(amazingFileInFolderHPath) | 
					
						
							|  |  |  |     ).toEqual(true) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem4Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(extraSearchItem5Path)).toEqual( | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload.includes(lonelyFilePath)).toEqual(true) | 
					
						
							|  |  |  |   }) | 
					
						
							| 
									
										
										
										
											2024-08-15 16:22:09 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |   it('Hidden files ignored by default', async () => { | 
					
						
							|  |  |  |     const searchPath = path.join(root, '**/*') | 
					
						
							|  |  |  |     const searchResult = await findFilesToUpload(searchPath) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-15 17:26:43 -04:00
										 |  |  |     expect(searchResult.filesToUpload).not.toContain(hiddenFile) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload).not.toContain(fileInHiddenFolderPath) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload).not.toContain( | 
					
						
							|  |  |  |       fileInHiddenFolderInFolderA | 
					
						
							| 
									
										
										
										
											2024-08-15 16:22:09 -04:00
										 |  |  |     ) | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('Hidden files included', async () => { | 
					
						
							|  |  |  |     const searchPath = path.join(root, '**/*') | 
					
						
							|  |  |  |     const searchResult = await findFilesToUpload(searchPath, true) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-15 17:26:43 -04:00
										 |  |  |     expect(searchResult.filesToUpload).toContain(hiddenFile) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload).toContain(fileInHiddenFolderPath) | 
					
						
							|  |  |  |     expect(searchResult.filesToUpload).toContain(fileInHiddenFolderInFolderA) | 
					
						
							| 
									
										
										
										
											2024-08-15 16:22:09 -04:00
										 |  |  |   }) | 
					
						
							| 
									
										
										
										
											2020-04-28 17:18:53 +02:00
										 |  |  | }) |