mirror of
				https://github.com/actions/setup-node.git
				synced 2025-11-04 13:29:12 +08:00 
			
		
		
		
	Detect cached folders from multiple directories (#735)
* Add project-dir * Fix find lock file * Remove package-dir input * format & resolve conflicts * Add unit tests * build dist * Apply change request fixes * handle non-dir cache-dependency-path * bump cache version * run checks * Handle globs in cacheDependencyPath * refactor, introduce `cacheDependencyPathToProjectsDirectories` it is necessary for the next PR related yarn optimization * Changes requests * Apply fixes * review fixes * add e2e * Add unique * review updates * review updates second stage * Review fixes 3 * imporve e2e tests
This commit is contained in:
		
							
								
								
									
										18
									
								
								__tests__/mock/glob-mock.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								__tests__/mock/glob-mock.test.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
import {MockGlobber} from './glob-mock';
 | 
			
		||||
 | 
			
		||||
describe('mocked globber tests', () => {
 | 
			
		||||
  it('globber should return generator', async () => {
 | 
			
		||||
    const globber = new MockGlobber(['aaa', 'bbb', 'ccc']);
 | 
			
		||||
    const generator = globber.globGenerator();
 | 
			
		||||
    const result: string[] = [];
 | 
			
		||||
    for await (const itemPath of generator) {
 | 
			
		||||
      result.push(itemPath);
 | 
			
		||||
    }
 | 
			
		||||
    expect(result).toEqual(['aaa', 'bbb', 'ccc']);
 | 
			
		||||
  });
 | 
			
		||||
  it('globber should return glob', async () => {
 | 
			
		||||
    const globber = new MockGlobber(['aaa', 'bbb', 'ccc']);
 | 
			
		||||
    const result: string[] = await globber.glob();
 | 
			
		||||
    expect(result).toEqual(['aaa', 'bbb', 'ccc']);
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										29
									
								
								__tests__/mock/glob-mock.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								__tests__/mock/glob-mock.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
import {Globber} from '@actions/glob';
 | 
			
		||||
 | 
			
		||||
export class MockGlobber implements Globber {
 | 
			
		||||
  private readonly expected: string[];
 | 
			
		||||
  constructor(expected: string[]) {
 | 
			
		||||
    this.expected = expected;
 | 
			
		||||
  }
 | 
			
		||||
  getSearchPaths(): string[] {
 | 
			
		||||
    return this.expected.slice();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async glob(): Promise<string[]> {
 | 
			
		||||
    const result: string[] = [];
 | 
			
		||||
    for await (const itemPath of this.globGenerator()) {
 | 
			
		||||
      result.push(itemPath);
 | 
			
		||||
    }
 | 
			
		||||
    return result;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async *globGenerator(): AsyncGenerator<string, void> {
 | 
			
		||||
    for (const e of this.expected) {
 | 
			
		||||
      yield e;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static async create(expected: string[]): Promise<MockGlobber> {
 | 
			
		||||
    return new MockGlobber(expected);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user