Merge "Updated gerrit module"
This commit is contained in:
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"generator-openstack": {
|
||||
"enableGerrit": true,
|
||||
"projectName": "generator-openstack"
|
||||
}
|
||||
}
|
||||
@@ -27,11 +27,6 @@
|
||||
initializing: function () {
|
||||
var done = this.async();
|
||||
|
||||
// Set our own defaults.
|
||||
this.config.defaults({
|
||||
projectName: this.appname
|
||||
});
|
||||
|
||||
// Initialize components.
|
||||
Q(this)
|
||||
.then(pkg.init) // Package.json
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
(function () {
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
var projectBuilder = require('../project_builder');
|
||||
var pkgBuilder = require('../pkg_builder');
|
||||
var ini = require('ini');
|
||||
var Q = require('q');
|
||||
|
||||
@@ -14,6 +15,7 @@
|
||||
}
|
||||
};
|
||||
var iniContent;
|
||||
var gerritFileExists = false;
|
||||
|
||||
/**
|
||||
* Internal helper method. Returns true if gerrit has been enabled.
|
||||
@@ -21,7 +23,7 @@
|
||||
* @param {String} answers The collection of answers.
|
||||
* @returns {Function} True if enableGerrit is set, otherwise false.
|
||||
*/
|
||||
var gerritEnabled = function (answers) {
|
||||
var gerritEnabled = function(answers) {
|
||||
return !!answers.enableGerrit;
|
||||
};
|
||||
|
||||
@@ -33,18 +35,19 @@
|
||||
* @returns {generator} The passed generator, for promise chaining.
|
||||
*/
|
||||
function initializeGerrit (generator) {
|
||||
// Get the project name
|
||||
var projectName = pkgBuilder.getValue("name", generator.appname);
|
||||
|
||||
// Define our defaults
|
||||
iniContent = JSON.parse(JSON.stringify(iniDefaults));
|
||||
iniContent.gerrit.project = 'openstack/' + generator.appname + '.git';
|
||||
iniContent.gerrit.project = 'openstack/' + projectName + '.git';
|
||||
|
||||
// Read the existing file and populate it as defaults.
|
||||
if (generator.fs.exists(gerritFile)) {
|
||||
gerritFileExists = true;
|
||||
iniContent = ini.parse(generator.fs.read(gerritFile));
|
||||
}
|
||||
|
||||
// Set the configuration defaults.
|
||||
generator.config.defaults({enableGerrit: true});
|
||||
|
||||
return generator;
|
||||
}
|
||||
|
||||
@@ -65,7 +68,7 @@
|
||||
type: 'confirm',
|
||||
name: 'enableGerrit',
|
||||
message: 'Gerrit- Enable:',
|
||||
default: generator.config.get('enableGerrit')
|
||||
default: gerritFileExists
|
||||
}, {
|
||||
when: gerritEnabled,
|
||||
type: 'input',
|
||||
@@ -85,11 +88,8 @@
|
||||
message: 'Gerrit- Project Path:',
|
||||
default: iniContent.gerrit.project
|
||||
}],
|
||||
function (answers) {
|
||||
generator.config.set({
|
||||
enableGerrit: answers.enableGerrit
|
||||
});
|
||||
|
||||
function(answers) {
|
||||
gerritFileExists = answers.enableGerrit;
|
||||
iniContent.gerrit = {
|
||||
host: answers.gerritHost,
|
||||
port: answers.gerritPort,
|
||||
@@ -111,7 +111,7 @@
|
||||
* @returns {generator} The passed generator, for promise chaining.
|
||||
*/
|
||||
function configureGerrit (generator) {
|
||||
if (generator.config.get('enableGerrit')) {
|
||||
if (gerritFileExists) {
|
||||
projectBuilder.writeFile(gerritFile, buildGerritFile);
|
||||
} else {
|
||||
projectBuilder.removeFile(gerritFile);
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
helpers.run(generator)
|
||||
.withArguments(['--non-interactive'])
|
||||
.on('end', function () {
|
||||
assert.file(['.gitreview']); // We'll just use a file we know about.
|
||||
assert.file(['package.json']);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -6,11 +6,9 @@
|
||||
|
||||
var gerrit = require(libDir + '/component/gerrit');
|
||||
var projectBuilder = require(libDir + '/project_builder');
|
||||
var pkgBuilder = require(libDir + '/pkg_builder');
|
||||
var mocks = require('../../../helpers/mocks');
|
||||
|
||||
var expectedConfigDefaults = {
|
||||
enableGerrit: true
|
||||
};
|
||||
var iniFile = {
|
||||
gerrit: {
|
||||
host: 'review.example.org',
|
||||
@@ -47,12 +45,92 @@
|
||||
projectBuilder.clear();
|
||||
});
|
||||
|
||||
it('should define init, prompt, and configure',
|
||||
function () {
|
||||
expect(typeof gerrit.init).toBe('function');
|
||||
expect(typeof gerrit.prompt).toBe('function');
|
||||
expect(typeof gerrit.configure).toBe('function');
|
||||
});
|
||||
afterEach(function () {
|
||||
pkgBuilder.fromJSON(JSON.stringify({}));
|
||||
});
|
||||
|
||||
describe('api', function () {
|
||||
it('should define init, prompt, and configure',
|
||||
function () {
|
||||
expect(typeof gerrit.init).toBe('function');
|
||||
expect(typeof gerrit.prompt).toBe('function');
|
||||
expect(typeof gerrit.configure).toBe('function');
|
||||
});
|
||||
});
|
||||
|
||||
describe('runtime', function () {
|
||||
it('should not create a new file if one does not exist already.',
|
||||
function () {
|
||||
// No answers, non-interactive run.
|
||||
var mockAnswers = {};
|
||||
var generator = mocks.buildGenerator(null, mockAnswers);
|
||||
generator.fs.delete('.gitreview');
|
||||
|
||||
gerrit.init(generator);
|
||||
gerrit.prompt(generator);
|
||||
gerrit.configure(generator);
|
||||
|
||||
expect(generator.fs.exists('.gitreview')).toBeFalsy();
|
||||
});
|
||||
|
||||
it('should not delete a file if one exists.',
|
||||
function () {
|
||||
// No answers, non-interactive run.
|
||||
var mockAnswers = {};
|
||||
var generator = mocks.buildGenerator(null, mockAnswers);
|
||||
generator.fs.write('.gitreview', ini.stringify(iniFile));
|
||||
|
||||
// Set defaults
|
||||
gerrit.init(generator);
|
||||
gerrit.prompt(generator);
|
||||
gerrit.configure(generator);
|
||||
|
||||
expect(generator.fs.exists('.gitreview')).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should write default values if a new file is requested.',
|
||||
function () {
|
||||
// No answers, non-interactive run.
|
||||
var mockAnswers = {enableGerrit: true};
|
||||
var generator = mocks.buildGenerator(null, mockAnswers);
|
||||
generator.fs.delete('.gitreview');
|
||||
|
||||
// Set defaults
|
||||
gerrit.init(generator);
|
||||
gerrit.prompt(generator);
|
||||
gerrit.configure(generator);
|
||||
|
||||
expectGerritFileContent({
|
||||
gerrit: {
|
||||
host: 'review.openstack.org',
|
||||
port: '29418',
|
||||
project: 'openstack/generator-openstack.git'
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it('should read the default project name from the package builder.',
|
||||
function () {
|
||||
// No answers, non-interactive run.
|
||||
var mockAnswers = {enableGerrit: true};
|
||||
pkgBuilder.fromJSON(JSON.stringify({name: 'foo'}));
|
||||
var generator = mocks.buildGenerator(null, mockAnswers);
|
||||
generator.fs.delete('.gitreview');
|
||||
|
||||
// Set defaults
|
||||
gerrit.init(generator);
|
||||
gerrit.prompt(generator);
|
||||
gerrit.configure(generator);
|
||||
|
||||
expectGerritFileContent({
|
||||
gerrit: {
|
||||
host: 'review.openstack.org',
|
||||
port: '29418',
|
||||
project: 'openstack/foo.git'
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('init()', function () {
|
||||
it('should return a generator',
|
||||
@@ -61,40 +139,6 @@
|
||||
var outputGenerator = gerrit.init(generator);
|
||||
expect(outputGenerator).toEqual(generator);
|
||||
});
|
||||
|
||||
it('should set defaults',
|
||||
function () {
|
||||
var generator = mocks.buildGenerator();
|
||||
var spy = spyOn(generator.config, 'defaults');
|
||||
gerrit.init(generator);
|
||||
expect(spy.calls.any()).toBeTruthy();
|
||||
expect(spy.calls.first().args[0]).toEqual(expectedConfigDefaults);
|
||||
});
|
||||
|
||||
it('should revert to defaults if no answers provided',
|
||||
function () {
|
||||
var config = {};
|
||||
var mockAnswers = {};
|
||||
var generator = mocks.buildGenerator(config, mockAnswers);
|
||||
|
||||
// Set defaults
|
||||
gerrit.init(generator);
|
||||
|
||||
// Call the generator
|
||||
gerrit.prompt(generator);
|
||||
expect(config).toEqual(expectedConfigDefaults);
|
||||
});
|
||||
|
||||
it('should read default values from an existing .gitreview file.',
|
||||
function () {
|
||||
var generator = mocks.buildGenerator();
|
||||
|
||||
generator.fs.write('.gitreview', ini.stringify(iniFile));
|
||||
gerrit.init(generator);
|
||||
gerrit.configure(generator);
|
||||
|
||||
expectGerritFileContent(iniFile);
|
||||
});
|
||||
});
|
||||
|
||||
describe('prompt()', function () {
|
||||
@@ -107,20 +151,6 @@
|
||||
});
|
||||
});
|
||||
|
||||
it('should revert to config defaults if no answers provided',
|
||||
function () {
|
||||
var config = {};
|
||||
var mockAnswers = {};
|
||||
var generator = mocks.buildGenerator(config, mockAnswers);
|
||||
|
||||
// Set defaults
|
||||
gerrit.init(generator);
|
||||
|
||||
// Call the generator
|
||||
gerrit.prompt(generator);
|
||||
expect(config).toEqual(expectedConfigDefaults);
|
||||
});
|
||||
|
||||
it('should not show a prompt if non-interactive is set',
|
||||
function () {
|
||||
var generator = mocks.buildGenerator(null, null,
|
||||
@@ -141,6 +171,7 @@
|
||||
|
||||
generator.fs.write('.gitreview', ini.stringify(iniFile));
|
||||
gerrit.init(generator);
|
||||
gerrit.prompt(generator);
|
||||
gerrit.configure(generator);
|
||||
|
||||
expectGerritFileContent(iniFile);
|
||||
@@ -182,8 +213,7 @@
|
||||
|
||||
it('should create a .gitreview file if enabled',
|
||||
function () {
|
||||
var mockConfig = {enableGerrit: true};
|
||||
var generator = mocks.buildGenerator(mockConfig);
|
||||
var generator = mocks.buildGenerator(null, {enableGerrit: true});
|
||||
|
||||
// Make sure we don't have something left over from another test.
|
||||
generator.fs.delete('.gitreview');
|
||||
@@ -205,8 +235,10 @@
|
||||
|
||||
it('should delete a .gitreview file if disabled',
|
||||
function () {
|
||||
var mockConfig = {enableGerrit: false};
|
||||
var generator = mocks.buildGenerator(mockConfig);
|
||||
var generator = mocks.buildGenerator(null, {enableGerrit: false});
|
||||
|
||||
gerrit.init(generator);
|
||||
gerrit.prompt(generator);
|
||||
gerrit.configure(generator);
|
||||
|
||||
var includedFiles = projectBuilder.getIncludedFiles();
|
||||
|
||||
Reference in New Issue
Block a user