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(betterer 🐛): remove invalid config propertiex #276

Merged
merged 3 commits into from
Sep 19, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .betterer.results
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ exports[`no hack comments`] = {
"packages/cli/src/cli.ts:2275900736": [
[12, 0, 7, "RegExp match", "645651780"]
],
"packages/cli/src/init.ts:2309194487": [
"packages/cli/src/init.ts:973259922": [
[91, 4, 7, "RegExp match", "645651780"]
]
}`
Expand Down
40 changes: 22 additions & 18 deletions goldens/api/@betterer/betterer.d.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,19 @@
export declare function betterer(partialConfig?: BettererConfigPartial): Promise<BettererSummary>;
export declare function betterer(partialConfig?: BettererStartConfigPartial): Promise<BettererSummary>;
export declare namespace betterer {
var file: typeof import("./betterer").file;
var watch: typeof import("./betterer").watch;
}

export declare type BettererBaseConfigPartial = Partial<{
configPaths: BettererConfigPaths | string;
cwd: string;
filters: BettererConfigFilters | ReadonlyArray<string> | string;
reporters: BettererReporterNames;
resultsPath: string;
silent: boolean;
tsconfigPath: string;
}>;

export declare type BettererConfig = {
allowDiff: boolean;
configPaths: BettererConfigPaths;
Expand All @@ -21,19 +31,6 @@ export declare type BettererConfigFilters = ReadonlyArray<RegExp>;

export declare type BettererConfigIgnore = ReadonlyArray<string>;

export declare type BettererConfigPartial = Partial<{
allowDiff: boolean;
configPaths: BettererConfigPaths | string;
cwd: string;
filters: BettererConfigFilters | ReadonlyArray<string> | string;
ignores: BettererConfigIgnore | string;
reporters: BettererReporterNames;
resultsPath: string;
silent: boolean;
tsconfigPath: string;
update: boolean;
}>;

export declare type BettererConfigPaths = ReadonlyArray<string>;

export declare type BettererContext = {
Expand Down Expand Up @@ -163,6 +160,11 @@ export declare type BettererSerialiser<DeserialisedType, SerialisedType = Deseri
deserialise: BettererDeserialise<DeserialisedType, SerialisedType>;
};

export declare type BettererStartConfigPartial = BettererBaseConfigPartial & Partial<{
allowDiff: boolean;
update: boolean;
}>;

export declare type BettererSummary = {
readonly runs: BettererRuns;
readonly obsolete: BettererRunNames;
Expand Down Expand Up @@ -221,15 +223,17 @@ export declare class BettererTestState {
skip(): this;
}

export declare type BettererWatchConfigPartial = BettererBaseConfigPartial & Partial<{
ignores: BettererConfigIgnore;
}>;

export declare type BettererWatcher = {
stop(): Promise<void>;
onRun(handler: BettererWatchRunHandler): void;
};

export declare type BettererWatchRunHandler = (summary: BettererSummary) => void;

export declare function config(partialConfig: BettererConfigPartial): void;

export declare function file(filePath: string, partialConfig?: BettererConfigPartial): Promise<BettererSummary>;
export declare function file(filePath: string, partialConfig?: BettererBaseConfigPartial): Promise<BettererSummary>;

export declare function watch(partialConfig?: BettererConfigPartial): Promise<BettererWatcher>;
export declare function watch(partialConfig?: BettererWatchConfigPartial): Promise<BettererWatcher>;
4 changes: 4 additions & 0 deletions goldens/api/@betterer/cli.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ export declare type BettererCLICIConfig = {
tsconfig: string;
};

export declare type BettererCLIInitConfig = {
config: string;
};

export declare type BettererCLIStartConfig = {
config: BettererCLIArguments;
filter: BettererCLIArguments;
Expand Down
15 changes: 11 additions & 4 deletions packages/betterer/src/betterer.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,20 @@
import { logErrorΔ } from '@betterer/errors';

import { BettererConfig, BettererConfigPartial, createConfig } from './config';
import {
BettererConfig,
BettererConfigPartial,
BettererStartConfigPartial,
BettererBaseConfigPartial,
BettererWatchConfigPartial,
createConfig
} from './config';
import { BettererContextΩ, BettererSummary } from './context';
import { registerExtensions } from './register';
import { DEFAULT_REPORTER, WATCH_REPORTER, loadReporters } from './reporters';
import { parallel, serial } from './runner';
import { BettererWatcher, BettererWatcherΩ } from './watcher';

export function betterer(partialConfig?: BettererConfigPartial): Promise<BettererSummary> {
export function betterer(partialConfig?: BettererStartConfigPartial): Promise<BettererSummary> {
return runContext(async (config) => {
const reporter = loadReporters(config.reporters.length ? config.reporters : [DEFAULT_REPORTER]);
const context = new BettererContextΩ(config, reporter);
Expand All @@ -24,7 +31,7 @@ export function betterer(partialConfig?: BettererConfigPartial): Promise<Bettere
}, partialConfig);
}

export async function file(filePath: string, partialConfig?: BettererConfigPartial): Promise<BettererSummary> {
export async function file(filePath: string, partialConfig?: BettererBaseConfigPartial): Promise<BettererSummary> {
return runContext(async (config) => {
const context = new BettererContextΩ(config);
await context.setup();
Expand All @@ -35,7 +42,7 @@ export async function file(filePath: string, partialConfig?: BettererConfigParti
}
betterer.file = file;

export function watch(partialConfig?: BettererConfigPartial): Promise<BettererWatcher> {
export function watch(partialConfig?: BettererWatchConfigPartial): Promise<BettererWatcher> {
return runContext(async (config) => {
const reporter = loadReporters(config.reporters.length ? config.reporters : [WATCH_REPORTER]);
const context = new BettererContextΩ(config, reporter);
Expand Down
22 changes: 9 additions & 13 deletions packages/betterer/src/config/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,25 +5,21 @@ import * as path from 'path';
import { isString, isUndefined } from '../utils';
import { BettererConfig, BettererConfigPartial } from './types';

let baseConfig: BettererConfigPartial = {};
let globalConfig: BettererConfig | null = null;
export function config(partialConfig: BettererConfigPartial): void {
baseConfig = partialConfig;
}

export function createConfig(partialConfig: BettererConfigPartial = {}): BettererConfig {
const relativeConfig = {
allowDiff: partialConfig.allowDiff ?? true,
configPaths: toArray<string>(partialConfig.configPaths || baseConfig.configPaths || ['./.betterer']),
resultsPath: partialConfig.resultsPath || baseConfig.resultsPath || './.betterer.results',
filters: toRegExps(toArray<string | RegExp>(partialConfig.filters || baseConfig.filters)),
ignores: toArray<string>(partialConfig.ignores || baseConfig.ignores),
cwd: partialConfig.cwd || baseConfig.cwd || process.cwd(),
silent: partialConfig.silent || baseConfig.silent || false,
update: partialConfig.update || baseConfig.update || false,
reporters: partialConfig.reporters || baseConfig.reporters || []
configPaths: toArray<string>(partialConfig.configPaths || ['./.betterer']),
resultsPath: partialConfig.resultsPath || './.betterer.results',
filters: toRegExps(toArray<string | RegExp>(partialConfig.filters)),
ignores: toArray<string>(partialConfig.ignores),
cwd: partialConfig.cwd || process.cwd(),
silent: partialConfig.silent || false,
update: partialConfig.update || false,
reporters: partialConfig.reporters || []
};
const tsconfigPath = partialConfig.tsconfigPath || baseConfig.tsconfigPath;
const tsconfigPath = partialConfig.tsconfigPath;

relativeConfig.silent ? muteΔ() : unmuteΔ();

Expand Down
9 changes: 6 additions & 3 deletions packages/betterer/src/config/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
export { config, createConfig, getConfig } from './config';
export { createConfig, getConfig } from './config';
export {
BettererConfig,
BettererConfigFilters,
BettererConfigIgnore,
BettererConfigPaths,
BettererConfigPartial,
BettererConfigPaths
BettererBaseConfigPartial,
BettererStartConfigPartial,
BettererWatchConfigPartial,
BettererConfig
} from './types';
7 changes: 4 additions & 3 deletions packages/betterer/src/config/public.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
export { config } from './config';
export {
BettererConfig,
BettererConfigFilters,
BettererConfigIgnore,
BettererConfigPartial,
BettererConfigPaths
BettererConfigPaths,
BettererBaseConfigPartial,
BettererStartConfigPartial,
BettererWatchConfigPartial
} from './types';
18 changes: 14 additions & 4 deletions packages/betterer/src/config/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,25 @@ export type BettererConfig = {
update: boolean;
};

export type BettererConfigPartial = Partial<{
allowDiff: boolean;
export type BettererBaseConfigPartial = Partial<{
configPaths: BettererConfigPaths | string;
cwd: string;
filters: BettererConfigFilters | ReadonlyArray<string> | string;
ignores: BettererConfigIgnore | string;
reporters: BettererReporterNames;
resultsPath: string;
silent: boolean;
tsconfigPath: string;
update: boolean;
}>;

export type BettererStartConfigPartial = BettererBaseConfigPartial &
Partial<{
allowDiff: boolean;
update: boolean;
}>;

export type BettererWatchConfigPartial = BettererBaseConfigPartial &
Partial<{
ignores: BettererConfigIgnore;
}>;

export type BettererConfigPartial = BettererBaseConfigPartial & BettererStartConfigPartial & BettererWatchConfigPartial;
7 changes: 4 additions & 3 deletions packages/betterer/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
export { betterer, file, watch } from './betterer';
export {
config,
BettererConfig,
BettererConfigFilters,
BettererConfigIgnore,
BettererConfigPartial,
BettererConfigPaths
BettererConfigPaths,
BettererBaseConfigPartial,
BettererStartConfigPartial,
BettererWatchConfigPartial
} from './config/public';
export { BettererContext, BettererRun, BettererRuns, BettererSummary, BettererRunNames } from './context/public';
export { BettererDiff, BettererResult } from './results/public';
Expand Down
1 change: 1 addition & 0 deletions packages/cli/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ export { watchΔ } from './watch';
export {
BettererCLICIConfig,
BettererCLIArguments,
BettererCLIInitConfig,
BettererCLIStartConfig,
BettererCLIWatchConfig,
BettererPackageJSON
Expand Down
4 changes: 2 additions & 2 deletions packages/cli/src/init.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { promises as fs } from 'fs';
import * as path from 'path';

import { initOptions } from './options';
import { BettererCLIArguments, BettererPackageJSON } from './types';
import { BettererCLIArguments, BettererCLIInitConfig, BettererPackageJSON } from './types';

import {
COULDNT_FIND_PACKAGE_JSON,
Expand All @@ -24,7 +24,7 @@ export async function initΔ(cwd: string, argv: BettererCLIArguments): Promise<v

commander.parse(argv as Array<string>);

const { config } = commander;
const { config } = (commander as unknown) as BettererCLIInitConfig;

infoΔ('initialising Betterer... ☀️');
try {
Expand Down
4 changes: 4 additions & 0 deletions packages/cli/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ export type BettererCLIWatchConfig = BettererCLIStartConfig & {
ignore: BettererCLIArguments;
};

export type BettererCLIInitConfig = {
config: string;
};

export type BettererPackageJSON = {
version: string;
scripts: Record<string, string> & { betterer: string };
Expand Down
6 changes: 0 additions & 6 deletions packages/extension/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,6 @@
".*"
],
"description": "Select tests to run by RegExp. Takes multiple values"
},
"betterer.update": {
"scope": "resource",
"type": "boolean",
"default": false,
"description": "Force update the results file, even if things get worse"
}
}
},
Expand Down
12 changes: 5 additions & 7 deletions packages/extension/src/server/config.ts
Original file line number Diff line number Diff line change
@@ -1,27 +1,25 @@
import { RemoteWorkspace } from 'vscode-languageserver';
import { BettererConfigPartial } from '@betterer/betterer';
import { BettererBaseConfigPartial } from '@betterer/betterer';

type BettererExtensionConfig = {
configPath: string;
enable: boolean;
filters: Array<string>;
resultsPath: string;
tsconfigPath: string;
update: boolean;
};

export async function getEnabled(workspace: RemoteWorkspace): Promise<boolean> {
const { enable } = await getConfig(workspace);
return !!enable;
}

export async function getBettererConfig(workspace: RemoteWorkspace): Promise<BettererConfigPartial> {
const { configPath, filters, resultsPath, tsconfigPath, update } = await getConfig(workspace);
const config: BettererConfigPartial = {
export async function getBettererConfig(workspace: RemoteWorkspace): Promise<BettererBaseConfigPartial> {
const { configPath, filters, resultsPath, tsconfigPath } = await getConfig(workspace);
const config: BettererBaseConfigPartial = {
configPaths: configPath,
filters,
resultsPath,
update: !!update
resultsPath
};
if (tsconfigPath !== '') {
config.tsconfigPath = tsconfigPath;
Expand Down
10 changes: 3 additions & 7 deletions test/betterer-better.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { betterer, config } from '@betterer/betterer';
import { betterer } from '@betterer/betterer';

import { createFixture } from './fixture';

Expand Down Expand Up @@ -27,13 +27,11 @@ module.exports = {
const configPaths = [paths.config];
const resultsPath = paths.results;

config({ configPaths, resultsPath });

const firstRun = await betterer();
const firstRun = await betterer({ configPaths, resultsPath });

expect(runNames(firstRun.new)).toEqual(['should shrink', 'should grow']);

const secondRun = await betterer();
const secondRun = await betterer({ configPaths, resultsPath });

expect(runNames(secondRun.better)).toEqual(['should shrink', 'should grow']);

Expand All @@ -43,8 +41,6 @@ module.exports = {

expect(result).toMatchSnapshot();

config({});

await cleanup();
});

Expand Down