diff --git a/bin/templates/cordova/lib/pluginHandlers.js b/bin/templates/cordova/lib/pluginHandlers.js index 794154b547..25890ba235 100644 --- a/bin/templates/cordova/lib/pluginHandlers.js +++ b/bin/templates/cordova/lib/pluginHandlers.js @@ -295,7 +295,7 @@ function generateAttributeError (attribute, element, id) { function getInstallDestination (obj) { var APP_MAIN_PREFIX = 'app/src/main'; - if (obj.targetDir.includes('app')) { + if (obj.targetDir.startsWith('app')) { // If any source file is using the new app directory structure, // don't penalize it return path.join(obj.targetDir, path.basename(obj.src)); diff --git a/spec/fixtures/org.test.plugins.dummyplugin/plugin.xml b/spec/fixtures/org.test.plugins.dummyplugin/plugin.xml index 4e2ebcc6c6..9bc99d21dd 100644 --- a/spec/fixtures/org.test.plugins.dummyplugin/plugin.xml +++ b/spec/fixtures/org.test.plugins.dummyplugin/plugin.xml @@ -82,6 +82,8 @@ + diff --git a/spec/unit/pluginHandlers/handlers.spec.js b/spec/unit/pluginHandlers/handlers.spec.js index 20f5e6e93b..31e7b453b9 100644 --- a/spec/unit/pluginHandlers/handlers.spec.js +++ b/spec/unit/pluginHandlers/handlers.spec.js @@ -163,6 +163,12 @@ describe('android project handler', function () { 'src/android/jniLibs/x86/libnative.so', temp, path.join('app/src/main/jniLibs/x86/libnative.so'), false); }); + + it('Test#006j : should allow installing sources with target-dir that includes "app"', function () { + android['source-file'].install(valid_source[10], dummyPluginInfo, dummyProject, {android_studio: true}); + expect(copyFileSpy) + .toHaveBeenCalledWith(dummyplugin, 'src/android/DummyPlugin2.java', temp, path.join('app/src/main/java/com/appco/DummyPlugin2.java'), false); + }); }); describe('of elements', function () { @@ -372,6 +378,12 @@ describe('android project handler', function () { android['source-file'].uninstall(valid_source[9], dummyPluginInfo, dummyProject, {android_studio: true}); expect(removeFileSpy).toHaveBeenCalledWith(temp, path.join('app/src/main/jniLibs/x86/libnative.so')); }); + + it('Test#019j : should remove stuff by calling common.deleteJava for Android Studio projects, with target-dir that includes "app"', function () { + android['source-file'].install(valid_source[10], dummyPluginInfo, dummyProject, {android_studio: true}); + android['source-file'].uninstall(valid_source[10], dummyPluginInfo, dummyProject, {android_studio: true}); + expect(deleteJavaSpy).toHaveBeenCalledWith(temp, path.join('app/src/main/java/com/appco/DummyPlugin2.java')); + }); }); describe('of elements', function () {