Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit045598c

Browse files
authored
Add result export and update README (#171)
* runresult-proxy* update README* Update index.ts
1 parent1824d2b commit045598c

File tree

5 files changed

+80
-6
lines changed

5 files changed

+80
-6
lines changed

‎README.md‎

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ $ npm install --save-dev yeoman-generator@xxx yeoman-environment@xxx
2525
Usage:
2626

2727
```js
28+
importhelpersfrom'yeoman-test';
29+
2830
describe('generator test', ()=> {
2931
describe('test', ()=> {
3032
let runResult;
@@ -36,12 +38,22 @@ describe('generator test', () => {
3638
{}// environment options
3739
)
3840
[.cd(dir)]// runs the test inside a non temporary dir
39-
[.doInDir(dir=> {})// prepares the test dir
41+
[.onTargetDirectory(dir=> {})// prepares the test dir
4042
[.withGenerators([])]// registers additional generators
4143
[.withLookups({})]// runs Environment lookups
4244
[.withOptions({})]// passes options to the generator
4345
[.withLocalConfig({})]// sets the generator config as soon as it is instantiated
4446
[.withAnswers()]// simulates the prompt answers
47+
[.withMockedGenerators(['namespace',...])]// adds a mocked generator to the namespaces
48+
[.withFiles({
49+
'foo.txt':'bar',
50+
'test.json', { content:true },
51+
})]// add files to mem-fs
52+
[.withYoRc({'generator-foo': { bar: {} } })]// add config to .yo-rc.json
53+
[.withYoRcConfig('generator-foo.bar', {: {} })]// same as above
54+
[.commitFiles()]// commit mem-fs files to disk
55+
[.onGenerator(gen=> {})]// do something with the generator
56+
[.onEnvironment(env=> {})]// do something with the environment
4557
[.build(runContext=> {// instantiates Environment/Generator
4658
[runContext.env...]// does something with the environment
4759
[runContext.generator...]// does something with the generator
@@ -51,6 +63,7 @@ describe('generator test', () => {
5163
);
5264
afterEach(()=> {
5365
if (runResult) {
66+
// Optional if context is executed at a temporary folder
5467
runResult.restore();
5568
}
5669
});
@@ -68,6 +81,19 @@ describe('generator test', () => {
6881
});
6982
```
7083
84+
Convenience last RunResult instance:
85+
86+
```js
87+
importhelpers, {result }from'yeoman-test';
88+
89+
describe('generator test', ()=> {
90+
before(()=>helpers.run('namespace'));
91+
it('test', ()=> {
92+
result.assert...;
93+
});
94+
});
95+
```
96+
7197
[See our api documentation](https://yeoman.github.io/yeoman-test) for latest yeoman-test release.
7298
7399
[See our api documentation](https://yeoman.github.io/yeoman-test/5.0.1) for yeoman-test 5.0.1. Use 5.x for yeoman-environment 2.x support.

‎src/index.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ export { default, createHelpers, YeomanTest, type Dependency } from './helpers.j
22

33
export{defaultasRunContext,RunContextBase,typeRunContextSettings}from'./run-context.js';
44
export{defaultasRunResult,typeRunResultOptions}from'./run-result.js';
5-
export{defaultascontext}from'./test-context.js';
5+
export{defaultascontext,result}from'./test-context.js';
66
export{DummyPrompt,TestAdapter}from'./adapter.js';

‎src/run-context.ts‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import MemFs from 'mem-fs';
1616
importRunResult,{typeRunResultOptions}from'./run-result.js';
1717
importdefaultHelpers,{typeGeneratorConstructor,typeDependency,typeYeomanTest}from'./helpers.js';
1818
import{typeDummyPromptOptions}from'./adapter.js';
19+
importtestContextfrom'./test-context.js';
1920

2021
const{ camelCase, kebabCase,merge:lodashMerge,set:lodashSet}=_;
2122

@@ -150,7 +151,9 @@ export class RunContextBase<GeneratorType extends Generator = Generator> extends
150151
this.completed=true;
151152
}
152153

153-
returnnewRunResult(this._createRunResultOptions());
154+
construnResult=newRunResult(this._createRunResultOptions());
155+
testContext.runResult=runResult;
156+
returnrunResult;
154157
}
155158

156159
// If any event listeners is added, setup event listeners emitters
@@ -732,6 +735,8 @@ export default class RunContext<GeneratorType extends Generator = Generator>
732735
exportclassBasicRunContextextendsRunContext{
733736
asyncrun():PromiseRunResult<any>{
734737
awaitthis.prepare();
735-
returnnewRunResult(this._createRunResultOptions());
738+
construnResult=newRunResult(this._createRunResultOptions());
739+
testContext.runResult=runResult;
740+
returnrunResult;
736741
}
737742
}

‎src/test-context.ts‎

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,32 @@
1-
importtypeGeneratorfrom'yeoman-generator';
21
importtypeRunContextfrom'./run-context.js';
2+
importtypeRunResultfrom'./run-result.js';
33

44
classTestContext{
5+
runResult?:RunResult;
56
privaterunContext?:RunContext<any>;
67

78
startNewContext(runContext:RunContext<any>){
89
this.runContext?.cleanupTemporaryDir();
910
this.runContext=runContext;
11+
this.runResult=undefined;
1012
}
1113
}
1214

13-
exportdefaultnewTestContext();
15+
consttestContext=newTestContext();
16+
17+
exportdefaulttestContext;
18+
19+
consthandler2={
20+
get(_target,prop,receiver){
21+
if(testContext.runResult===undefined){
22+
thrownewError('Last result is missing.');
23+
}
24+
25+
returnReflect.get(testContext.runResult,prop,receiver);
26+
},
27+
};
28+
29+
/**
30+
* Provides a proxy for last executed context result.
31+
*/
32+
exportconstresult:RunResult=newProxy({},handler2);

‎test/run-result.spec.ts‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { stub } from 'sinon';
1010
importRunContextfrom'../src/run-context.js';
1111
importRunResultfrom'../src/run-result.js';
1212
importhelpersfrom'../src/helpers.js';
13+
importtestContext,{result}from'../src/test-context.js';
1314

1415
describe('run-result',()=>{
1516
describe('constructor',()=>{
@@ -244,4 +245,27 @@ describe('run-result', () => {
244245
assert.equal(runContext.envOptions.overridedEnv,'newOverridedEnv');
245246
});
246247
});
248+
describe('current runResult value',()=>{
249+
describe('should proxy methods',()=>{
250+
letrunResult:RunResult;
251+
beforeEach(()=>{
252+
constmemFs=MemFs.create();
253+
constmemFsEditor=MemFsEditor.create(memFs);
254+
runResult=newRunResult({
255+
memFs,
256+
fs:memFsEditor,
257+
cwd:process.cwd(),
258+
}asany);
259+
runResult.fs.write(path.resolve('test.txt'),'test content');
260+
runResult.fs.write(path.resolve('test2.txt'),'test2 content');
261+
testContext.runResult=runResult;
262+
});
263+
for(constmethodofObject.getOwnPropertyNames(RunResult.prototype)){
264+
// eslint-disable-next-line @typescript-eslint/no-loop-func
265+
it(`.${method}`,()=>{
266+
assert.equal(result.assertFile,runResult.assertFile);
267+
});
268+
}
269+
});
270+
});
247271
});

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp