hardhat
Version:
Hardhat is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.
50 lines (43 loc) • 1.57 kB
text/typescript
import type { HardhatConfig } from "../../../types/config.js";
import type { SolidityTestProfileConfig } from "../../../types/test.js";
import { HardhatError } from "@nomicfoundation/hardhat-errors";
import { getEnvVariableNameFromGlobalOption } from "@nomicfoundation/hardhat-utils/env";
import { DEFAULT_TEST_PROFILE } from "./test-profiles.js";
/**
* Resolves the name of the test profile a run selected, preferring the task
* option over the environment variable over the default.
*
* Only global options get an environment variable fallback for free, so we
* apply the same naming convention by hand for this task option.
*/
export function resolveTestProfileName(testProfile?: string): string {
return (
testProfile ??
process.env[getEnvVariableNameFromGlobalOption("testProfile")] ??
DEFAULT_TEST_PROFILE
);
}
/**
* Returns the declared test profile with the given name, throwing if the
* project doesn't declare it.
*/
export function getTestProfile(
config: HardhatConfig,
testProfileName: string,
): SolidityTestProfileConfig {
const testProfiles = config.test.solidity.profiles;
const selectedTestProfile = testProfiles[testProfileName];
if (selectedTestProfile === undefined) {
throw new HardhatError(
HardhatError.ERRORS.CORE.SOLIDITY_TESTS.TEST_PROFILE_NOT_FOUND,
{
testProfile: testProfileName,
declaredProfiles: Object.keys(testProfiles)
.sort() // to match EDR
.map((name) => `"${name}"`)
.join(", "),
},
);
}
return selectedTestProfile;
}