Merge "Updated gerrit module"

This commit is contained in:
Jenkins
2016-05-23 20:31:00 +00:00
committed by Gerrit Code Review
5 changed files with 107 additions and 86 deletions

View File

@@ -1,6 +0,0 @@
{
"generator-openstack": {
"enableGerrit": true,
"projectName": "generator-openstack"
}
}

View File

@@ -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

View File

@@ -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);

View File

@@ -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();
});
});

View File

@@ -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();