Skip to content

Commit

Permalink
Share test utilities (#843)
Browse files Browse the repository at this point in the history
Split test fixtures into `@simple-git/test-utils`, depend on the package directly in integration tests and share through unit tests fixtures
Remove outer fixtures, reuse `@simple-git/test-utils` in unit test fixtures
  • Loading branch information
steveukx committed Aug 13, 2022
1 parent a975980 commit 6b3e05c
Show file tree
Hide file tree
Showing 51 changed files with 196 additions and 166 deletions.
6 changes: 6 additions & 0 deletions .changeset/heavy-pumpkins-work.md
@@ -0,0 +1,6 @@
---
'@simple-git/test-utils': major
'simple-git': patch
---

Use shared test utilities bundle in simple-git tests, to enable consistent testing across packages in the future
9 changes: 9 additions & 0 deletions packages/test-utils/index.ts
@@ -0,0 +1,9 @@
export * from './src/create-test-context';
export * from './src/expectations';
export * from './src/instance';
export * from './src/like';
export * from './src/wait';

export * from './src/setup/setup-conflicted';
export * from './src/setup/setup-files';
export * from './src/setup/setup-init';
8 changes: 8 additions & 0 deletions packages/test-utils/package.json
@@ -0,0 +1,8 @@
{
"name": "@simple-git/test-utils",
"version": "0.0.0",
"private": true,
"peerDependencies": {
"simple-git": "^3.12.0"
}
}
@@ -1,7 +1,6 @@
import { join } from 'path';
import { existsSync, mkdir, mkdtemp, realpathSync, writeFile, WriteFileOptions } from 'fs';
import { SimpleGit } from '../../typings';
import { newSimpleGit } from './instance';
import { simpleGit, SimpleGit } from 'simple-git';

export interface SimpleGitTestContext {
/** Creates a directory under the repo root at the given path(s) */
Expand Down Expand Up @@ -85,7 +84,7 @@ export async function createTestContext(): Promise<SimpleGitTestContext> {
return realpathSync(context.root);
},
get git() {
return newSimpleGit(root);
return simpleGit(root);
},
};

Expand Down
@@ -1,5 +1,4 @@
import { GitError } from '../../src/lib/errors/git-error';
import { GitResponseError } from '../../src/lib/errors/git-response-error';
import { GitError, GitResponseError } from "simple-git";

/**
* Convenience for asserting the type and message of a `GitError`
Expand All @@ -15,12 +14,8 @@ import { GitResponseError } from '../../src/lib/errors/git-response-error';
export function assertGitError(
errorInstance: Error | unknown,
message: string | RegExp,
errorConstructor?: any
errorConstructor: any = GitError
) {
if (!errorConstructor) {
errorConstructor = GitError;
}

expect(errorInstance).toBeInstanceOf(errorConstructor);
expect(errorInstance).toHaveProperty('message', expect.stringMatching(message));
}
Expand Down
3 changes: 3 additions & 0 deletions packages/test-utils/src/instance.ts
@@ -0,0 +1,3 @@
import { simpleGit as newSimpleGit } from 'simple-git';

export { newSimpleGit };
File renamed without changes.
@@ -1,4 +1,4 @@
import { SimpleGitTestContext } from './create-test-context';
import { SimpleGitTestContext } from '../create-test-context';

export const FIRST_BRANCH = 'first';
export const SECOND_BRANCH = 'second';
Expand Down
@@ -1,4 +1,4 @@
import { SimpleGitTestContext } from './create-test-context';
import { SimpleGitTestContext } from '../create-test-context';

export async function setUpFilesAdded(
{ git, files }: SimpleGitTestContext,
Expand Down
@@ -1,5 +1,5 @@
import { SimpleGit } from '../../typings';
import { SimpleGitTestContext } from './create-test-context';
import { SimpleGit } from 'simple-git';
import { SimpleGitTestContext } from '../create-test-context';

export const GIT_USER_NAME = 'Simple Git Tests';
export const GIT_USER_EMAIL = 'tests@simple-git.dev';
Expand Down
File renamed without changes.
1 change: 1 addition & 0 deletions simple-git/package.json
Expand Up @@ -21,6 +21,7 @@
"devDependencies": {
"@kwsites/promise-result": "^1.1.0",
"@simple-git/babel-config": "^1.0.0",
"@simple-git/test-utils": "^0.0.0",
"@types/debug": "^4.1.5",
"@types/jest": "^27.0.3",
"@types/node": "^14.14.10",
Expand Down
9 changes: 0 additions & 9 deletions simple-git/test/__fixtures__/index.ts

This file was deleted.

6 changes: 0 additions & 6 deletions simple-git/test/__fixtures__/instance.ts

This file was deleted.

2 changes: 1 addition & 1 deletion simple-git/test/integration/add.spec.ts
Expand Up @@ -4,7 +4,7 @@ import {
newSimpleGit,
setUpInit,
SimpleGitTestContext,
} from '../__fixtures__';
} from '@simple-git/test-utils';

describe('add', () => {
let context: SimpleGitTestContext;
Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/bad-initial-path.spec.ts
Expand Up @@ -4,7 +4,7 @@ import {
like,
newSimpleGit,
SimpleGitTestContext,
} from '../__fixtures__';
} from '@simple-git/test-utils';

import { GitConstructError } from '../..';

Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/branches.spec.ts
Expand Up @@ -6,7 +6,7 @@ import {
newSimpleGit,
setUpInit,
SimpleGitTestContext,
} from '../__fixtures__';
} from '@simple-git/test-utils';

describe('branches', () => {
let context: SimpleGitTestContext;
Expand Down
11 changes: 3 additions & 8 deletions simple-git/test/integration/broken-chains.spec.ts
@@ -1,11 +1,6 @@
import { isPromiseFailure, promiseError, promiseResult } from '@kwsites/promise-result';
import {
assertGitError,
createTestContext,
newSimpleGit,
SimpleGitTestContext,
} from '../__fixtures__';
import { SimpleGit } from '../../typings';
import { isPromiseFailure, promiseError, promiseResult } from "@kwsites/promise-result";
import { assertGitError, createTestContext, newSimpleGit, SimpleGitTestContext } from "@simple-git/test-utils";
import { SimpleGit } from "../../typings";

/*
The broken chains test assures the behaviour of both standard and Promise wrapped versions
Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/change-directory.spec.ts
Expand Up @@ -5,7 +5,7 @@ import {
newSimpleGit,
SimpleGitTestContext,
wait,
} from '../__fixtures__';
} from '@simple-git/test-utils';
import { SimpleGit } from '../../typings';

describe('change-directory', () => {
Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/check-is-repo.spec.ts
Expand Up @@ -3,7 +3,7 @@ import {
createTestContext,
newSimpleGit,
SimpleGitTestContext,
} from '../__fixtures__';
} from '@simple-git/test-utils';

import { CheckRepoActions } from '../../src/lib/tasks/check-is-repo';

Expand Down
7 changes: 6 additions & 1 deletion simple-git/test/integration/checkout.spec.ts
@@ -1,4 +1,9 @@
import { createTestContext, newSimpleGit, setUpInit, SimpleGitTestContext } from '../__fixtures__';
import {
createTestContext,
newSimpleGit,
setUpInit,
SimpleGitTestContext,
} from '@simple-git/test-utils';
import { SimpleGit } from '../../typings';
import { promiseError } from '@kwsites/promise-result';

Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/clean.spec.ts
Expand Up @@ -7,7 +7,7 @@ import {
setUpFilesAdded,
setUpInit,
SimpleGitTestContext,
} from '../__fixtures__';
} from '@simple-git/test-utils';

import { CleanOptions } from '../../src/lib/tasks/clean';

Expand Down
7 changes: 6 additions & 1 deletion simple-git/test/integration/commit.spec.ts
@@ -1,4 +1,9 @@
import { createTestContext, newSimpleGit, setUpInit, SimpleGitTestContext } from '../__fixtures__';
import {
createTestContext,
newSimpleGit,
setUpInit,
SimpleGitTestContext,
} from '@simple-git/test-utils';

describe('commit', () => {
let context: SimpleGitTestContext;
Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/completion-plugin.spec.ts
@@ -1,5 +1,5 @@
import { promiseError } from '@kwsites/promise-result';
import { createTestContext, newSimpleGit, SimpleGitTestContext } from '../__fixtures__';
import { createTestContext, newSimpleGit, SimpleGitTestContext } from '@simple-git/test-utils';

describe('progress-monitor', () => {
let context: SimpleGitTestContext;
Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/concurrent-commands.spec.ts
Expand Up @@ -4,7 +4,7 @@ import {
setUpFilesAdded,
setUpInit,
SimpleGitTestContext,
} from '../__fixtures__';
} from '@simple-git/test-utils';

describe('concurrent commands', () => {
let contexts: { first: SimpleGitTestContext; second: SimpleGitTestContext };
Expand Down
7 changes: 6 additions & 1 deletion simple-git/test/integration/config.spec.ts
@@ -1,4 +1,9 @@
import { createTestContext, newSimpleGit, setUpInit, SimpleGitTestContext } from '../__fixtures__';
import {
createTestContext,
newSimpleGit,
setUpInit,
SimpleGitTestContext,
} from '@simple-git/test-utils';
import { GitConfigScope } from '../..';
import { SimpleGit } from '../../typings';

Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/diff.spec.ts
Expand Up @@ -5,7 +5,7 @@ import {
setUpFilesAdded,
setUpInit,
SimpleGitTestContext,
} from '../__fixtures__';
} from '@simple-git/test-utils';

describe('diff', function () {
const nameWithTrailingSpaces = 'name-with-trailing-spaces ';
Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/exec.spec.ts
@@ -1,4 +1,4 @@
import { createTestContext, newSimpleGit, SimpleGitTestContext } from '../__fixtures__';
import { createTestContext, newSimpleGit, SimpleGitTestContext } from '@simple-git/test-utils';

describe('exec', () => {
let context: SimpleGitTestContext;
Expand Down
8 changes: 7 additions & 1 deletion simple-git/test/integration/fetch.spec.ts
@@ -1,4 +1,9 @@
import { createTestContext, newSimpleGit, setUpInit, SimpleGitTestContext } from '../__fixtures__';
import {
createTestContext,
newSimpleGit,
setUpInit,
SimpleGitTestContext,
} from '@simple-git/test-utils';

describe('fetch', () => {
let context: SimpleGitTestContext;
Expand Down Expand Up @@ -70,6 +75,7 @@ describe('fetch', () => {
await git.raw('checkout', '-b', 'bravo');
await git.raw('checkout', '-b', 'charlie');
}

/**
* Configure the remote with changes to be retrieved when using fetch on the local
*/
Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/grep.spec.ts
@@ -1,4 +1,4 @@
import { createTestContext, newSimpleGit, SimpleGitTestContext } from '../__fixtures__';
import { createTestContext, newSimpleGit, SimpleGitTestContext } from '@simple-git/test-utils';
import { grepQueryBuilder } from '../..';

describe('grep', () => {
Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/log.spec.ts
Expand Up @@ -8,7 +8,7 @@ import {
setUpFilesAdded,
setUpInit,
SimpleGitTestContext,
} from '../__fixtures__';
} from '@simple-git/test-utils';
import type { DiffResultTextFile } from '../../typings';

describe('log', () => {
Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/merge-integration.spec.ts
Expand Up @@ -11,7 +11,7 @@ import {
setUpConflicted,
setUpInit,
SimpleGitTestContext,
} from '../__fixtures__';
} from '@simple-git/test-utils';

describe('merge', () => {
let context: SimpleGitTestContext;
Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/progress-plugin.spec.ts
@@ -1,4 +1,4 @@
import { createTestContext, newSimpleGit, SimpleGitTestContext } from '../__fixtures__';
import { createTestContext, newSimpleGit, SimpleGitTestContext } from '@simple-git/test-utils';
import { SimpleGitOptions } from '../../src/lib/types';

describe('progress-monitor', () => {
Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/promise-from-root.spec.ts
@@ -1,4 +1,4 @@
import { createTestContext, newSimpleGit, SimpleGitTestContext } from '../__fixtures__';
import { createTestContext, newSimpleGit, SimpleGitTestContext } from '@simple-git/test-utils';

describe('promises-from-root', () => {
let context: SimpleGitTestContext;
Expand Down
7 changes: 6 additions & 1 deletion simple-git/test/integration/promise.spec.ts
@@ -1,4 +1,9 @@
import { createTestContext, newSimpleGit, setUpInit, SimpleGitTestContext } from '../__fixtures__';
import {
createTestContext,
newSimpleGit,
setUpInit,
SimpleGitTestContext,
} from '@simple-git/test-utils';

import { InitSummary } from '../../src/lib/responses/InitSummary';
import { StatusSummary } from '../../src/lib/responses/StatusSummary';
Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/pull-fails-ff.spec.ts
Expand Up @@ -6,7 +6,7 @@ import {
newSimpleGit,
setUpInit,
SimpleGitTestContext,
} from '../__fixtures__';
} from '@simple-git/test-utils';

describe('pull --ff-only', () => {
let context: SimpleGitTestContext;
Expand Down
7 changes: 6 additions & 1 deletion simple-git/test/integration/remote.spec.ts
@@ -1,4 +1,9 @@
import { createTestContext, newSimpleGit, setUpInit, SimpleGitTestContext } from '../__fixtures__';
import {
createTestContext,
newSimpleGit,
setUpInit,
SimpleGitTestContext,
} from '@simple-git/test-utils';

describe('remote', () => {
let context: SimpleGitTestContext;
Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/reset.spec.ts
Expand Up @@ -6,7 +6,7 @@ import {
setUpFilesAdded,
setUpInit,
SimpleGitTestContext,
} from '../__fixtures__';
} from '@simple-git/test-utils';

import { ResetMode } from '../../src/lib/tasks/reset';

Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/rev-parse.spec.ts
Expand Up @@ -4,7 +4,7 @@ import {
setUpFilesAdded,
setUpInit,
SimpleGitTestContext,
} from '../__fixtures__';
} from '@simple-git/test-utils';

describe('rev-parse', () => {
let context: SimpleGitTestContext;
Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/status.spec.ts
Expand Up @@ -5,7 +5,7 @@ import {
setUpFilesAdded,
setUpInit,
SimpleGitTestContext,
} from '../__fixtures__';
} from '@simple-git/test-utils';

describe('status', () => {
let context: SimpleGitTestContext;
Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/tag.spec.ts
Expand Up @@ -5,7 +5,7 @@ import {
setUpFilesAdded,
setUpInit,
SimpleGitTestContext,
} from '../__fixtures__';
} from '@simple-git/test-utils';

describe('tag', () => {
let context: SimpleGitTestContext;
Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/integration/timeout-plugin.spec.ts
Expand Up @@ -4,7 +4,7 @@ import {
createTestContext,
newSimpleGit,
SimpleGitTestContext,
} from '../__fixtures__';
} from '@simple-git/test-utils';

import { GitPluginError } from '../..';

Expand Down
2 changes: 1 addition & 1 deletion simple-git/test/unit/__fixtures__/child-processes.ts
@@ -1,5 +1,5 @@
import { MockChildProcess, mockChildProcessModule } from '../__mocks__/mock-child-process';
import { wait } from '../../__fixtures__';
import { wait } from '@simple-git/test-utils';

const EXIT_CODE_SUCCESS = 0;
const EXIT_CODE_ERROR = 1;
Expand Down
5 changes: 1 addition & 4 deletions simple-git/test/unit/__fixtures__/index.ts
Expand Up @@ -11,7 +11,4 @@ export * from './responses/merge';
export * from './responses/remote-messages';
export * from './responses/status';

export * from '../../__fixtures__/expectations';
export * from '../../__fixtures__/instance';
export * from '../../__fixtures__/like';
export * from '../../__fixtures__/wait';
export * from '@simple-git/test-utils';

0 comments on commit 6b3e05c

Please sign in to comment.