Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix the missing scripts issues and add test config #2426

Merged
merged 12 commits into from
Apr 11, 2024
Original file line number Diff line number Diff line change
Expand Up @@ -65,18 +65,20 @@
"@azure/eslint-plugin-azure-sdk": "^3.0.0"
},
"scripts": {
"clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log",
"extract-api": "rimraf review && mkdirp ./review && api-extractor run --local",
"pack": "npm pack 2>&1",
"lint": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts",
"lint:fix": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts --fix --fix-type [problem,suggestion]",
"audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit",
"build:samples": "dev-tool samples publish --force",
"check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"",
"clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log",
"execute:samples": "dev-tool samples run samples-dev",
"format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"",
"integration-test:browser": "dev-tool run test:browser",
"integration-test:node": "dev-tool run test:node-js-input -- --timeout 5000000 'dist-esm/test/**/*.spec.js'",
"generate:client": "echo skipped",
"test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser",
"lint:fix": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts --fix --fix-type [problem,suggestion]",
"lint": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts",
"minify": "uglifyjs -c -m --comments --source-map \"content='./dist/index.js.map'\" -o ./dist/index.min.js ./dist/index.js",
"build": "npm run clean && tsc -p . && dev-tool run bundle && mkdirp ./review && api-extractor run --local",
"build:node": "tsc -p . && cross-env ONLY_NODE=true rollup -c 2>&1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,18 +62,20 @@
"@azure/eslint-plugin-azure-sdk": "^3.0.0"
},
"scripts": {
"clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log",
"extract-api": "rimraf review && mkdirp ./review && api-extractor run --local",
"pack": "npm pack 2>&1",
"lint": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts",
"lint:fix": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts --fix --fix-type [problem,suggestion]",
"audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit",
"build:samples": "dev-tool samples publish --force",
"check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"",
"clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log",
"execute:samples": "dev-tool samples run samples-dev",
"format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"",
"integration-test:browser": "dev-tool run test:browser",
"integration-test:node": "dev-tool run test:node-js-input -- --timeout 5000000 'dist-esm/test/**/*.spec.js'",
"generate:client": "echo skipped",
"test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser",
"lint:fix": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts --fix --fix-type [problem,suggestion]",
"lint": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts",
"minify": "uglifyjs -c -m --comments --source-map \"content='./dist/index.js.map'\" -o ./dist/index.min.js ./dist/index.js",
"build": "npm run clean && tsc -p . && dev-tool run bundle && mkdirp ./review && api-extractor run --local",
"build:node": "tsc -p . && cross-env ONLY_NODE=true rollup -c 2>&1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,18 +62,20 @@
"@azure/eslint-plugin-azure-sdk": "^3.0.0"
},
"scripts": {
"clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log",
"extract-api": "rimraf review && mkdirp ./review && api-extractor run --local",
"pack": "npm pack 2>&1",
"lint": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts",
"lint:fix": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts --fix --fix-type [problem,suggestion]",
"audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit",
"build:samples": "dev-tool samples publish --force",
"check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"",
"clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log",
"execute:samples": "dev-tool samples run samples-dev",
"format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"",
"integration-test:browser": "dev-tool run test:browser",
"integration-test:node": "dev-tool run test:node-js-input -- --timeout 5000000 'dist-esm/test/**/*.spec.js'",
"generate:client": "echo skipped",
"test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser",
"lint:fix": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts --fix --fix-type [problem,suggestion]",
"lint": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts",
"minify": "uglifyjs -c -m --comments --source-map \"content='./dist/index.js.map'\" -o ./dist/index.min.js ./dist/index.js",
"build": "npm run clean && tsc -p . && dev-tool run bundle && mkdirp ./review && api-extractor run --local",
"build:node": "tsc -p . && cross-env ONLY_NODE=true rollup -c 2>&1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,18 +62,20 @@
"@azure/eslint-plugin-azure-sdk": "^3.0.0"
},
"scripts": {
"clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log",
"extract-api": "rimraf review && mkdirp ./review && api-extractor run --local",
"pack": "npm pack 2>&1",
"lint": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts",
"lint:fix": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts --fix --fix-type [problem,suggestion]",
"audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit",
"build:samples": "dev-tool samples publish --force",
"check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"",
"clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log",
"execute:samples": "dev-tool samples run samples-dev",
"format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"",
"integration-test:browser": "dev-tool run test:browser",
"integration-test:node": "dev-tool run test:node-js-input -- --timeout 5000000 'dist-esm/test/**/*.spec.js'",
"generate:client": "echo skipped",
"test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser",
"lint:fix": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts --fix --fix-type [problem,suggestion]",
"lint": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts",
"minify": "uglifyjs -c -m --comments --source-map \"content='./dist/index.js.map'\" -o ./dist/index.min.js ./dist/index.js",
"build": "npm run clean && tsc -p . && dev-tool run bundle && mkdirp ./review && api-extractor run --local",
"build:node": "tsc -p . && cross-env ONLY_NODE=true rollup -c 2>&1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,18 +62,20 @@
"@azure/eslint-plugin-azure-sdk": "^3.0.0"
},
"scripts": {
"clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log",
"extract-api": "rimraf review && mkdirp ./review && api-extractor run --local",
"pack": "npm pack 2>&1",
"lint": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts",
"lint:fix": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts --fix --fix-type [problem,suggestion]",
"audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit",
"build:samples": "dev-tool samples publish --force",
"check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"",
"clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log",
"execute:samples": "dev-tool samples run samples-dev",
"format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"",
"integration-test:browser": "dev-tool run test:browser",
"integration-test:node": "dev-tool run test:node-js-input -- --timeout 5000000 'dist-esm/test/**/*.spec.js'",
"generate:client": "echo skipped",
"test:browser": "npm run clean && npm run build:test && npm run unit-test:browser && npm run integration-test:browser",
"lint:fix": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts --fix --fix-type [problem,suggestion]",
"lint": "eslint package.json api-extractor.json src test --ext .ts --ext .cts --ext .mts",
"minify": "uglifyjs -c -m --comments --source-map \"content='./dist/index.js.map'\" -o ./dist/index.min.js ./dist/index.js",
"build": "npm run clean && tsc -p . && dev-tool run bundle && mkdirp ./review && api-extractor run --local",
"build:node": "tsc -p . && cross-env ONLY_NODE=true rollup -c 2>&1",
Expand Down
1 change: 1 addition & 0 deletions packages/rlc-common/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,4 @@ export * from "./buildLogger.js";
export * from "./buildSamples.js";
export * from "./transformSampleGroups.js";
export * from "./helpers/importsUtil.js";
export * from "./metadata/buildBrowserConfig.js";
42 changes: 42 additions & 0 deletions packages/rlc-common/src/metadata/buildBrowserConfig.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

import { Project } from "ts-morph";
import { RLCModel } from "../interfaces.js";

export function buildTsTestBrowserConfig(model: RLCModel) {
const isAzureSdkForJs = model.options?.azureSdkForJs ?? false;
if (
model.options?.generateMetadata === false ||
model.options?.generateTest === false ||
isAzureSdkForJs !== true
) {
return;
}

const filePath = "tsconfig.browser.config.json";
const project = new Project();

const content = {
extends: "./.tshy/build.json",
include: ["./src/**/*.ts", "./src/**/*.mts", "./test/**/*.spec.ts"],
exclude: ["./test/**/node/**/*.ts"],
compilerOptions: {
outDir: "./dist-test/browser",
rootDir: ".",
skipLibCheck: true
}
};

const configFile = project.createSourceFile(
filePath,
JSON.stringify(content),
{
overwrite: true
}
);
return {
path: filePath,
content: configFile.getFullText()
};
}
8 changes: 0 additions & 8 deletions packages/rlc-common/src/metadata/buildVitestConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ const browserConfig = (options: {
"define": {
"process.env": process.env
},
${options.isAzureSdkForJs ? `plugins: [browserMap()],` : ""}
"test": {
"reporters": ["basic", "junit"],
"outputFile": {
Expand Down Expand Up @@ -104,13 +103,6 @@ export function buildVitestConfig(
namedImports: ["defineConfig"]
});

if (platform === "browser" && isAzureSdkForJs) {
configFile.addImportDeclaration({
moduleSpecifier: "@azure-tools/vite-plugin-browser-test-map",
defaultImport: "browserMap"
});
}

return {
path: filePath,
content: configFile.getFullText()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

import { getPackageCommonInfo } from "./packageCommon.js";
import {
getCommonPackageScripts,
getPackageCommonInfo
} from "./packageCommon.js";

import {
getAzurePackageDevDependencies,
Expand Down Expand Up @@ -188,12 +191,12 @@ function getAzureMonorepoScripts(config: AzureMonorepoInfoConfig) {
const esmScripts = getEsmScripts(config);
const cjsScripts = getCjsScripts(config);
return {
...getCommonPackageScripts(config),
audit:
"node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit",
"build:samples": "dev-tool samples publish --force",
"check-format":
'dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore "src/**/*.{ts,cts,mts}" "test/**/*.{ts,cts,mts}" "*.{js,cjs,mjs,json}"',
"clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log",
"execute:samples": "dev-tool samples run samples-dev",
format:
'dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore "src/**/*.{ts,cts,mts}" "test/**/*.{ts,cts,mts}" "*.{js,cjs,mjs,json}"',
Expand All @@ -219,7 +222,8 @@ function getEsmScripts({ moduleKind }: AzureMonorepoInfoConfig) {

return {
"build:test": "npm run clean && tshy && dev-tool run build-test",
build: "npm run clean && tshy && mkdirp ./review && api-extractor run --local",
build:
"npm run clean && tshy && mkdirp ./review && api-extractor run --local",
"test:node":
"npm run clean && tshy && npm run unit-test:node && npm run integration-test:node",
test: "npm run clean && tshy && npm run unit-test:node && dev-tool run bundle && npm run unit-test:browser && npm run integration-test",
Expand Down
50 changes: 50 additions & 0 deletions packages/rlc-common/test/integration/mockHelper.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import {
buildRuntimeImports,
initInternalImports
} from "../../src/helpers/importsUtil";
import { PackageFlavor, RLCModel } from "../../src/interfaces";

export type TestModelConfig = {
moduleKind?: "esm" | "cjs";
description?: string;
withTests?: boolean;
withSamples?: boolean;
isMonorepo?: boolean;
libraryName?: string;
version?: string;
flavor?: PackageFlavor;
srcPath?: string;
source?: "TypeSpec" | "Swagger";
monorepoPackageDirectory?: string;
};

export function createMockModel(config: TestModelConfig = {}): RLCModel {
return {
importInfo: {
runtimeImports: buildRuntimeImports(config.flavor),
internalImports: initInternalImports()
},
libraryName: config.libraryName ?? "@msinternal/test",
// Package json file generation doesn't need paths information
paths: {},
// Package json file generation doesn't need schemas information
schemas: [],
srcPath: config.srcPath ?? "src",
options: {
azureOutputDirectory: config.monorepoPackageDirectory,
packageDetails: {
name: config.libraryName ?? "@msinternal/test",
version: config.version ?? "1.0.0",
description: config.description ?? "A test package",
nameWithoutScope: "test",
scopeName: "msinternal"
},
azureSdkForJs: config.isMonorepo ?? false,
flavor: config.flavor,
generateTest: config.withTests ?? false,
generateSample: config.withSamples ?? false,
moduleKind: config.moduleKind,
sourceFrom: config.source ?? "TypeSpec"
}
};
}
Loading
Loading