dependabot[bot] on npm_and_yarn
Bump mocha from 9.1.3 to 10.0.0β¦ (compare)
dependabot[bot] on npm_and_yarn
dependabot[bot] on npm_and_yarn
Bump got from 8.3.2 to 12.0.4 β¦ (compare)
dependabot[bot] on npm_and_yarn
oclif:component1
);Hey folks - question: i'm trying to use the yeoman-test
createGenerator helper method. But i get:
TypeError: console.Console is not a constructor
at new TerminalAdapter (/work/spaces/generator-test/node_modules/yeoman-environment/lib/adapter.js:24:39)
I tried to base my logic off of the tests here: https://github.com/yeoman/yeoman-test/blob/bb820da630d9d7ee8d9e7898848e896427e25675/test/helpers.js#L41-L70 but while that works when i run locally, my generator tests don't work.. Any thoughts?
yeoman-environment
in node_modules
, then print the options.console
out.Hello all, I have started to use yeoman to generate a project and had little issues so far aside from testing. Writing tests is something I'm still learning about but the issue I'm having I just can't seem to make sense of a solution or find more relevant information online or on the docs, I wonder if someone could help me since I'm really curious to know what can be done to solve it and would be a great lesson for me.
How to test this generator properly
The generator makes one or more requests to download a few .zip
files, extracts them and copies them to a directory. This can take a variable amount of time and when I write a test to assert file presence what ends up happening is that the assertions occur while the files are still being downloaded.
The code of my generator is open source and can be found here: https://github.com/csalmeida/generator-hozokit/blob/generate-hozokit/generators/app/index.js
This is the test I attempted to write (tried a few more things but all of them have similar results).
'use strict';
const path = require('path');
const assert = require('yeoman-assert');
const helpers = require('yeoman-test');
describe('generator-hozokit:app', () => {
beforeAll(() => {
return helpers
.run(path.join(__dirname, '../generators/app'))
.withPrompts({ projectName: 'Hozokit Test', installWordpress: false })
.then(function() {
// Checks that Hozokit was successfully extracted and present.
assert.file(['../hozokit-test/wp-content/themes/hozokit-test', '../hozokit-test/wp-content/themes/hozokit-test/index.php', '../hozokit-test/wp-content/themes/hozokit-test/templates/base.twig']);
// Checks that Wordpres has not been installed.
assert.noFile(['wp-login.php', 'index.php', 'wp-includes']);
// Checks that no zip files remain on the system.
assert.noFile(['*.zip',]);
});
});
});
It also seems that the examples in the docs are written in Mocha but the generator ships with Jest?
Any help from someone experienced in this would be deeply appreciated! π
npm install --global yo
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated cross-spawn-async@2.2.5: cross-spawn no longer requires a build toolchain, use it instead
npm WARN deprecated request@2.88.2: request has been deprecated, see request/request#3142
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated axios@0.18.1: Critical security vulnerability fixed in v0.21.1. For more information, see axios/axios#3410
added 728 packages, and audited 729 packages in 35s
34 packages are looking for funding
run npm fund
for details
4 high severity vulnerabilities
@y-chen the way I do this is with a regEx for instance
this.fs.copy(this.templatePath('../templates/fileToModified.html'),
this.destinationPath('/index.html'), {
process: function (content) {
var regExTitle = new RegExp('title', 'g');
var newContent = content
.toString()
.replace(regExTitle, 'content you wish to add to file');
return newContent;
}
}
);
Hope this helps if your question has not already been answered
yo my-template -o . --force
to force update a template. But it is asking me all the questions for initialization again (eg. projectname ...). Also the ones which are stored in a .yo-rc.json . Do I have to adapt the template to be able to work with the force argument?
Hi, I am trying to rename files using registerTransformStream and gulp, when I use copyTpl it copies both the transformed directory (TestProject) and the original (_name).
"devDependencies": {
"eslint": "^6.6.0",
"eslint-config-prettier": "^6.6.0",
"eslint-config-xo": "^0.27.2",
"eslint-plugin-prettier": "^3.1.1",
"husky": "^3.0.9",
"jest": "^26.1.0",
"lint-staged": "^9.4.3",
"prettier": "^1.19.1",
"yeoman-assert": "^3.1.0",
"yeoman-test": "^1.7.0"
},
"engines": {
"npm": ">= 4.0.0"
},
"dependencies": {
"chalk": "^2.1.0",
"gulp-rename": "^2.0.0",
"yeoman-generator": "^2.0.5",
"yosay": "^2.0.1"
},
Code is as follows;
const Generator = require("yeoman-generator");
const chalk = require("chalk");
const yosay = require("yosay");
const rename = require("gulp-rename");
const { v4: uuidv4 } = require("uuid");
module.exports = class extends Generator {
prompting() {
this.log(
yosay(
`Welcome to the sensational ${chalk.red(
"test"
)} generator!`
)
);
const prompts = [
{
type: "input",
name: "name",
message:
"What is the name of the project? (lowercase & no punctuation only)",
default: this.appname,
store: true
}
];
return this.prompt(prompts).then(props => {
this.props = props;
});
}
writing() {
var props = this.props;
this.registerTransformStream(
rename(function(path) {
path.dirname = path.dirname.replace(/(_name)/g, props.name);
})
);
this.fs.copyTpl(
this.templatePath("**/*"),
this.destinationPath(""),
{
name: props.name.toLowerCase(),
},
{},
{ globOptions: { ignore: "_name" } }
);
this.log.writeln('\nβ WRITING COMPLETED');
}
end() {
this.log.writeln('\nβ SCAFFOLD COMPLETED');
}
};
Any ideas how I either remove or exclude the original "_name" dir?