drupid 1.1.0 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
#
|