From ce2cdf54445062f557c4888422fcad5c3d88a7b3 Mon Sep 17 00:00:00 2001
From: Aparna Jyothi <aparnajyothi-y@github.com>
Date: Fri, 13 Sep 2024 16:14:09 +0530
Subject: [PATCH] failure check fix

---
 __tests__/cache-utils.test.ts | 328 ++++++++++++----------------------
 1 file changed, 118 insertions(+), 210 deletions(-)

diff --git a/__tests__/cache-utils.test.ts b/__tests__/cache-utils.test.ts
index a8c881e5..ddce5712 100644
--- a/__tests__/cache-utils.test.ts
+++ b/__tests__/cache-utils.test.ts
@@ -12,8 +12,8 @@ import {
 import fs from 'fs';
 import * as cacheUtils from '../src/cache-utils';
 import * as glob from '@actions/glob';
-import {Globber} from '@actions/glob';
-import {MockGlobber} from './mock/glob-mock';
+import { Globber } from '@actions/glob';
+import { MockGlobber } from './mock/glob-mock';
 
 describe('cache-utils', () => {
   const versionYarn1 = '1.2.3';
@@ -26,32 +26,26 @@ describe('cache-utils', () => {
   let fsRealPathSyncSpy: jest.SpyInstance;
 
   beforeEach(() => {
-    console.log('::stop-commands::stoptoken');
     process.env['GITHUB_WORKSPACE'] = path.join(__dirname, 'data');
     debugSpy = jest.spyOn(core, 'debug');
-    debugSpy.mockImplementation(msg => {});
+    debugSpy.mockImplementation(() => {});
 
     info = jest.spyOn(core, 'info');
     warningSpy = jest.spyOn(core, 'warning');
 
     isFeatureAvailable = jest.spyOn(cache, 'isFeatureAvailable');
-
     getCommandOutputSpy = jest.spyOn(utils, 'getCommandOutput');
 
     fsRealPathSyncSpy = jest.spyOn(fs, 'realpathSync');
-    fsRealPathSyncSpy.mockImplementation(dirName => {
-      return dirName;
-    });
+    fsRealPathSyncSpy.mockImplementation(dirName => dirName);
   });
 
   afterEach(() => {
     jest.resetAllMocks();
-    jest.clearAllMocks();
-    //jest.restoreAllMocks();
+    process.env['GITHUB_SERVER_URL'] = ''; // Ensure environment variables are cleaned up
   });
 
   afterAll(async () => {
-    console.log('::stoptoken::');
     jest.restoreAllMocks();
   }, 100000);
 
@@ -65,9 +59,7 @@ describe('cache-utils', () => {
       ['npm7', null]
     ])('getPackageManagerInfo for %s is %o', async (packageManager, result) => {
       getCommandOutputSpy.mockImplementationOnce(() => versionYarn1);
-      await expect(utils.getPackageManagerInfo(packageManager)).resolves.toBe(
-        result
-      );
+      await expect(utils.getPackageManagerInfo(packageManager)).resolves.toBe(result);
     });
   });
 
@@ -81,7 +73,7 @@ describe('cache-utils', () => {
     );
   });
 
-  it('isCacheFeatureAvailable for GHES has an interhal error', () => {
+  it('isCacheFeatureAvailable for GHES has an internal error', () => {
     isFeatureAvailable.mockImplementation(() => false);
     process.env['GITHUB_SERVER_URL'] = '';
     isCacheFeatureAvailable();
@@ -96,12 +88,6 @@ describe('cache-utils', () => {
     expect(isCacheFeatureAvailable()).toStrictEqual(true);
   });
 
-  afterEach(() => {
-    process.env['GITHUB_SERVER_URL'] = '';
-    jest.resetAllMocks();
-    jest.clearAllMocks();
-  });
-
   describe('getCacheDirectoriesPaths', () => {
     let existsSpy: jest.SpyInstance;
     let lstatSpy: jest.SpyInstance;
@@ -117,10 +103,8 @@ describe('cache-utils', () => {
       }));
 
       globCreateSpy = jest.spyOn(glob, 'create');
-
       globCreateSpy.mockImplementation(
-        (pattern: string): Promise<Globber> =>
-          MockGlobber.create(['/foo', '/bar'])
+        (pattern: string): Promise<Globber> => MockGlobber.create(['/foo', '/bar'])
       );
 
       resetProjectDirectoriesMemoized();
@@ -139,29 +123,18 @@ describe('cache-utils', () => {
       [supportedPackageManagers.pnpm, ''],
       [supportedPackageManagers.pnpm, '/dir/file.lock'],
       [supportedPackageManagers.pnpm, '/**/file.lock']
-    ])(
-      'getCacheDirectoriesPaths should return one dir for non yarn',
-      async (packageManagerInfo, cacheDependency) => {
-        getCommandOutputSpy.mockImplementation(() => 'foo');
+    ])('getCacheDirectoriesPaths should return one dir for non yarn', async (packageManagerInfo, cacheDependency) => {
+      getCommandOutputSpy.mockImplementation(() => 'foo');
 
-        const dirs = await cacheUtils.getCacheDirectories(
-          packageManagerInfo,
-          cacheDependency
-        );
-        expect(dirs).toEqual(['foo']);
-        // to do not call for a version
-        // call once for get cache folder
-        expect(getCommandOutputSpy).toHaveBeenCalledTimes(1);
-      }
-    );
+      const dirs = await cacheUtils.getCacheDirectories(packageManagerInfo, cacheDependency);
+      expect(dirs).toEqual(['foo']);
+      expect(getCommandOutputSpy).toHaveBeenCalledTimes(1);
+    });
 
     it('getCacheDirectoriesPaths should return one dir for yarn without cacheDependency', async () => {
       getCommandOutputSpy.mockImplementation(() => 'foo');
 
-      const dirs = await cacheUtils.getCacheDirectories(
-        supportedPackageManagers.yarn,
-        ''
-      );
+      const dirs = await cacheUtils.getCacheDirectories(supportedPackageManagers.yarn, '');
       expect(dirs).toEqual(['foo']);
     });
 
@@ -175,189 +148,124 @@ describe('cache-utils', () => {
       [supportedPackageManagers.yarn, ''],
       [supportedPackageManagers.yarn, '/dir/file.lock'],
       [supportedPackageManagers.yarn, '/**/file.lock']
-    ])(
-      'getCacheDirectoriesPaths should throw for getCommandOutput returning empty',
-      async (packageManagerInfo, cacheDependency) => {
-        getCommandOutputSpy.mockImplementation((command: string) =>
-          // return empty string to indicate getCacheFolderPath failed
-          //        --version still works
-          command.includes('version') ? '1.' : ''
-        );
+    ])('getCacheDirectoriesPaths should throw for getCommandOutput returning empty', async (packageManagerInfo, cacheDependency) => {
+      getCommandOutputSpy.mockImplementation((command: string) =>
+        command.includes('version') ? '1.' : ''
+      );
 
-        await expect(
-          cacheUtils.getCacheDirectories(packageManagerInfo, cacheDependency)
-        ).rejects.toThrow(); //'Could not get cache folder path for /dir');
-      }
-    );
+      await expect(cacheUtils.getCacheDirectories(packageManagerInfo, cacheDependency)).rejects.toThrow();
+    });
 
     it.each([
       [supportedPackageManagers.yarn, '/dir/file.lock'],
       [supportedPackageManagers.yarn, '/**/file.lock']
-    ])(
-      'getCacheDirectoriesPaths should nothrow in case of having not directories',
-      async (packageManagerInfo, cacheDependency) => {
-        lstatSpy.mockImplementation(arg => ({
-          isDirectory: () => false
-        }));
+    ])('getCacheDirectoriesPaths should not throw in case of having no directories', async (packageManagerInfo, cacheDependency) => {
+      lstatSpy.mockImplementation(arg => ({
+        isDirectory: () => false
+      }));
 
-        await cacheUtils.getCacheDirectories(
-          packageManagerInfo,
-          cacheDependency
-        );
-        expect(warningSpy).toHaveBeenCalledTimes(1);
-        expect(warningSpy).toHaveBeenCalledWith(
-          `No existing directories found containing cache-dependency-path="${cacheDependency}"`
-        );
-      }
-    );
+      await cacheUtils.getCacheDirectories(packageManagerInfo, cacheDependency);
+      expect(warningSpy).toHaveBeenCalledTimes(1);
+      expect(warningSpy).toHaveBeenCalledWith(
+        `No existing directories found containing cache-dependency-path="${cacheDependency}"`
+      );
+    });
 
-    it.each(['1.1.1', '2.2.2'])(
-      'getCacheDirectoriesPaths yarn v%s should return one dir without cacheDependency',
-      async version => {
-        getCommandOutputSpy.mockImplementationOnce(() => version);
-        getCommandOutputSpy.mockImplementationOnce(() => `foo${version}`);
+    it.each(['1.1.1', '2.2.2'])('getCacheDirectoriesPaths yarn v%s should return one dir without cacheDependency', async version => {
+      getCommandOutputSpy.mockImplementationOnce(() => version);
+      getCommandOutputSpy.mockImplementationOnce(() => `foo${version}`);
 
-        const dirs = await cacheUtils.getCacheDirectories(
-          supportedPackageManagers.yarn,
-          ''
-        );
-        expect(dirs).toEqual([`foo${version}`]);
-      }
-    );
+      const dirs = await cacheUtils.getCacheDirectories(supportedPackageManagers.yarn, '');
+      expect(dirs).toEqual([`foo${version}`]);
+    });
 
-    it.each(['1.1.1', '2.2.2'])(
-      'getCacheDirectoriesPaths yarn v%s should return 2 dirs with globbed cacheDependency',
-      async version => {
-        let dirNo = 1;
-        getCommandOutputSpy.mockImplementation((command: string) =>
-          command.includes('version') ? version : `file_${version}_${dirNo++}`
-        );
-        globCreateSpy.mockImplementation(
-          (pattern: string): Promise<Globber> =>
-            MockGlobber.create(['/tmp/dir1/file', '/tmp/dir2/file'])
-        );
+    it.each(['1.1.1', '2.2.2'])('getCacheDirectoriesPaths yarn v%s should return 2 dirs with globbed cacheDependency', async version => {
+      let dirNo = 1;
+      getCommandOutputSpy.mockImplementation((command: string) =>
+        command.includes('version') ? version : `file_${version}_${dirNo++}`
+      );
+      globCreateSpy.mockImplementation(
+        (pattern: string): Promise<Globber> => MockGlobber.create(['/tmp/dir1/file', '/tmp/dir2/file'])
+      );
 
-        const dirs = await cacheUtils.getCacheDirectories(
-          supportedPackageManagers.yarn,
-          '/tmp/**/file'
-        );
-        expect(dirs).toEqual([`file_${version}_1`, `file_${version}_2`]);
-      }
-    );
+      const dirs = await cacheUtils.getCacheDirectories(supportedPackageManagers.yarn, '/tmp/**/file');
+      expect(dirs).toEqual([`file_${version}_1`, `file_${version}_2`]);
+    });
 
-    it.each(['1.1.1', '2.2.2'])(
-      'getCacheDirectoriesPaths yarn v%s should return 2 dirs  with globbed cacheDependency expanding to duplicates',
-      async version => {
-        let dirNo = 1;
-        getCommandOutputSpy.mockImplementation((command: string) =>
-          command.includes('version') ? version : `file_${version}_${dirNo++}`
-        );
-        globCreateSpy.mockImplementation(
-          (pattern: string): Promise<Globber> =>
-            MockGlobber.create([
-              '/tmp/dir1/file',
-              '/tmp/dir2/file',
-              '/tmp/dir1/file'
-            ])
-        );
+    it.each(['1.1.1', '2.2.2'])('getCacheDirectoriesPaths yarn v%s should return 2 dirs with globbed cacheDependency expanding to duplicates', async version => {
+      let dirNo = 1;
+      getCommandOutputSpy.mockImplementation((command: string) =>
+        command.includes('version') ? version : `file_${version}_${dirNo++}`
+      );
+      globCreateSpy.mockImplementation(
+        (pattern: string): Promise<Globber> => MockGlobber.create([
+          '/tmp/dir1/file',
+          '/tmp/dir2/file',
+          '/tmp/dir1/file'
+        ])
+      );
 
-        const dirs = await cacheUtils.getCacheDirectories(
-          supportedPackageManagers.yarn,
-          '/tmp/**/file'
-        );
-        expect(dirs).toEqual([`file_${version}_1`, `file_${version}_2`]);
-      }
-    );
+      const dirs = await cacheUtils.getCacheDirectories(supportedPackageManagers.yarn, '/tmp/**/file');
+      expect(dirs).toEqual([`file_${version}_1`, `file_${version}_2`]);
+    });
 
-    it.each(['1.1.1', '2.2.2'])(
-      'getCacheDirectoriesPaths yarn v%s should return 2 uniq dirs despite duplicate cache directories',
-      async version => {
-        let dirNo = 1;
-        getCommandOutputSpy.mockImplementation((command: string) =>
-          command.includes('version')
-            ? version
-            : `file_${version}_${dirNo++ % 2}`
-        );
-        globCreateSpy.mockImplementation(
-          (pattern: string): Promise<Globber> =>
-            MockGlobber.create([
-              '/tmp/dir1/file',
-              '/tmp/dir2/file',
-              '/tmp/dir3/file'
-            ])
-        );
+    it.each(['1.1.1', '2.2.2'])('getCacheDirectoriesPaths yarn v%s should return 2 unique dirs despite duplicate cache directories', async version => {
+      let dirNo = 1;
+      getCommandOutputSpy.mockImplementation((command: string) =>
+        command.includes('version') ? version : `file_${version}_${dirNo++ % 2}`
+      );
+      globCreateSpy.mockImplementation(
+        (pattern: string): Promise<Globber> => MockGlobber.create([
+          '/tmp/dir1/file',
+          '/tmp/dir2/file',
+          '/tmp/dir3/file'
+        ])
+      );
 
-        const dirs = await cacheUtils.getCacheDirectories(
-          supportedPackageManagers.yarn,
-          '/tmp/**/file'
-        );
-        expect(dirs).toEqual([`file_${version}_1`, `file_${version}_0`]);
-        expect(getCommandOutputSpy).toHaveBeenCalledTimes(6);
-        expect(getCommandOutputSpy).toHaveBeenCalledWith(
-          'yarn --version',
-          '/tmp/dir1'
-        );
-        expect(getCommandOutputSpy).toHaveBeenCalledWith(
-          'yarn --version',
-          '/tmp/dir2'
-        );
-        expect(getCommandOutputSpy).toHaveBeenCalledWith(
-          'yarn --version',
-          '/tmp/dir3'
-        );
-        expect(getCommandOutputSpy).toHaveBeenCalledWith(
-          version.startsWith('1.')
-            ? 'yarn cache dir'
-            : 'yarn config get cacheFolder',
-          '/tmp/dir1'
-        );
-        expect(getCommandOutputSpy).toHaveBeenCalledWith(
-          version.startsWith('1.')
-            ? 'yarn cache dir'
-            : 'yarn config get cacheFolder',
-          '/tmp/dir2'
-        );
-        expect(getCommandOutputSpy).toHaveBeenCalledWith(
-          version.startsWith('1.')
-            ? 'yarn cache dir'
-            : 'yarn config get cacheFolder',
-          '/tmp/dir3'
-        );
-      }
-    );
+      const dirs = await cacheUtils.getCacheDirectories(supportedPackageManagers.yarn, '/tmp/**/file');
+      expect(dirs).toEqual([`file_${version}_1`, `file_${version}_0`]);
+      expect(getCommandOutputSpy).toHaveBeenCalledTimes(6);
+      expect(getCommandOutputSpy).toHaveBeenCalledWith('yarn --version', '/tmp/dir1');
+      expect(getCommandOutputSpy).toHaveBeenCalledWith('yarn --version', '/tmp/dir2');
+      expect(getCommandOutputSpy).toHaveBeenCalledWith('yarn --version', '/tmp/dir3');
+      expect(getCommandOutputSpy).toHaveBeenCalledWith(
+        version.startsWith('1.') ? 'yarn cache dir' : 'yarn config get cacheFolder',
+        '/tmp/dir1'
+      );
+      expect(getCommandOutputSpy).toHaveBeenCalledWith(
+        version.startsWith('1.') ? 'yarn cache dir' : 'yarn config get cacheFolder',
+        '/tmp/dir2'
+      );
+      expect(getCommandOutputSpy).toHaveBeenCalledWith(
+        version.startsWith('1.') ? 'yarn cache dir' : 'yarn config get cacheFolder',
+        '/tmp/dir3'
+      );
+    });
 
-    it.each(['1.1.1', '2.2.2'])(
-      'getCacheDirectoriesPaths yarn v%s should return 4 dirs with multiple globs',
-      async version => {
-        // simulate wrong indents
-        const cacheDependencyPath = `/tmp/dir1/file
-          /tmp/dir2/file
+    it.each(['1.1.1', '2.2.2'])('getCacheDirectoriesPaths yarn v%s should return 4 dirs with multiple globs', async version => {
+      const cacheDependencyPath = `/tmp/dir1/file
+        /tmp/dir2/file
 /tmp/**/file
-          `;
-        globCreateSpy.mockImplementation(
-          (pattern: string): Promise<Globber> =>
-            MockGlobber.create([
-              '/tmp/dir1/file',
-              '/tmp/dir2/file',
-              '/tmp/dir3/file',
-              '/tmp/dir4/file'
-            ])
-        );
-        let dirNo = 1;
-        getCommandOutputSpy.mockImplementation((command: string) =>
-          command.includes('version') ? version : `file_${version}_${dirNo++}`
-        );
-        const dirs = await cacheUtils.getCacheDirectories(
-          supportedPackageManagers.yarn,
-          cacheDependencyPath
-        );
-        expect(dirs).toEqual([
-          `file_${version}_1`,
-          `file_${version}_2`,
-          `file_${version}_3`,
-          `file_${version}_4`
-        ]);
-      }
-    );
+      `;
+      globCreateSpy.mockImplementation(
+        (pattern: string): Promise<Globber> => MockGlobber.create([
+          '/tmp/dir1/file',
+          '/tmp/dir2/file',
+          '/tmp/dir3/file',
+          '/tmp/dir4/file'
+        ])
+      );
+      let dirNo = 1;
+      getCommandOutputSpy.mockImplementation((command: string) =>
+        command.includes('version') ? version : `file_${version}_${dirNo++}`
+      );
+      const dirs = await cacheUtils.getCacheDirectories(supportedPackageManagers.yarn, cacheDependencyPath);
+      expect(dirs).toEqual([
+        `file_${version}_1`,
+        `file_${version}_2`,
+        `file_${version}_3`,
+        `file_${version}_4`
+      ]);
+    });
   });
 });