You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ia...@apache.org on 2014/06/24 20:06:19 UTC
[1/3] android commit: CB-5971: Fix package / project validation
Repository: cordova-android
Updated Branches:
refs/heads/master 297f862cc -> 435245612
CB-5971: Fix package / project validation
Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/43524561
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/43524561
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/43524561
Branch: refs/heads/master
Commit: 4352456129bfa8a8a6bbf4d38fb40d9876b67ec4
Parents: bb141a7
Author: Ian Clelland <ic...@chromium.org>
Authored: Tue Jun 24 14:05:03 2014 -0400
Committer: Ian Clelland <ic...@chromium.org>
Committed: Tue Jun 24 14:05:56 2014 -0400
----------------------------------------------------------------------
bin/lib/create.js | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/43524561/bin/lib/create.js
----------------------------------------------------------------------
diff --git a/bin/lib/create.js b/bin/lib/create.js
index a31604a..b2490f2 100755
--- a/bin/lib/create.js
+++ b/bin/lib/create.js
@@ -113,18 +113,13 @@ function copyScripts(projectPath) {
*/
function validatePackageName(package_name) {
//Make the package conform to Java package types
- if (!/[a-zA-Z0-9_]+\.[a-zA-Z0-9_](.[a-zA-Z0-9_])*/.test(package_name)) {
- return Q.reject('Package name must look like: com.company.Name');
- }
-
//Enforce underscore limitation
- if (/[_]+[a-zA-Z0-9_]*/.test(package_name)) {
- return Q.reject("Package name can't begin with an underscore");
+ if (!/^[a-zA-Z]+(\.[a-zA-Z0-9][a-zA-Z0-9_]*)+$/.test(package_name)) {
+ return Q.reject('Package name must look like: com.company.Name');
}
//Class is a reserved word
- if(/[C|c]+lass+[\s|\.]/.test(package_name) && !/[a-zA-Z0-9_]+[C|c]+lass/.test(package_name))
- {
+ if(/\b[Cc]lass\b/.test(package_name)) {
return Q.reject('class is a reserved word');
}
@@ -137,6 +132,11 @@ function validatePackageName(package_name) {
* otherwise.
*/
function validateProjectName(project_name) {
+ //Make sure there's something there
+ if (project_name === '') {
+ return Q.reject('Project name cannot be empty');
+ }
+
//Enforce stupid name error
if (project_name === 'CordovaActivity') {
return Q.reject('Project name cannot be CordovaActivity');
[3/3] android commit: CB-5971: Factor out package/project name
validation logic
Posted by ia...@apache.org.
CB-5971: Factor out package/project name validation logic
Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/ff260c03
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/ff260c03
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/ff260c03
Branch: refs/heads/master
Commit: ff260c03caedeeaaf00563e117faefb8004f269b
Parents: 297f862
Author: Ian Clelland <ic...@chromium.org>
Authored: Tue Jun 24 13:49:12 2014 -0400
Committer: Ian Clelland <ic...@chromium.org>
Committed: Tue Jun 24 14:05:56 2014 -0400
----------------------------------------------------------------------
bin/lib/create.js | 76 +++++++++++++++++++++++++++++++++-----------------
1 file changed, 50 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/ff260c03/bin/lib/create.js
----------------------------------------------------------------------
diff --git a/bin/lib/create.js b/bin/lib/create.js
index f99d1da..8a90827 100755
--- a/bin/lib/create.js
+++ b/bin/lib/create.js
@@ -107,6 +107,50 @@ function copyScripts(projectPath) {
}
/**
+ * Test whether a package name is acceptable for use as an android project.
+ * Returns a promise, fulfilled if the package name is acceptable; rejected
+ * otherwise.
+ */
+function validatePackageName(package_name) {
+ //Make the package conform to Java package types
+ if (!/[a-zA-Z0-9_]+\.[a-zA-Z0-9_](.[a-zA-Z0-9_])*/.test(package_name)) {
+ return Q.reject('Package name must look like: com.company.Name');
+ }
+
+ //Enforce underscore limitation
+ if (/[_]+[a-zA-Z0-9_]*/.test(package_name)) {
+ return Q.reject("Package name can't begin with an underscore");
+ }
+
+ //Class is a reserved word
+ if(/[C|c]+lass+[\s|\.]/.test(package_name) && !/[a-zA-Z0-9_]+[C|c]+lass/.test(package_name))
+ {
+ return Q.reject('class is a reserved word');
+ }
+
+ return Q.resolve();
+}
+
+/**
+ * Test whether a project name is acceptable for use as an android class.
+ * Returns a promise, fulfilled if the project name is acceptable; rejected
+ * otherwise.
+ */
+function validateProjectName(project_name) {
+ //Enforce stupid name error
+ if (project_name === 'CordovaActivity') {
+ return Q.reject('Project name cannot be CordovaActivity');
+ }
+
+ //Classes in Java don't begin with numbers
+ if (/^[0-9]/.test(project_name)) {
+ return Q.reject('Project name must not begin with a number');
+ }
+
+ return Q.resolve();
+}
+
+/**
* $ create [options]
*
* Creates an android application with the given options.
@@ -146,34 +190,14 @@ exports.createProject = function(project_path, package_name, project_name, proje
}
//Make the package conform to Java package types
- if (!/[a-zA-Z0-9_]+\.[a-zA-Z0-9_](.[a-zA-Z0-9_])*/.test(package_name)) {
- return Q.reject('Package name must look like: com.company.Name');
- }
-
- //Enforce underscore limitation
- if (/[_]+[a-zA-Z0-9_]*/.test(package_name)) {
- return Q.reject("Package name can't begin with an underscore");
- }
-
- //Enforce stupid name error
- if (project_name === 'CordovaActivity') {
- return Q.reject('Project name cannot be CordovaActivity');
- }
-
- //Classes in Java don't begin with numbers
- if (/[0-9]+[a-zA-Z0-9]/.test(project_name)) {
- return Q.reject('Project name must not begin with a number');
- }
-
- //Class is a reserved word
- if(/[C|c]+lass+[\s|\.]/.test(package_name) && !/[a-zA-Z0-9_]+[C|c]+lass/.test(package_name))
- {
- return Q.reject('class is a reserved word');
- }
-
+ return validatePackageName(package_name)
+ .then(function() {
+ validateProjectName(project_name);
+ })
// Check that requirements are met and proper targets are installed
- return check_reqs.run()
.then(function() {
+ check_reqs.run();
+ }).then(function() {
// Log the given values for the project
console.log('Creating Cordova project for the Android platform:');
console.log('\tPath: ' + project_path);
[2/3] android commit: CB-5971: Add unit tests to cordova-android
Posted by ia...@apache.org.
CB-5971: Add unit tests to cordova-android
Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/bb141a70
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/bb141a70
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/bb141a70
Branch: refs/heads/master
Commit: bb141a70e89cf7826fb1699085df33aac597a688
Parents: ff260c0
Author: Ian Clelland <ic...@chromium.org>
Authored: Tue Jun 24 13:50:00 2014 -0400
Committer: Ian Clelland <ic...@chromium.org>
Committed: Tue Jun 24 14:05:56 2014 -0400
----------------------------------------------------------------------
bin/lib/create.js | 4 +++
package.json | 7 +++++
spec/create.spec.js | 82 ++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 93 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/bb141a70/bin/lib/create.js
----------------------------------------------------------------------
diff --git a/bin/lib/create.js b/bin/lib/create.js
index 8a90827..a31604a 100755
--- a/bin/lib/create.js
+++ b/bin/lib/create.js
@@ -288,3 +288,7 @@ exports.updateProject = function(projectPath) {
});
};
+
+// For testing
+exports.validatePackageName = validatePackageName;
+exports.validateProjectName = validateProjectName;
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/bb141a70/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index 0d203c9..ed01458 100644
--- a/package.json
+++ b/package.json
@@ -12,10 +12,17 @@
"cordova",
"apache"
],
+ "scripts": {
+ "test": "jasmine-node --color spec"
+ },
"author": "Apache Software Foundation",
"license": "Apache version 2.0",
"dependencies": {
"q": "^0.9.0",
"shelljs": "^0.2.6"
+ },
+ "devDependencies": {
+ "jasmine-node": "~1",
+ "promise-matchers": "~0"
}
}
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/bb141a70/spec/create.spec.js
----------------------------------------------------------------------
diff --git a/spec/create.spec.js b/spec/create.spec.js
new file mode 100644
index 0000000..8e08793
--- /dev/null
+++ b/spec/create.spec.js
@@ -0,0 +1,82 @@
+/**
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+/* jshint laxcomma:true */
+
+require("promise-matchers");
+
+var create = require("../bin/lib/create");
+
+describe("create", function () {
+ describe("validatePackageName", function() {
+ var valid = [
+ "org.apache.mobilespec"
+ , "com.example"
+ , "com.42floors.package"
+ ];
+ var invalid = [
+ ""
+ , "com.class.is.bad"
+ , "0com.example.mobilespec"
+ , "c-m.e@a!p%e.mobilespec"
+ , "notenoughdots"
+ , ".starts.with.a.dot"
+ , "ends.with.a.dot."
+ , "_underscore.anything"
+ , "underscore._something"
+ , "_underscore._all._the._things"
+ ];
+
+ valid.forEach(function(package_name) {
+ it("should accept " + package_name, function(done) {
+ expect(create.validatePackageName(package_name)).toHaveBeenResolved(done);
+ });
+ });
+
+ invalid.forEach(function(package_name) {
+ it("should reject " + package_name, function(done) {
+ expect(create.validatePackageName(package_name)).toHaveBeenRejected(done);
+ });
+ });
+ });
+ describe("validateProjectName", function() {
+ var valid = [
+ "mobilespec"
+ , "package_name"
+ , "PackageName"
+ , "CordovaLib"
+ ];
+ var invalid = [
+ ""
+ , "0startswithdigit"
+ , "CordovaActivity"
+ ];
+
+ valid.forEach(function(project_name) {
+ it("should accept " + project_name, function(done) {
+ expect(create.validateProjectName(project_name)).toHaveBeenResolved(done);
+ });
+ });
+
+ invalid.forEach(function(project_name) {
+ it("should reject " + project_name, function(done) {
+ expect(create.validateProjectName(project_name)).toHaveBeenRejected(done);
+ });
+ });
+ });
+});