mirror of
				https://github.com/threeal/cmake-action.git
				synced 2025-11-04 13:53:41 +00:00 
			
		
		
		
	feat: use execFileSync from node:child_process package
				
					
				
			This commit is contained in:
		
							parent
							
								
									f0425ca4df
								
							
						
					
					
						commit
						ca58db1467
					
				
							
								
								
									
										1265
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1265
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -9,8 +9,7 @@
 | 
				
			|||||||
    "test": "jest"
 | 
					    "test": "jest"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "@actions/core": "^1.10.1",
 | 
					    "@actions/core": "^1.10.1"
 | 
				
			||||||
    "@actions/exec": "^1.1.1"
 | 
					 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
    "@eslint/js": "^9.8.0",
 | 
					    "@eslint/js": "^9.8.0",
 | 
				
			||||||
 | 
				
			|||||||
@ -21,8 +21,8 @@ const defaultInputs: Inputs = {
 | 
				
			|||||||
  buildArgs: [],
 | 
					  buildArgs: [],
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jest.unstable_mockModule("@actions/exec", () => ({
 | 
					jest.unstable_mockModule("node:child_process", () => ({
 | 
				
			||||||
  exec: jest.fn(),
 | 
					  execFileSync: jest.fn(),
 | 
				
			||||||
}));
 | 
					}));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
describe("configure a CMake project", () => {
 | 
					describe("configure a CMake project", () => {
 | 
				
			||||||
@ -115,15 +115,18 @@ describe("configure a CMake project", () => {
 | 
				
			|||||||
  for (const testCase of testCases) {
 | 
					  for (const testCase of testCases) {
 | 
				
			||||||
    it(`should execute the correct command ${testCase.name}`, async () => {
 | 
					    it(`should execute the correct command ${testCase.name}`, async () => {
 | 
				
			||||||
      const { configureProject } = await import("./cmake.js");
 | 
					      const { configureProject } = await import("./cmake.js");
 | 
				
			||||||
      const { exec } = await import("@actions/exec");
 | 
					      const { execFileSync } = await import("node:child_process");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      jest.mocked(exec).mockReset();
 | 
					      jest.mocked(execFileSync).mockReset();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      const prom = configureProject({ ...defaultInputs, ...testCase.inputs });
 | 
					      const prom = configureProject({ ...defaultInputs, ...testCase.inputs });
 | 
				
			||||||
      await expect(prom).resolves.toBeUndefined();
 | 
					      await expect(prom).resolves.toBeUndefined();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      expect(exec).toHaveBeenCalledTimes(1);
 | 
					      expect(execFileSync).toHaveBeenCalledTimes(1);
 | 
				
			||||||
      expect(exec).toHaveBeenLastCalledWith("cmake", testCase.expectedArgs);
 | 
					      expect(execFileSync).toHaveBeenLastCalledWith(
 | 
				
			||||||
 | 
					        "cmake",
 | 
				
			||||||
 | 
					        testCase.expectedArgs,
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
@ -157,15 +160,18 @@ describe("build a CMake project", () => {
 | 
				
			|||||||
  for (const testCase of testCases) {
 | 
					  for (const testCase of testCases) {
 | 
				
			||||||
    it(`should execute the correct command ${testCase.name}`, async () => {
 | 
					    it(`should execute the correct command ${testCase.name}`, async () => {
 | 
				
			||||||
      const { buildProject } = await import("./cmake.js");
 | 
					      const { buildProject } = await import("./cmake.js");
 | 
				
			||||||
      const { exec } = await import("@actions/exec");
 | 
					      const { execFileSync } = await import("node:child_process");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      jest.mocked(exec).mockReset();
 | 
					      jest.mocked(execFileSync).mockReset();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      const prom = buildProject({ ...defaultInputs, ...testCase.inputs });
 | 
					      const prom = buildProject({ ...defaultInputs, ...testCase.inputs });
 | 
				
			||||||
      await expect(prom).resolves.toBeUndefined();
 | 
					      await expect(prom).resolves.toBeUndefined();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      expect(exec).toHaveBeenCalledTimes(1);
 | 
					      expect(execFileSync).toHaveBeenCalledTimes(1);
 | 
				
			||||||
      expect(exec).toHaveBeenLastCalledWith("cmake", testCase.expectedArgs);
 | 
					      expect(execFileSync).toHaveBeenLastCalledWith(
 | 
				
			||||||
 | 
					        "cmake",
 | 
				
			||||||
 | 
					        testCase.expectedArgs,
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
import { exec } from "@actions/exec";
 | 
					import { execFileSync } from "node:child_process";
 | 
				
			||||||
import type { Inputs } from "./inputs.js";
 | 
					import type { Inputs } from "./inputs.js";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -38,7 +38,7 @@ export async function configureProject(inputs: Inputs): Promise<void> {
 | 
				
			|||||||
  configureArgs.push(...inputs.options.map((opt) => "-D" + opt));
 | 
					  configureArgs.push(...inputs.options.map((opt) => "-D" + opt));
 | 
				
			||||||
  configureArgs.push(...inputs.args);
 | 
					  configureArgs.push(...inputs.args);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  await exec("cmake", configureArgs);
 | 
					  execFileSync("cmake", configureArgs);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -47,5 +47,5 @@ export async function configureProject(inputs: Inputs): Promise<void> {
 | 
				
			|||||||
 * @param inputs - The action inputs.
 | 
					 * @param inputs - The action inputs.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
export async function buildProject(inputs: Inputs): Promise<void> {
 | 
					export async function buildProject(inputs: Inputs): Promise<void> {
 | 
				
			||||||
  await exec("cmake", ["--build", inputs.buildDir, ...inputs.buildArgs]);
 | 
					  execFileSync("cmake", ["--build", inputs.buildDir, ...inputs.buildArgs]);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										17
									
								
								yarn.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										17
									
								
								yarn.lock
									
									
									
										generated
									
									
									
								
							@ -22,15 +22,6 @@ __metadata:
 | 
				
			|||||||
  languageName: node
 | 
					  languageName: node
 | 
				
			||||||
  linkType: hard
 | 
					  linkType: hard
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@actions/exec@npm:^1.1.1":
 | 
					 | 
				
			||||||
  version: 1.1.1
 | 
					 | 
				
			||||||
  resolution: "@actions/exec@npm:1.1.1"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    "@actions/io": "npm:^1.0.1"
 | 
					 | 
				
			||||||
  checksum: 10c0/4a09f6bdbe50ce68b5cf8a7254d176230d6a74bccf6ecc3857feee209a8c950ba9adec87cc5ecceb04110182d1c17117234e45557d72fde6229b7fd3a395322a
 | 
					 | 
				
			||||||
  languageName: node
 | 
					 | 
				
			||||||
  linkType: hard
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
"@actions/http-client@npm:^2.0.1":
 | 
					"@actions/http-client@npm:^2.0.1":
 | 
				
			||||||
  version: 2.2.0
 | 
					  version: 2.2.0
 | 
				
			||||||
  resolution: "@actions/http-client@npm:2.2.0"
 | 
					  resolution: "@actions/http-client@npm:2.2.0"
 | 
				
			||||||
@ -41,13 +32,6 @@ __metadata:
 | 
				
			|||||||
  languageName: node
 | 
					  languageName: node
 | 
				
			||||||
  linkType: hard
 | 
					  linkType: hard
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@actions/io@npm:^1.0.1":
 | 
					 | 
				
			||||||
  version: 1.1.3
 | 
					 | 
				
			||||||
  resolution: "@actions/io@npm:1.1.3"
 | 
					 | 
				
			||||||
  checksum: 10c0/5b8751918e5bf0bebd923ba917fb1c0e294401e7ff0037f32c92a4efa4215550df1f6633c63fd4efb2bdaae8711e69b9e36925857db1f38935ff62a5c92ec29e
 | 
					 | 
				
			||||||
  languageName: node
 | 
					 | 
				
			||||||
  linkType: hard
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
"@ampproject/remapping@npm:^2.2.0":
 | 
					"@ampproject/remapping@npm:^2.2.0":
 | 
				
			||||||
  version: 2.3.0
 | 
					  version: 2.3.0
 | 
				
			||||||
  resolution: "@ampproject/remapping@npm:2.3.0"
 | 
					  resolution: "@ampproject/remapping@npm:2.3.0"
 | 
				
			||||||
@ -3901,7 +3885,6 @@ __metadata:
 | 
				
			|||||||
  resolution: "root@workspace:."
 | 
					  resolution: "root@workspace:."
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    "@actions/core": "npm:^1.10.1"
 | 
					    "@actions/core": "npm:^1.10.1"
 | 
				
			||||||
    "@actions/exec": "npm:^1.1.1"
 | 
					 | 
				
			||||||
    "@eslint/js": "npm:^9.8.0"
 | 
					    "@eslint/js": "npm:^9.8.0"
 | 
				
			||||||
    "@jest/globals": "npm:^29.7.0"
 | 
					    "@jest/globals": "npm:^29.7.0"
 | 
				
			||||||
    "@types/jest": "npm:^29.5.12"
 | 
					    "@types/jest": "npm:^29.5.12"
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user