drupid 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.bundle/config +3 -0
- data/.gitignore +10 -0
- data/.rbenv-version +1 -0
- data/Gemfile +3 -0
- data/README.md +56 -0
- data/Rakefile +26 -0
- data/bin/drupid +1 -3
- data/drupid.gemspec +31 -0
- data/lib/drupid/project_version.rb +276 -0
- data/lib/drupid/utils.rb +1 -1
- data/lib/drupid/version.rb +3 -275
- data/lib/drupid.rb +2 -7
- data/test/fixtures/drupal-example.make +89 -0
- data/test/fixtures/drupal-fake-site/modules/aggregator/aggregator.info +14 -0
- data/test/fixtures/drupal-fake-site/modules/aggregator/aggregator.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/aggregator/tests/aggregator_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/aggregator/tests/aggregator_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/block/block.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/block/block.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/block/tests/block_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/block/tests/block_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/blog/blog.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/blog/blog.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/book/book.info +14 -0
- data/test/fixtures/drupal-fake-site/modules/book/book.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/color/color.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/color/color.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/comment/comment.info +16 -0
- data/test/fixtures/drupal-fake-site/modules/comment/comment.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/contact/contact.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/contact/contact.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/contextual/contextual.info +11 -0
- data/test/fixtures/drupal-fake-site/modules/contextual/contextual.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/dashboard/dashboard.info +14 -0
- data/test/fixtures/drupal-fake-site/modules/dashboard/dashboard.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/dblog/dblog.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/dblog/dblog.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/field/field.info +17 -0
- data/test/fixtures/drupal-fake-site/modules/field/field.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/field/modules/field_sql_storage/field_sql_storage.info +14 -0
- data/test/fixtures/drupal-fake-site/modules/field/modules/field_sql_storage/field_sql_storage.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/field/modules/list/list.info +14 -0
- data/test/fixtures/drupal-fake-site/modules/field/modules/list/list.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/field/modules/list/tests/list_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/field/modules/list/tests/list_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/field/modules/number/number.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/field/modules/number/number.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/field/modules/options/options.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/field/modules/options/options.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/field/modules/text/text.info +14 -0
- data/test/fixtures/drupal-fake-site/modules/field/modules/text/text.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/field/tests/field_test.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/field/tests/field_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/field_ui/field_ui.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/field_ui/field_ui.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/file/file.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/file/file.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/file/tests/file_module_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/file/tests/file_module_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/filter/filter.info +14 -0
- data/test/fixtures/drupal-fake-site/modules/filter/filter.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/forum/forum.info +16 -0
- data/test/fixtures/drupal-fake-site/modules/forum/forum.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/help/help.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/help/help.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/image/image.info +14 -0
- data/test/fixtures/drupal-fake-site/modules/image/image.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/image/tests/image_module_test.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/image/tests/image_module_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/locale/locale.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/locale/locale.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/locale/tests/locale_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/locale/tests/locale_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/menu/menu.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/menu/menu.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/node/node.info +16 -0
- data/test/fixtures/drupal-fake-site/modules/node/node.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/node/tests/node_access_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/node/tests/node_access_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/node/tests/node_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/node/tests/node_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/node/tests/node_test_exception.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/node/tests/node_test_exception.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/openid/openid.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/openid/openid.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/openid/tests/openid_test.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/openid/tests/openid_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/overlay/overlay.info +11 -0
- data/test/fixtures/drupal-fake-site/modules/overlay/overlay.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/path/path.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/path/path.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/php/php.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/php/php.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/poll/poll.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/poll/poll.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/profile/profile.info +18 -0
- data/test/fixtures/drupal-fake-site/modules/profile/profile.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/rdf/rdf.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/rdf/rdf.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/rdf/tests/rdf_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/rdf/tests/rdf_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/search/search.info +15 -0
- data/test/fixtures/drupal-fake-site/modules/search/search.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/search/tests/search_embedded_form.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/search/tests/search_embedded_form.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/search/tests/search_extra_type.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/search/tests/search_extra_type.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/shortcut/shortcut.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/shortcut/shortcut.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/simpletest.info +56 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/simpletest.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/actions_loop_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/actions_loop_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/ajax_forms_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/ajax_forms_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/ajax_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/ajax_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/batch_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/batch_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/common_test.info +14 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/common_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/common_test_cron_helper.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/common_test_cron_helper.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/database_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/database_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/entity_cache_test.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/entity_cache_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/entity_cache_test_dependency.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/entity_cache_test_dependency.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/entity_crud_hook_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/entity_crud_hook_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/error_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/error_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/file_test.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/file_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/filter_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/filter_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/form_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/form_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/image_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/image_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/menu_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/menu_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/module_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/module_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/requirements1_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/requirements1_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/requirements2_test.info +14 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/requirements2_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/session_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/session_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_dependencies_test.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_dependencies_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_incompatible_core_version_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_incompatible_core_version_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.info +14 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_incompatible_module_version_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_incompatible_module_version_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_test.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/taxonomy_test.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/taxonomy_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/theme_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/theme_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/update_script_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/update_script_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/update_test_1.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/update_test_1.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/update_test_2.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/update_test_2.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/update_test_3.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/update_test_3.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/url_alter_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/url_alter_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/xmlrpc_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/simpletest/tests/xmlrpc_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/statistics/statistics.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/statistics/statistics.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/syslog/syslog.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/syslog/syslog.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/system/system.info +19 -0
- data/test/fixtures/drupal-fake-site/modules/system/system.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/taxonomy/taxonomy.info +15 -0
- data/test/fixtures/drupal-fake-site/modules/taxonomy/taxonomy.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/toolbar/toolbar.info +11 -0
- data/test/fixtures/drupal-fake-site/modules/toolbar/toolbar.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/tracker/tracker.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/tracker/tracker.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/translation/tests/translation_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/translation/tests/translation_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/translation/translation.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/translation/translation.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/trigger/tests/trigger_test.info +11 -0
- data/test/fixtures/drupal-fake-site/modules/trigger/tests/trigger_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/trigger/trigger.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/trigger/trigger.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/update/tests/aaa_update_test.info +11 -0
- data/test/fixtures/drupal-fake-site/modules/update/tests/aaa_update_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/update/tests/bbb_update_test.info +11 -0
- data/test/fixtures/drupal-fake-site/modules/update/tests/bbb_update_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/update/tests/ccc_update_test.info +11 -0
- data/test/fixtures/drupal-fake-site/modules/update/tests/ccc_update_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/update/tests/update_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/update/tests/update_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/update/update.info +13 -0
- data/test/fixtures/drupal-fake-site/modules/update/update.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/user/tests/user_form_test.info +12 -0
- data/test/fixtures/drupal-fake-site/modules/user/tests/user_form_test.module +0 -0
- data/test/fixtures/drupal-fake-site/modules/user/user.info +16 -0
- data/test/fixtures/drupal-fake-site/modules/user/user.module +0 -0
- data/test/fixtures/drupal-fake-site/profiles/minimal/minimal.info +13 -0
- data/test/fixtures/drupal-fake-site/profiles/minimal/minimal.profile +0 -0
- data/test/fixtures/drupal-fake-site/profiles/openpublic/modules/custom/combineblocks/combineblocks.info +11 -0
- data/test/fixtures/drupal-fake-site/profiles/openpublic/modules/custom/openpublic_api/openpublic_api.info +12 -0
- data/test/fixtures/drupal-fake-site/profiles/openpublic/modules/custom/openpublic_splash/openpublic_splash.info +16 -0
- data/test/fixtures/drupal-fake-site/profiles/openpublic/modules/custom/phase2_blog/phase2_blog.info +32 -0
- data/test/fixtures/drupal-fake-site/profiles/openpublic/modules/custom/phase2_document/phase2_document.info +38 -0
- data/test/fixtures/drupal-fake-site/profiles/openpublic/modules/custom/phase2_profile/phase2_profile.info +45 -0
- data/test/fixtures/drupal-fake-site/profiles/openpublic/openpublic.info +137 -0
- data/test/fixtures/drupal-fake-site/profiles/openpublic/openpublic.make +149 -0
- data/test/fixtures/drupal-fake-site/profiles/openpublic/openpublic.profile +0 -0
- data/test/fixtures/drupal-fake-site/profiles/openpublic/themes/openomega/openomega.info +434 -0
- data/test/fixtures/drupal-fake-site/profiles/openpublic/themes/openpublic_theme/.project +11 -0
- data/test/fixtures/drupal-fake-site/profiles/openpublic/themes/openpublic_theme/openpublic_theme.info +51 -0
- data/test/fixtures/drupal-fake-site/profiles/openpublic/themes/spartan/spartan.info +434 -0
- data/test/fixtures/drupal-fake-site/profiles/standard/standard.info +32 -0
- data/test/fixtures/drupal-fake-site/profiles/standard/standard.profile +0 -0
- data/test/fixtures/drupal-fake-site/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info +12 -0
- data/test/fixtures/drupal-fake-site/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info +15 -0
- data/test/fixtures/drupal-fake-site/profiles/testing/testing.info +11 -0
- data/test/fixtures/drupal-fake-site/profiles/testing/testing.profile +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/entity/entity.info +31 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/entity/entity.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/entity/entity_token.info +13 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/entity/entity_token.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/entity/tests/entity_feature.info +14 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/entity/tests/entity_feature.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/entity/tests/entity_test.info +15 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/entity/tests/entity_test.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/featured_news_feature/featured_news.info +23 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/featured_news_feature/featured_news.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/google_analytics/googleanalytics.info +13 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/google_analytics/googleanalytics.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/media/media.info +26 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/media/media.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/migrate/migrate.info +47 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/migrate/migrate.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/migrate/migrate_example/migrate_example.info +27 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/migrate/migrate_example/migrate_example.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/migrate/migrate_example_baseball/migrate_example_baseball.info +32 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/migrate/migrate_example_baseball/migrate_example_baseball.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/migrate/migrate_ui/migrate_ui.info +15 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/migrate/migrate_ui/migrate_ui.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/bulk_export/bulk_export.info +12 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/bulk_export/bulk_export.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools.info +14 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools_access_ruleset/ctools_access_ruleset.info +12 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools_access_ruleset/ctools_access_ruleset.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools_ajax_sample/ctools_ajax_sample.info +12 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools_ajax_sample/ctools_ajax_sample.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools_custom_content/ctools_custom_content.info +12 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools_custom_content/ctools_custom_content.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools_plugin_example/ctools_plugin_example.info +15 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools_plugin_example/ctools_plugin_example.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/page_manager/page_manager.info +12 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/page_manager/page_manager.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/stylizer/stylizer.info +13 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/stylizer/stylizer.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/tests/ctools_plugin_test.info +15 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/tests/ctools_plugin_test.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/views_content/views_content.info +17 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/views_content/views_content.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/views/tests/views_test.info +13 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/views/tests/views_test.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/views/views.info +297 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/views/views.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/views/views_ui.info +15 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/views/views_ui.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/wysiwyg/tests/wysiwyg_test.info +14 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/wysiwyg/tests/wysiwyg_test.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/wysiwyg/wysiwyg.info +17 -0
- data/test/fixtures/drupal-fake-site/sites/all/modules/wysiwyg/wysiwyg.module +0 -0
- data/test/fixtures/drupal-fake-site/sites/all/themes/fusion/fusion_core/fusion_core.info +102 -0
- data/test/fixtures/drupal-fake-site/sites/all/themes/fusion/fusion_starter/fusion_starter.info +190 -0
- data/test/fixtures/drupal-fake-site/sites/all/themes/fusion/fusion_starter_lite/fusion_starter_lite.info +170 -0
- data/test/fixtures/drupal-fake-site/sites/all/themes/subdir/mothership/.gitignore +3 -0
- data/test/fixtures/drupal-fake-site/sites/all/themes/subdir/mothership/NEWTHEME/NEWTHEME.info +124 -0
- data/test/fixtures/drupal-fake-site/sites/all/themes/subdir/mothership/mothership/mothership.info +126 -0
- data/test/fixtures/drupal-fake-site/sites/all/themes/subdir/mothership/mothershipstark/mothershipstark.info +15 -0
- data/test/fixtures/drupal-fake-site/sites/all/themes/subdir/mothership/tema/tema.info +58 -0
- data/test/fixtures/drupal-fake-site/sites/all/themes/tao/tao.info +49 -0
- data/test/fixtures/drupal-fake-site/sites/default/settings.php +0 -0
- data/test/fixtures/drupal-fake-site/sites/www.bar.org/settings.php +0 -0
- data/test/fixtures/drupal-fake-site/sites/www.foo.org/settings.php +0 -0
- data/test/fixtures/drupal-fake-site/themes/bartik/bartik.info +41 -0
- data/test/fixtures/drupal-fake-site/themes/garland/garland.info +14 -0
- data/test/fixtures/drupal-fake-site/themes/seven/seven.info +20 -0
- data/test/fixtures/drupal-fake-site/themes/stark/stark.info +12 -0
- data/test/fixtures/drupal-fake-site/themes/tests/block_test_theme/block_test_theme.info +20 -0
- data/test/fixtures/drupal-fake-site/themes/tests/test_theme/test_theme.info +22 -0
- data/test/fixtures/drupal-fake-site/themes/tests/update_test_basetheme/update_test_basetheme.info +10 -0
- data/test/fixtures/drupal-fake-site/themes/tests/update_test_subtheme/update_test_subtheme.info +11 -0
- data/test/fixtures/fake_library.tar.gz +0 -0
- data/test/fixtures/rootcandy/rootcandy.info +52 -0
- data/test/fixtures/views-info.diff +11 -0
- data/test/fixtures/views.tar.gz +0 -0
- data/test/helper.rb +7 -0
- data/test/makefiles/test1.make +20 -0
- data/test/makefiles/test2.make +14 -0
- data/test/makefiles/test3.make +8 -0
- data/test/test_drupid_component.rb +120 -0
- data/test/test_drupid_download_strategy.rb +112 -0
- data/test/test_drupid_drush.rb +32 -0
- data/test/test_drupid_extend_pathname.rb +33 -0
- data/test/test_drupid_library.rb +62 -0
- data/test/test_drupid_makefile.rb +181 -0
- data/test/test_drupid_patch.rb +53 -0
- data/test/test_drupid_platform.rb +207 -0
- data/test/test_drupid_platform_project.rb +206 -0
- data/test/test_drupid_project.rb +650 -0
- data/test/test_drupid_updater.rb +76 -0
- data/test/test_drupid_version.rb +295 -0
- data/test/test_pathname.rb +67 -0
- metadata +696 -5
|
@@ -0,0 +1,650 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
# Copyright (c) 2012-2013 Lifepillar
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
23
|
+
require 'helper'
|
|
24
|
+
|
|
25
|
+
class TestDrupidProjectInfo < Minitest::Test
|
|
26
|
+
|
|
27
|
+
def test_module_info_from_info_file
|
|
28
|
+
module_path = TESTSITE+'sites/all/modules/views'
|
|
29
|
+
pi = Drupid::ProjectInfo.new(module_path+'views.info')
|
|
30
|
+
assert_equal 'views', pi.project_name
|
|
31
|
+
assert_equal 'module', pi.project_type
|
|
32
|
+
assert_instance_of Drupid::VersionCore, pi.project_core
|
|
33
|
+
assert_equal '7.x', pi.project_core.to_s
|
|
34
|
+
assert_instance_of Drupid::Version, pi.project_version
|
|
35
|
+
assert_equal '7.x-3.1', pi.project_version.long
|
|
36
|
+
assert_instance_of Pathname, pi.project_dir
|
|
37
|
+
assert_equal module_path, pi.project_dir
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_module_info_from_directory
|
|
41
|
+
module_path = TESTSITE+'sites/all/modules/views'
|
|
42
|
+
pi = Drupid::ProjectInfo.new(module_path)
|
|
43
|
+
assert_equal 'views', pi.project_name
|
|
44
|
+
assert_equal 'module', pi.project_type
|
|
45
|
+
assert_instance_of Drupid::VersionCore, pi.project_core
|
|
46
|
+
assert_equal '7.x', pi.project_core.to_s
|
|
47
|
+
assert_instance_of Drupid::Version, pi.project_version
|
|
48
|
+
assert_equal '7.x-3.1', pi.project_version.long
|
|
49
|
+
assert_instance_of Pathname, pi.project_dir
|
|
50
|
+
assert_equal module_path, pi.project_dir
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_theme_info_from_info_file_in_subdirectory
|
|
54
|
+
theme_path = TESTSITE+'sites/all/themes/subdir/mothership'
|
|
55
|
+
pi = Drupid::ProjectInfo.new(theme_path+'mothership/mothership.info')
|
|
56
|
+
assert_equal 'mothership', pi.project_name
|
|
57
|
+
assert_equal 'theme', pi.project_type
|
|
58
|
+
assert_instance_of Drupid::VersionCore, pi.project_core
|
|
59
|
+
assert_equal '7.x', pi.project_core.to_s
|
|
60
|
+
assert_instance_of Drupid::Version, pi.project_version
|
|
61
|
+
assert_equal '7.x-2.2', pi.project_version.long
|
|
62
|
+
assert_instance_of Pathname, pi.project_dir
|
|
63
|
+
assert_equal theme_path, pi.project_dir
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def test_theme_info_from_directory_in_subdirectory
|
|
67
|
+
theme_path = TESTSITE+'sites/all/themes/subdir/mothership'
|
|
68
|
+
pi = Drupid::ProjectInfo.new(theme_path)
|
|
69
|
+
assert_equal 'mothership', pi.project_name
|
|
70
|
+
assert_equal 'theme', pi.project_type
|
|
71
|
+
assert_instance_of Drupid::VersionCore, pi.project_core
|
|
72
|
+
assert_equal '7.x', pi.project_core.to_s
|
|
73
|
+
assert_instance_of Drupid::Version, pi.project_version
|
|
74
|
+
assert_equal '7.x-2.2', pi.project_version.long
|
|
75
|
+
assert_instance_of Pathname, pi.project_dir
|
|
76
|
+
assert_equal theme_path, pi.project_dir
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def test_theme_info_from_info_file_no_version
|
|
80
|
+
theme_path = TESTSITE+'sites/all/themes/tao'
|
|
81
|
+
pi = Drupid::ProjectInfo.new(theme_path+'tao.info')
|
|
82
|
+
assert_equal 'tao', pi.project_name
|
|
83
|
+
assert_equal 'theme', pi.project_type
|
|
84
|
+
assert_instance_of Drupid::VersionCore, pi.project_core
|
|
85
|
+
assert_equal '6.x', pi.project_core.to_s
|
|
86
|
+
assert_nil pi.project_version
|
|
87
|
+
assert_instance_of Pathname, pi.project_dir
|
|
88
|
+
assert_equal theme_path, pi.project_dir
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def test_theme_info_from_directory_no_version
|
|
92
|
+
theme_path = TESTSITE+'sites/all/themes/tao'
|
|
93
|
+
pi = Drupid::ProjectInfo.new(theme_path)
|
|
94
|
+
assert_equal 'tao', pi.project_name
|
|
95
|
+
assert_equal 'theme', pi.project_type
|
|
96
|
+
assert_instance_of Drupid::VersionCore, pi.project_core
|
|
97
|
+
assert_equal '6.x', pi.project_core.to_s
|
|
98
|
+
assert_nil pi.project_version
|
|
99
|
+
assert_instance_of Pathname, pi.project_dir
|
|
100
|
+
assert_equal theme_path, pi.project_dir
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def test_core_module_info_from_info_file
|
|
104
|
+
module_path = TESTSITE+'modules/node'
|
|
105
|
+
pi = Drupid::ProjectInfo.new(module_path+'node.info')
|
|
106
|
+
assert_equal 'node', pi.project_name
|
|
107
|
+
assert_equal 'module', pi.project_type
|
|
108
|
+
assert pi.core_project?
|
|
109
|
+
assert_instance_of Drupid::VersionCore, pi.project_core
|
|
110
|
+
assert_equal '7.x', pi.project_core.to_s
|
|
111
|
+
assert_instance_of Drupid::Version, pi.project_version
|
|
112
|
+
assert_equal '7.10', pi.project_version.short
|
|
113
|
+
assert_instance_of Pathname, pi.project_dir
|
|
114
|
+
assert_equal module_path, pi.project_dir
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def test_core_module_info_from_directory
|
|
118
|
+
module_path = TESTSITE+'modules/node'
|
|
119
|
+
pi = Drupid::ProjectInfo.new(module_path)
|
|
120
|
+
assert_equal 'node', pi.project_name
|
|
121
|
+
assert_equal 'module', pi.project_type
|
|
122
|
+
assert pi.core_project?
|
|
123
|
+
assert_instance_of Drupid::VersionCore, pi.project_core
|
|
124
|
+
assert_equal '7.x', pi.project_core.to_s
|
|
125
|
+
assert_instance_of Drupid::Version, pi.project_version
|
|
126
|
+
assert_equal '7.10', pi.project_version.short
|
|
127
|
+
assert_instance_of Pathname, pi.project_dir
|
|
128
|
+
assert_equal module_path, pi.project_dir
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def test_core_theme_info_from_info_file
|
|
132
|
+
theme_path = TESTSITE+'themes/garland'
|
|
133
|
+
pi = Drupid::ProjectInfo.new(theme_path+'garland.info')
|
|
134
|
+
assert_equal 'garland', pi.project_name
|
|
135
|
+
assert_equal 'theme', pi.project_type
|
|
136
|
+
assert pi.core_project?
|
|
137
|
+
assert_instance_of Drupid::VersionCore, pi.project_core
|
|
138
|
+
assert_equal '7.x', pi.project_core.to_s
|
|
139
|
+
assert_instance_of Drupid::Version, pi.project_version
|
|
140
|
+
assert_equal '7.10', pi.project_version.short
|
|
141
|
+
assert_instance_of Pathname, pi.project_dir
|
|
142
|
+
assert_equal theme_path, pi.project_dir
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def test_core_theme_info_from_directory
|
|
146
|
+
theme_path = TESTSITE+'themes/garland'
|
|
147
|
+
pi = Drupid::ProjectInfo.new(theme_path)
|
|
148
|
+
assert_equal 'garland', pi.project_name
|
|
149
|
+
assert_equal 'theme', pi.project_type
|
|
150
|
+
assert pi.core_project?
|
|
151
|
+
assert_instance_of Drupid::VersionCore, pi.project_core
|
|
152
|
+
assert_equal '7.x', pi.project_core.to_s
|
|
153
|
+
assert_instance_of Drupid::Version, pi.project_version
|
|
154
|
+
assert_equal '7.10', pi.project_version.short
|
|
155
|
+
assert_instance_of Pathname, pi.project_dir
|
|
156
|
+
assert_equal theme_path, pi.project_dir
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def test_profile_info_from_info_file
|
|
160
|
+
profile_path = TESTSITE+'profiles/openpublic'
|
|
161
|
+
pi = Drupid::ProjectInfo.new(profile_path+'openpublic.info')
|
|
162
|
+
assert_equal 'openpublic', pi.project_name
|
|
163
|
+
assert_equal 'profile', pi.project_type
|
|
164
|
+
assert_instance_of Drupid::VersionCore, pi.project_core
|
|
165
|
+
assert_equal '7.x', pi.project_core.to_s
|
|
166
|
+
assert_instance_of Drupid::Version, pi.project_version
|
|
167
|
+
assert_equal '7.x-1.0-beta4', pi.project_version.long
|
|
168
|
+
assert_instance_of Pathname, pi.project_dir
|
|
169
|
+
assert_equal profile_path, pi.project_dir
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def test_profile_info_from_directory
|
|
173
|
+
profile_path = TESTSITE+'profiles/openpublic'
|
|
174
|
+
pi = Drupid::ProjectInfo.new(profile_path)
|
|
175
|
+
assert_equal 'openpublic', pi.project_name
|
|
176
|
+
assert_equal 'profile', pi.project_type
|
|
177
|
+
assert_instance_of Drupid::VersionCore, pi.project_core
|
|
178
|
+
assert_equal '7.x', pi.project_core.to_s
|
|
179
|
+
assert_instance_of Drupid::Version, pi.project_version
|
|
180
|
+
assert_equal '7.x-1.0-beta4', pi.project_version.long
|
|
181
|
+
assert_instance_of Pathname, pi.project_dir
|
|
182
|
+
assert_equal profile_path, pi.project_dir
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
def test_info_for_google_analytics_from_info_file
|
|
186
|
+
module_path = TESTSITE+'sites/all/modules/google_analytics'
|
|
187
|
+
pi = Drupid::ProjectInfo.new(module_path+'googleanalytics.info')
|
|
188
|
+
assert_equal 'google_analytics', pi.project_name
|
|
189
|
+
assert_equal 'module', pi.project_type
|
|
190
|
+
assert_instance_of Drupid::VersionCore, pi.project_core
|
|
191
|
+
assert_equal '7.x', pi.project_core.to_s
|
|
192
|
+
assert_instance_of Drupid::Version, pi.project_version
|
|
193
|
+
assert_equal '7.x-1.2', pi.project_version.long
|
|
194
|
+
assert_instance_of Pathname, pi.project_dir
|
|
195
|
+
assert_equal module_path, pi.project_dir
|
|
196
|
+
assert_equal 'google_analytics', pi.project_dir.basename.to_s
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
def test_info_for_google_analytics_from_directory
|
|
200
|
+
module_path = TESTSITE+'sites/all/modules/google_analytics'
|
|
201
|
+
pi = Drupid::ProjectInfo.new(module_path)
|
|
202
|
+
assert_equal 'google_analytics', pi.project_name
|
|
203
|
+
assert_equal 'module', pi.project_type
|
|
204
|
+
assert_instance_of Drupid::VersionCore, pi.project_core
|
|
205
|
+
assert_equal '7.x', pi.project_core.to_s
|
|
206
|
+
assert_instance_of Drupid::Version, pi.project_version
|
|
207
|
+
assert_equal '7.x-1.2', pi.project_version.long
|
|
208
|
+
assert_instance_of Pathname, pi.project_dir
|
|
209
|
+
assert_equal module_path, pi.project_dir
|
|
210
|
+
assert_equal 'google_analytics', pi.project_dir.basename.to_s
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
# Rootcandy does not have "base theme" or "engine" keys in the .info file.
|
|
214
|
+
# It can be recognized because it has "stylesheets" and "regions" keys.
|
|
215
|
+
def test_type_for_rootcandy
|
|
216
|
+
theme_path = FIXTURES+'rootcandy'
|
|
217
|
+
pi = Drupid::ProjectInfo.new(theme_path)
|
|
218
|
+
assert_equal 'rootcandy', pi.project_name
|
|
219
|
+
assert_equal 'theme', pi.project_type
|
|
220
|
+
refute pi.core_project?
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
end # TestDrupidProjectInfo
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
class TestDrupidProject < Minitest::Test
|
|
227
|
+
|
|
228
|
+
def test_project_creation
|
|
229
|
+
p = Drupid::Project.new('bar', 7)
|
|
230
|
+
assert_instance_of Drupid::Project, p
|
|
231
|
+
assert_equal 'bar', p.name
|
|
232
|
+
assert_equal 7, p.core.to_i
|
|
233
|
+
refute p.has_version?
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
def test_project_version
|
|
237
|
+
p = Drupid::Project.new('foo', 8)
|
|
238
|
+
p.version = '8.x-1.0'
|
|
239
|
+
assert_instance_of Drupid::Project, p
|
|
240
|
+
assert_equal 'foo', p.name
|
|
241
|
+
assert_equal 8, p.core.to_i
|
|
242
|
+
assert_instance_of Drupid::Version, p.version
|
|
243
|
+
assert_equal '8.x-1.0', p.version.long
|
|
244
|
+
assert_equal '1.0', p.version.short
|
|
245
|
+
p = Drupid::Project.new('foo', 8, '1.0')
|
|
246
|
+
assert_instance_of Drupid::Project, p
|
|
247
|
+
assert_equal 'foo', p.name
|
|
248
|
+
assert_equal 8, p.core.to_i
|
|
249
|
+
assert_instance_of Drupid::Version, p.version
|
|
250
|
+
assert_equal '8.x-1.0', p.version.long
|
|
251
|
+
assert_equal '1.0', p.version.short
|
|
252
|
+
p.version = Drupid::Version.from_s('8.x-1.1')
|
|
253
|
+
assert_equal '8.x-1.1', p.version.long
|
|
254
|
+
assert_equal '1.1', p.version.short
|
|
255
|
+
assert_raises Drupid::NotDrupalVersionError do
|
|
256
|
+
p.version = '2.0' # Missing core compatibility number
|
|
257
|
+
end
|
|
258
|
+
assert_raises Drupid::NotDrupalVersionError do
|
|
259
|
+
p.version = '2.x' # Missing core compatibility number
|
|
260
|
+
end
|
|
261
|
+
assert_equal '8.x-1.1', p.version.long
|
|
262
|
+
assert_raises Drupid::NotDrupalVersionError do
|
|
263
|
+
p.version = '7.x-1.2' # Incompatible core compatibility number
|
|
264
|
+
end
|
|
265
|
+
assert_equal '8.x-1.1', p.version.long
|
|
266
|
+
p.version = '8.x-2.0'
|
|
267
|
+
assert_equal '8.x-2.0', p.version.long
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
def test_set_project_version_to_nil
|
|
271
|
+
p = Drupid::Project.new('foo', 8)
|
|
272
|
+
p.version = nil
|
|
273
|
+
assert_nil p.version
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
def test_project_type_features_news
|
|
277
|
+
p = Drupid::Project.new('featured_news_feature', 7)
|
|
278
|
+
p.local_path = TESTSITE+'sites/all/modules/featured_news_feature'
|
|
279
|
+
p.reload_project_info
|
|
280
|
+
assert p.exist?, 'featured_news_feature not found'
|
|
281
|
+
assert_equal 'featured_news_feature', p.name
|
|
282
|
+
assert_equal false, p.core_project?, 'this is not a core project'
|
|
283
|
+
assert_equal '7.x-1.0', p.version.long
|
|
284
|
+
assert_equal '1.0', p.version.short
|
|
285
|
+
assert_equal 'module', p.proj_type
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
def test_project_equality
|
|
289
|
+
p1 = Drupid::Project.new('foo', 7, '1.0')
|
|
290
|
+
p2 = Drupid::Project.new('foo', 7, '1.0')
|
|
291
|
+
p3 = Drupid::Project.new('foo', 7, '1.0-rc1')
|
|
292
|
+
p4 = Drupid::Project.new('bar', 7, '1.0')
|
|
293
|
+
assert_equal p1, p2
|
|
294
|
+
refute_equal p1, p3
|
|
295
|
+
refute_equal p1, p4
|
|
296
|
+
refute_equal p3, p4
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
def test_project_multiway_comparison
|
|
300
|
+
p1 = Drupid::Project.new('bar', 7, '1.0')
|
|
301
|
+
p2 = Drupid::Project.new('foo', 7, '1.0-rc2')
|
|
302
|
+
p3 = Drupid::Project.new('foo', 7, '1.0-rc2')
|
|
303
|
+
p4 = Drupid::Project.new('foo', 7, '1.0')
|
|
304
|
+
p5 = Drupid::Project.new('foo', 7, '1.x-dev')
|
|
305
|
+
p6 = Drupid::Project.new('foo', 7)
|
|
306
|
+
assert_nil p1 <=> p2, 'p1 <=> p2'
|
|
307
|
+
assert_nil p2 <=> p1, 'p2 <=> p1'
|
|
308
|
+
assert_nil p1 <=> p6, 'p1 <=> p6'
|
|
309
|
+
assert_nil p2 <=> p6, 'p2 <=> p6'
|
|
310
|
+
assert_nil p6 <=> p2, 'p6 <=> p2'
|
|
311
|
+
assert_equal 0, p2 <=> p3, 'p2 <=> p3'
|
|
312
|
+
assert_equal 0, p3 <=> p2, 'p3 <=> p2'
|
|
313
|
+
assert_equal(-1, p3 <=> p4, 'p3 <=> p4')
|
|
314
|
+
assert_equal 1, p4 <=> p3, 'p4 <=> p3'
|
|
315
|
+
assert_equal(1, p4 <=> p5, 'p4 <=> p5')
|
|
316
|
+
assert_equal(-1, p5 <=> p4, 'p5 <=> p4')
|
|
317
|
+
assert_equal 1, p3 <=> p5, 'p3 <=> p5'
|
|
318
|
+
assert_equal(-1, p5 <=> p3, 'p5 <=> p3')
|
|
319
|
+
assert_equal p2, p3, 'p2 == p3'
|
|
320
|
+
assert_equal p3, p2, 'p3 == p2'
|
|
321
|
+
assert p3 < p4, 'p3 < p4'
|
|
322
|
+
assert p4 > p3, 'p4 > p3'
|
|
323
|
+
assert p4 > p5, 'p4 > p5'
|
|
324
|
+
assert p5 < p4, 'p5 < p4'
|
|
325
|
+
assert p3 > p5, 'p3 > p5'
|
|
326
|
+
assert p5 < p3, 'p5 < p3'
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
def test_project_compare_underspecified_versions
|
|
330
|
+
p = Drupid::Project.new('foo', 6)
|
|
331
|
+
q = Drupid::Project.new('foo', 7, '1.0')
|
|
332
|
+
assert_equal(-1, p <=> q, 'p <=> q')
|
|
333
|
+
assert p < q, 'p should be older than q'
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
def test_cloning
|
|
337
|
+
p = Drupid::Project.new('foo', 7)
|
|
338
|
+
p.version = '7.x-1.0'
|
|
339
|
+
p.local_path = '/dummy'
|
|
340
|
+
p.download_specs = {:bar => 'abc'}
|
|
341
|
+
q = p.clone
|
|
342
|
+
assert_equal p, q
|
|
343
|
+
assert_equal p.version, q.version
|
|
344
|
+
assert_equal p.local_path, q.local_path
|
|
345
|
+
p.local_path = '/tummy'
|
|
346
|
+
refute_equal p.local_path, q.local_path
|
|
347
|
+
assert_equal 'abc', p.download_specs[:bar]
|
|
348
|
+
assert_equal p.download_specs, q.download_specs
|
|
349
|
+
q.download_specs[:bar] = 'defg'
|
|
350
|
+
assert_equal 'abc', p.download_specs[:bar]
|
|
351
|
+
p.version = '7.x-2.0'
|
|
352
|
+
refute_equal p.version, q.version
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
def test_extended_name
|
|
356
|
+
p = Drupid::Project.new('views', 7, '3.1')
|
|
357
|
+
assert_equal 'views-7.x-3.1', p.extended_name
|
|
358
|
+
p = Drupid::Project.new('views', 8)
|
|
359
|
+
assert_equal 'views-8.x', p.extended_name
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
def test_drupal
|
|
363
|
+
p = Drupid::Project.new('drupal', 7, '7.14')
|
|
364
|
+
assert_equal 'drupal', p.name
|
|
365
|
+
assert_equal 'drupal-7.14', p.extended_name
|
|
366
|
+
assert_equal 'drupal', p.proj_type
|
|
367
|
+
assert p.core_project?, 'drupal should be a core project'
|
|
368
|
+
assert_equal '.', p.target_path.to_s
|
|
369
|
+
end
|
|
370
|
+
|
|
371
|
+
def test_dependencies
|
|
372
|
+
p = Drupid::Project.new('views', 7)
|
|
373
|
+
p.local_path = TESTSITE+'sites/all/modules/views'
|
|
374
|
+
deps = p.dependencies
|
|
375
|
+
assert_equal 1, deps.size, 'views should have one dependency'
|
|
376
|
+
assert deps.include?('ctools'), 'views should depend on ctools'
|
|
377
|
+
p = Drupid::Project.new('wysiwyg', 7)
|
|
378
|
+
p.local_path = TESTSITE+'sites/all/modules/wysiwyg'
|
|
379
|
+
deps = p.dependencies
|
|
380
|
+
assert deps.empty?, 'wysiwyg should not have any dependencies'
|
|
381
|
+
p = Drupid::Project.new('mothershipstark', 7)
|
|
382
|
+
p.local_path = TESTSITE+'sites/all/themes/subdir/mothership/mothershipstark'
|
|
383
|
+
deps = p.dependencies
|
|
384
|
+
assert_equal 1, deps.size, 'mothershipstark should have one dependency'
|
|
385
|
+
assert deps.include?('mothership'), 'mothershipstark should depend on mothership'
|
|
386
|
+
p = Drupid::Project.new('migrate', 7)
|
|
387
|
+
p.local_path = TESTSITE+'sites/all/modules/migrate'
|
|
388
|
+
deps = p.dependencies
|
|
389
|
+
assert_equal 6, deps.size, 'migrate should have 6 dependencies'
|
|
390
|
+
assert deps.include?('taxonomy'), 'taxonomy should be included'
|
|
391
|
+
assert deps.include?('image'), 'image should be included'
|
|
392
|
+
assert deps.include?('comment'), 'comment should be included'
|
|
393
|
+
assert deps.include?('list'), 'list should be included'
|
|
394
|
+
assert deps.include?('number'), 'number should be included'
|
|
395
|
+
assert deps.include?('features'), 'features should be included'
|
|
396
|
+
end
|
|
397
|
+
|
|
398
|
+
# Currently, conditional dependencies (e.g., 'file_entity (>1.99)')
|
|
399
|
+
# are not supported by Drupid. Nonetheless, they should not break Drupid.
|
|
400
|
+
def test_conditional_dependencies
|
|
401
|
+
p = Drupid::Project.new('media', 7)
|
|
402
|
+
p.local_path = TESTSITE+'sites/all/modules/media'
|
|
403
|
+
deps = p.dependencies
|
|
404
|
+
assert_equal 3, deps.size, 'media should have three dependencies'
|
|
405
|
+
assert deps.include?('file_entity'), 'media should depend on file_entity'
|
|
406
|
+
assert deps.include?('image'), 'media should depend on image'
|
|
407
|
+
assert deps.include?('views'), 'media should depend on views'
|
|
408
|
+
end
|
|
409
|
+
|
|
410
|
+
def test_extensions
|
|
411
|
+
p = Drupid::Project.new('ctools', 7)
|
|
412
|
+
p.local_path = TESTSITE+'sites/all/modules/subdir/ctools'
|
|
413
|
+
extensions = p.extensions
|
|
414
|
+
refute_nil extensions, 'p.extensions should return something'
|
|
415
|
+
assert_equal 10, extensions.size, "Wrong number of extensions for ctools"
|
|
416
|
+
assert extensions.include?('ctools'), 'The extensions should include the module itself'
|
|
417
|
+
assert extensions.include?('bulk_export')
|
|
418
|
+
assert extensions.include?('views_content')
|
|
419
|
+
assert extensions.include?('stylizer')
|
|
420
|
+
assert extensions.include?('page_manager')
|
|
421
|
+
assert extensions.include?('ctools_plugin_example')
|
|
422
|
+
assert extensions.include?('ctools_custom_content')
|
|
423
|
+
assert extensions.include?('ctools_ajax_sample')
|
|
424
|
+
assert extensions.include?('ctools_access_ruleset')
|
|
425
|
+
assert extensions.include?('bulk_export')
|
|
426
|
+
p = Drupid::Project.new('tao', 7)
|
|
427
|
+
p.local_path = TESTSITE+'sites/all/themes/tao'
|
|
428
|
+
extensions = p.extensions
|
|
429
|
+
assert_equal 1, extensions.size, 'Wrong number of extensions for tao'
|
|
430
|
+
assert extensions.include?('tao'), "The extensions should include tao"
|
|
431
|
+
p = Drupid::Project.new('mothership', 7)
|
|
432
|
+
p.local_path = TESTSITE+'sites/all/themes/subdir/mothership'
|
|
433
|
+
extensions = p.extensions
|
|
434
|
+
assert_equal 4, extensions.size, 'Wrong number of extensions for mothership'
|
|
435
|
+
assert extensions.include?('mothership')
|
|
436
|
+
assert extensions.include?('mothershipstark')
|
|
437
|
+
assert extensions.include?('NEWTHEME')
|
|
438
|
+
assert extensions.include?('tema')
|
|
439
|
+
p = Drupid::Project.new('foobar', 7)
|
|
440
|
+
assert_equal ['foobar'], p.extensions
|
|
441
|
+
end
|
|
442
|
+
|
|
443
|
+
def test_extensions_entity
|
|
444
|
+
p = Drupid::Project.new('entity', 7)
|
|
445
|
+
p.local_path = TESTSITE+'sites/all/modules/entity'
|
|
446
|
+
exts = p.extensions
|
|
447
|
+
assert_equal 4, exts.size
|
|
448
|
+
assert exts.include?('entity')
|
|
449
|
+
assert exts.include?('entity_token')
|
|
450
|
+
assert exts.include?('entity_feature')
|
|
451
|
+
assert exts.include?('entity_test')
|
|
452
|
+
end
|
|
453
|
+
|
|
454
|
+
def test_extensions_google_analytics
|
|
455
|
+
p = Drupid::Project.new('google_analytics', 7)
|
|
456
|
+
p.local_path = TESTSITE+'sites/all/modules/google_analytics'
|
|
457
|
+
exts = p.extensions
|
|
458
|
+
assert_equal 2, exts.size
|
|
459
|
+
assert exts.include?('google_analytics')
|
|
460
|
+
assert exts.include?('googleanalytics')
|
|
461
|
+
end
|
|
462
|
+
|
|
463
|
+
def test_project_makefile
|
|
464
|
+
p = Drupid::Project.new('openpublic', 7)
|
|
465
|
+
p.local_path = TESTSITE+'profiles/openpublic'
|
|
466
|
+
assert_instance_of Pathname, p.makefile
|
|
467
|
+
assert_equal 'openpublic.make', p.makefile.basename.to_s
|
|
468
|
+
end
|
|
469
|
+
|
|
470
|
+
def test_project_has_makefile
|
|
471
|
+
p = Drupid::Project.new('openpublic', 7)
|
|
472
|
+
p.local_path = TESTSITE+'profiles/openpublic'
|
|
473
|
+
assert p.makefile
|
|
474
|
+
p = Drupid::Project.new('mothership', 7)
|
|
475
|
+
p.local_path = TESTSITE+'sites/all/themes/subdir/mothership'
|
|
476
|
+
assert p.makefile.nil?
|
|
477
|
+
end
|
|
478
|
+
|
|
479
|
+
def test_target_path
|
|
480
|
+
p = Drupid::Project.new('featured_news_feature', 7)
|
|
481
|
+
p.local_path = TESTSITE+'sites/all/modules/featured_news_feature'
|
|
482
|
+
p.reload_project_info
|
|
483
|
+
assert_equal 'modules/featured_news_feature', p.target_path.to_s
|
|
484
|
+
p.subdir = 'contrib'
|
|
485
|
+
assert_equal 'modules/contrib/featured_news_feature', p.target_path.to_s
|
|
486
|
+
p.directory_name = 'featured_news'
|
|
487
|
+
assert_equal 'modules/contrib/featured_news', p.target_path.to_s
|
|
488
|
+
p = Drupid::Project.new('openpublic', 7)
|
|
489
|
+
p.local_path = TESTSITE+'profiles/openpublic'
|
|
490
|
+
p.reload_project_info
|
|
491
|
+
assert_equal 'profiles/openpublic', p.target_path.to_s
|
|
492
|
+
p.subdir = 'contrib'
|
|
493
|
+
assert_equal 'profiles/contrib/openpublic', p.target_path.to_s
|
|
494
|
+
p.directory_name = 'myprofile'
|
|
495
|
+
assert_equal 'profiles/contrib/myprofile', p.target_path.to_s
|
|
496
|
+
p = Drupid::Project.new('mothership', 7)
|
|
497
|
+
p.local_path = TESTSITE+'sites/all/themes/subdir/mothership'
|
|
498
|
+
p.reload_project_info
|
|
499
|
+
assert_equal 'themes/mothership', p.target_path.to_s
|
|
500
|
+
p.directory_name = 'maternavis'
|
|
501
|
+
assert_equal 'themes/maternavis', p.target_path.to_s
|
|
502
|
+
p.subdir = 'harbour'
|
|
503
|
+
assert_equal 'themes/harbour/maternavis', p.target_path.to_s
|
|
504
|
+
end
|
|
505
|
+
|
|
506
|
+
# Requires an Internet connection
|
|
507
|
+
def test_best_release_d6
|
|
508
|
+
p = Drupid::Project.new('drupal', 6)
|
|
509
|
+
p.update_version
|
|
510
|
+
assert_instance_of Drupid::Version, p.version
|
|
511
|
+
assert_equal '6.28', p.version.short
|
|
512
|
+
assert_equal 6, p.version.core.to_i
|
|
513
|
+
assert_nil p.download_url
|
|
514
|
+
p.update_download_url
|
|
515
|
+
assert_equal 'http://ftp.drupal.org/files/projects/drupal-6.28.tar.gz', p.download_url
|
|
516
|
+
end
|
|
517
|
+
|
|
518
|
+
# Requires an Internet connection
|
|
519
|
+
def test_best_release_cck6
|
|
520
|
+
p = Drupid::Project.new('cck', 6)
|
|
521
|
+
p.update_version
|
|
522
|
+
assert_instance_of Drupid::Version, p.version
|
|
523
|
+
assert_equal '6.x-2.9', p.version.long
|
|
524
|
+
assert_equal 6, p.version.core.to_i
|
|
525
|
+
assert_nil p.download_url
|
|
526
|
+
p.update_download_url
|
|
527
|
+
assert_equal 'http://ftp.drupal.org/files/projects/cck-6.x-2.9.tar.gz', p.download_url
|
|
528
|
+
end
|
|
529
|
+
|
|
530
|
+
end # TestDrupidProject
|
|
531
|
+
|
|
532
|
+
class TestDrupidProjectFetchAndPatch < Minitest::Test
|
|
533
|
+
|
|
534
|
+
def setup
|
|
535
|
+
@cache = FIXTURES+'temp-cache'
|
|
536
|
+
@cache.mkpath
|
|
537
|
+
@old_cache_path = Drupid.cache_path
|
|
538
|
+
Drupid.cache_path = @cache
|
|
539
|
+
end
|
|
540
|
+
|
|
541
|
+
def teardown
|
|
542
|
+
Drupid.cache_path = @old_cache_path
|
|
543
|
+
@cache.rmtree
|
|
544
|
+
end
|
|
545
|
+
|
|
546
|
+
def test_fetch_project_with_curl
|
|
547
|
+
p = Drupid::Project.new('views', 7)
|
|
548
|
+
p.download_url = 'file://' + (FIXTURES+'views.tar.gz').to_s
|
|
549
|
+
p.download_type = 'file'
|
|
550
|
+
p.fetch
|
|
551
|
+
refute_nil p.local_path
|
|
552
|
+
assert p.local_path.exist?
|
|
553
|
+
# Local path and cached location will be different because the version
|
|
554
|
+
# is assigned *after* the project is fetched.s
|
|
555
|
+
refute_equal p.cached_location, p.local_path
|
|
556
|
+
assert_equal 'module', p.proj_type
|
|
557
|
+
assert_equal '7.x-3.1', p.version.long
|
|
558
|
+
end
|
|
559
|
+
|
|
560
|
+
def test_fetch_project_with_curl_specifying_version
|
|
561
|
+
p = Drupid::Project.new('views', 7, '3.1')
|
|
562
|
+
p.download_url = 'file://' + (FIXTURES+'views.tar.gz').to_s
|
|
563
|
+
p.download_type = 'file'
|
|
564
|
+
p.fetch
|
|
565
|
+
refute_nil p.local_path
|
|
566
|
+
assert p.local_path.exist?
|
|
567
|
+
assert_equal p.cached_location, p.local_path
|
|
568
|
+
assert_equal 'module', p.proj_type
|
|
569
|
+
assert_equal '7.x-3.1', p.version.long
|
|
570
|
+
end
|
|
571
|
+
|
|
572
|
+
def test_apply_patch
|
|
573
|
+
p = Drupid::Project.new('views', 7, '3.1')
|
|
574
|
+
p.download_url = 'file://' + (FIXTURES+'views.tar.gz').to_s
|
|
575
|
+
p.download_type = 'file'
|
|
576
|
+
assert_nil p.local_path
|
|
577
|
+
p.fetch
|
|
578
|
+
refute_nil p.local_path
|
|
579
|
+
patch_path = 'file://' + (FIXTURES+'views-info.diff').to_s
|
|
580
|
+
refute p.has_patches?
|
|
581
|
+
p.add_patch(patch_path, 'test-patch')
|
|
582
|
+
before_patch = (p.local_path+'views.info').open("r").read
|
|
583
|
+
assert p.has_patches?
|
|
584
|
+
refute p.patched?
|
|
585
|
+
p.patch
|
|
586
|
+
assert p.patched?
|
|
587
|
+
assert p.has_patches?
|
|
588
|
+
refute_nil p.local_path
|
|
589
|
+
assert_equal p.patched_location, p.local_path
|
|
590
|
+
assert_match(/__patches/, p.local_path.to_s)
|
|
591
|
+
after_patch = (p.local_path+'views.info').open("r").read
|
|
592
|
+
refute_equal before_patch, after_patch, 'Patch not applied correctly: the files still look equal'
|
|
593
|
+
end
|
|
594
|
+
|
|
595
|
+
end # TestDrupidProjectFetchAndPatch
|
|
596
|
+
|
|
597
|
+
#
|
|
598
|
+
# class TestDrupidProjectCopyMoveDelete < Minitest::Test
|
|
599
|
+
#
|
|
600
|
+
# def setup
|
|
601
|
+
# @temp = File.expand_path(File.join(File.dirname(__FILE__), 'fixtures', 'temp'))
|
|
602
|
+
# FileUtils.mkdir_p @temp
|
|
603
|
+
# @foo_path = File.join(@temp, 'foobar')
|
|
604
|
+
# FileUtils.mkdir_p @foo_path
|
|
605
|
+
# FileUtils.touch File.join(@foo_path, 'foobar.info')
|
|
606
|
+
# @target = File.join(@temp, 'foobar-new')
|
|
607
|
+
# FileUtils.mkdir_p @target
|
|
608
|
+
# @project = Drupid::Project.new('foobar', 7)
|
|
609
|
+
# @project.path = @foo_path
|
|
610
|
+
# end
|
|
611
|
+
#
|
|
612
|
+
# def teardown
|
|
613
|
+
# FileUtils.rmtree @temp
|
|
614
|
+
# end
|
|
615
|
+
#
|
|
616
|
+
# def test_copy
|
|
617
|
+
# p = Drupid::Project.new('views', 7)
|
|
618
|
+
# p.path = File.join(File.dirname(__FILE__), 'fixtures', 'drupal-fake-site', 'sites', 'all', 'modules', 'views')
|
|
619
|
+
# module_path = p.path
|
|
620
|
+
# new_project = p.copy(File.join(@temp, 'views'))
|
|
621
|
+
# assert File.exist?(File.join(@temp, 'views')), 'views directory has not been copied'
|
|
622
|
+
# assert File.exist?(File.join(@temp, 'views', 'views.info')), 'the content of views dir has not been copied'
|
|
623
|
+
# assert_equal module_path, p.path
|
|
624
|
+
# assert_instance_of Drupid::Project, new_project
|
|
625
|
+
# assert_equal p.name, new_project.name
|
|
626
|
+
# assert_equal p.version, new_project.version
|
|
627
|
+
# assert_equal File.join(@temp, 'views'), new_project.path
|
|
628
|
+
# end
|
|
629
|
+
#
|
|
630
|
+
# def test_move
|
|
631
|
+
# assert File.exist?(@foo_path), 'source dir does not exist'
|
|
632
|
+
# assert File.exist?(File.join(@foo_path, 'foobar.info')), 'source file does not exist'
|
|
633
|
+
# assert File.exist?(@target), 'target dir does not exist'
|
|
634
|
+
# new_project = @project.move(@target)
|
|
635
|
+
# assert File.exist?(File.join(@target, 'foobar')), 'directory not copied'
|
|
636
|
+
# assert File.exist?(File.join(@target, 'foobar', 'foobar.info')), 'Dir content not copied'
|
|
637
|
+
# refute File.exist?(@foo_path), 'old dir still exists'
|
|
638
|
+
# end
|
|
639
|
+
#
|
|
640
|
+
# def test_delete
|
|
641
|
+
# assert File.exist?(@foo_path), 'source dir does not exist'
|
|
642
|
+
# assert File.exist?(File.join(@foo_path, 'foobar.info')), 'source file does not exist'
|
|
643
|
+
# assert_equal @foo_path, @project.path
|
|
644
|
+
# @project.delete
|
|
645
|
+
# refute File.exist?(@foo_path), 'source dir does not exist'
|
|
646
|
+
# assert_nil @project.path, 'Path should be nil'
|
|
647
|
+
# end
|
|
648
|
+
#
|
|
649
|
+
# end # TestDrupidProjectCopyMoveDelete
|
|
650
|
+
#
|