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.
Files changed (333) hide show
  1. checksums.yaml +4 -4
  2. data/.bundle/config +3 -0
  3. data/.gitignore +10 -0
  4. data/.rbenv-version +1 -0
  5. data/Gemfile +3 -0
  6. data/README.md +56 -0
  7. data/Rakefile +26 -0
  8. data/bin/drupid +1 -3
  9. data/drupid.gemspec +31 -0
  10. data/lib/drupid/project_version.rb +276 -0
  11. data/lib/drupid/utils.rb +1 -1
  12. data/lib/drupid/version.rb +3 -275
  13. data/lib/drupid.rb +2 -7
  14. data/test/fixtures/drupal-example.make +89 -0
  15. data/test/fixtures/drupal-fake-site/modules/aggregator/aggregator.info +14 -0
  16. data/test/fixtures/drupal-fake-site/modules/aggregator/aggregator.module +0 -0
  17. data/test/fixtures/drupal-fake-site/modules/aggregator/tests/aggregator_test.info +12 -0
  18. data/test/fixtures/drupal-fake-site/modules/aggregator/tests/aggregator_test.module +0 -0
  19. data/test/fixtures/drupal-fake-site/modules/block/block.info +13 -0
  20. data/test/fixtures/drupal-fake-site/modules/block/block.module +0 -0
  21. data/test/fixtures/drupal-fake-site/modules/block/tests/block_test.info +12 -0
  22. data/test/fixtures/drupal-fake-site/modules/block/tests/block_test.module +0 -0
  23. data/test/fixtures/drupal-fake-site/modules/blog/blog.info +12 -0
  24. data/test/fixtures/drupal-fake-site/modules/blog/blog.module +0 -0
  25. data/test/fixtures/drupal-fake-site/modules/book/book.info +14 -0
  26. data/test/fixtures/drupal-fake-site/modules/book/book.module +0 -0
  27. data/test/fixtures/drupal-fake-site/modules/color/color.info +12 -0
  28. data/test/fixtures/drupal-fake-site/modules/color/color.module +0 -0
  29. data/test/fixtures/drupal-fake-site/modules/comment/comment.info +16 -0
  30. data/test/fixtures/drupal-fake-site/modules/comment/comment.module +0 -0
  31. data/test/fixtures/drupal-fake-site/modules/contact/contact.info +13 -0
  32. data/test/fixtures/drupal-fake-site/modules/contact/contact.module +0 -0
  33. data/test/fixtures/drupal-fake-site/modules/contextual/contextual.info +11 -0
  34. data/test/fixtures/drupal-fake-site/modules/contextual/contextual.module +0 -0
  35. data/test/fixtures/drupal-fake-site/modules/dashboard/dashboard.info +14 -0
  36. data/test/fixtures/drupal-fake-site/modules/dashboard/dashboard.module +0 -0
  37. data/test/fixtures/drupal-fake-site/modules/dblog/dblog.info +12 -0
  38. data/test/fixtures/drupal-fake-site/modules/dblog/dblog.module +0 -0
  39. data/test/fixtures/drupal-fake-site/modules/field/field.info +17 -0
  40. data/test/fixtures/drupal-fake-site/modules/field/field.module +0 -0
  41. data/test/fixtures/drupal-fake-site/modules/field/modules/field_sql_storage/field_sql_storage.info +14 -0
  42. data/test/fixtures/drupal-fake-site/modules/field/modules/field_sql_storage/field_sql_storage.module +0 -0
  43. data/test/fixtures/drupal-fake-site/modules/field/modules/list/list.info +14 -0
  44. data/test/fixtures/drupal-fake-site/modules/field/modules/list/list.module +0 -0
  45. data/test/fixtures/drupal-fake-site/modules/field/modules/list/tests/list_test.info +12 -0
  46. data/test/fixtures/drupal-fake-site/modules/field/modules/list/tests/list_test.module +0 -0
  47. data/test/fixtures/drupal-fake-site/modules/field/modules/number/number.info +13 -0
  48. data/test/fixtures/drupal-fake-site/modules/field/modules/number/number.module +0 -0
  49. data/test/fixtures/drupal-fake-site/modules/field/modules/options/options.info +13 -0
  50. data/test/fixtures/drupal-fake-site/modules/field/modules/options/options.module +0 -0
  51. data/test/fixtures/drupal-fake-site/modules/field/modules/text/text.info +14 -0
  52. data/test/fixtures/drupal-fake-site/modules/field/modules/text/text.module +0 -0
  53. data/test/fixtures/drupal-fake-site/modules/field/tests/field_test.info +13 -0
  54. data/test/fixtures/drupal-fake-site/modules/field/tests/field_test.module +0 -0
  55. data/test/fixtures/drupal-fake-site/modules/field_ui/field_ui.info +13 -0
  56. data/test/fixtures/drupal-fake-site/modules/field_ui/field_ui.module +0 -0
  57. data/test/fixtures/drupal-fake-site/modules/file/file.info +13 -0
  58. data/test/fixtures/drupal-fake-site/modules/file/file.module +0 -0
  59. data/test/fixtures/drupal-fake-site/modules/file/tests/file_module_test.info +12 -0
  60. data/test/fixtures/drupal-fake-site/modules/file/tests/file_module_test.module +0 -0
  61. data/test/fixtures/drupal-fake-site/modules/filter/filter.info +14 -0
  62. data/test/fixtures/drupal-fake-site/modules/filter/filter.module +0 -0
  63. data/test/fixtures/drupal-fake-site/modules/forum/forum.info +16 -0
  64. data/test/fixtures/drupal-fake-site/modules/forum/forum.module +0 -0
  65. data/test/fixtures/drupal-fake-site/modules/help/help.info +12 -0
  66. data/test/fixtures/drupal-fake-site/modules/help/help.module +0 -0
  67. data/test/fixtures/drupal-fake-site/modules/image/image.info +14 -0
  68. data/test/fixtures/drupal-fake-site/modules/image/image.module +0 -0
  69. data/test/fixtures/drupal-fake-site/modules/image/tests/image_module_test.info +13 -0
  70. data/test/fixtures/drupal-fake-site/modules/image/tests/image_module_test.module +0 -0
  71. data/test/fixtures/drupal-fake-site/modules/locale/locale.info +13 -0
  72. data/test/fixtures/drupal-fake-site/modules/locale/locale.module +0 -0
  73. data/test/fixtures/drupal-fake-site/modules/locale/tests/locale_test.info +12 -0
  74. data/test/fixtures/drupal-fake-site/modules/locale/tests/locale_test.module +0 -0
  75. data/test/fixtures/drupal-fake-site/modules/menu/menu.info +13 -0
  76. data/test/fixtures/drupal-fake-site/modules/menu/menu.module +0 -0
  77. data/test/fixtures/drupal-fake-site/modules/node/node.info +16 -0
  78. data/test/fixtures/drupal-fake-site/modules/node/node.module +0 -0
  79. data/test/fixtures/drupal-fake-site/modules/node/tests/node_access_test.info +12 -0
  80. data/test/fixtures/drupal-fake-site/modules/node/tests/node_access_test.module +0 -0
  81. data/test/fixtures/drupal-fake-site/modules/node/tests/node_test.info +12 -0
  82. data/test/fixtures/drupal-fake-site/modules/node/tests/node_test.module +0 -0
  83. data/test/fixtures/drupal-fake-site/modules/node/tests/node_test_exception.info +12 -0
  84. data/test/fixtures/drupal-fake-site/modules/node/tests/node_test_exception.module +0 -0
  85. data/test/fixtures/drupal-fake-site/modules/openid/openid.info +12 -0
  86. data/test/fixtures/drupal-fake-site/modules/openid/openid.module +0 -0
  87. data/test/fixtures/drupal-fake-site/modules/openid/tests/openid_test.info +13 -0
  88. data/test/fixtures/drupal-fake-site/modules/openid/tests/openid_test.module +0 -0
  89. data/test/fixtures/drupal-fake-site/modules/overlay/overlay.info +11 -0
  90. data/test/fixtures/drupal-fake-site/modules/overlay/overlay.module +0 -0
  91. data/test/fixtures/drupal-fake-site/modules/path/path.info +13 -0
  92. data/test/fixtures/drupal-fake-site/modules/path/path.module +0 -0
  93. data/test/fixtures/drupal-fake-site/modules/php/php.info +12 -0
  94. data/test/fixtures/drupal-fake-site/modules/php/php.module +0 -0
  95. data/test/fixtures/drupal-fake-site/modules/poll/poll.info +13 -0
  96. data/test/fixtures/drupal-fake-site/modules/poll/poll.module +0 -0
  97. data/test/fixtures/drupal-fake-site/modules/profile/profile.info +18 -0
  98. data/test/fixtures/drupal-fake-site/modules/profile/profile.module +0 -0
  99. data/test/fixtures/drupal-fake-site/modules/rdf/rdf.info +12 -0
  100. data/test/fixtures/drupal-fake-site/modules/rdf/rdf.module +0 -0
  101. data/test/fixtures/drupal-fake-site/modules/rdf/tests/rdf_test.info +12 -0
  102. data/test/fixtures/drupal-fake-site/modules/rdf/tests/rdf_test.module +0 -0
  103. data/test/fixtures/drupal-fake-site/modules/search/search.info +15 -0
  104. data/test/fixtures/drupal-fake-site/modules/search/search.module +0 -0
  105. data/test/fixtures/drupal-fake-site/modules/search/tests/search_embedded_form.info +12 -0
  106. data/test/fixtures/drupal-fake-site/modules/search/tests/search_embedded_form.module +0 -0
  107. data/test/fixtures/drupal-fake-site/modules/search/tests/search_extra_type.info +12 -0
  108. data/test/fixtures/drupal-fake-site/modules/search/tests/search_extra_type.module +0 -0
  109. data/test/fixtures/drupal-fake-site/modules/shortcut/shortcut.info +13 -0
  110. data/test/fixtures/drupal-fake-site/modules/shortcut/shortcut.module +0 -0
  111. data/test/fixtures/drupal-fake-site/modules/simpletest/simpletest.info +56 -0
  112. data/test/fixtures/drupal-fake-site/modules/simpletest/simpletest.module +0 -0
  113. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/actions_loop_test.info +12 -0
  114. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/actions_loop_test.module +0 -0
  115. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/ajax_forms_test.info +12 -0
  116. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/ajax_forms_test.module +0 -0
  117. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/ajax_test.info +12 -0
  118. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/ajax_test.module +0 -0
  119. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/batch_test.info +12 -0
  120. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/batch_test.module +0 -0
  121. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/common_test.info +14 -0
  122. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/common_test.module +0 -0
  123. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/common_test_cron_helper.info +12 -0
  124. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/common_test_cron_helper.module +0 -0
  125. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/database_test.info +12 -0
  126. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/database_test.module +0 -0
  127. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info +12 -0
  128. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.module +0 -0
  129. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info +12 -0
  130. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.module +0 -0
  131. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/entity_cache_test.info +13 -0
  132. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/entity_cache_test.module +0 -0
  133. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/entity_cache_test_dependency.info +12 -0
  134. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/entity_cache_test_dependency.module +0 -0
  135. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/entity_crud_hook_test.info +12 -0
  136. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/entity_crud_hook_test.module +0 -0
  137. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/error_test.info +12 -0
  138. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/error_test.module +0 -0
  139. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/file_test.info +13 -0
  140. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/file_test.module +0 -0
  141. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/filter_test.info +12 -0
  142. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/filter_test.module +0 -0
  143. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/form_test.info +12 -0
  144. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/form_test.module +0 -0
  145. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/image_test.info +12 -0
  146. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/image_test.module +0 -0
  147. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/menu_test.info +12 -0
  148. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/menu_test.module +0 -0
  149. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/module_test.info +12 -0
  150. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/module_test.module +0 -0
  151. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/requirements1_test.info +12 -0
  152. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/requirements1_test.module +0 -0
  153. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/requirements2_test.info +14 -0
  154. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/requirements2_test.module +0 -0
  155. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/session_test.info +12 -0
  156. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/session_test.module +0 -0
  157. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_dependencies_test.info +13 -0
  158. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_dependencies_test.module +0 -0
  159. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.info +13 -0
  160. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.module +0 -0
  161. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_incompatible_core_version_test.info +12 -0
  162. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_incompatible_core_version_test.module +0 -0
  163. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.info +14 -0
  164. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.module +0 -0
  165. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_incompatible_module_version_test.info +12 -0
  166. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_incompatible_module_version_test.module +0 -0
  167. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_test.info +13 -0
  168. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/system_test.module +0 -0
  169. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/taxonomy_test.info +13 -0
  170. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/taxonomy_test.module +0 -0
  171. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/theme_test.info +12 -0
  172. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/theme_test.module +0 -0
  173. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/update_script_test.info +12 -0
  174. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/update_script_test.module +0 -0
  175. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/update_test_1.info +12 -0
  176. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/update_test_1.module +0 -0
  177. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/update_test_2.info +12 -0
  178. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/update_test_2.module +0 -0
  179. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/update_test_3.info +12 -0
  180. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/update_test_3.module +0 -0
  181. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/url_alter_test.info +12 -0
  182. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/url_alter_test.module +0 -0
  183. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/xmlrpc_test.info +12 -0
  184. data/test/fixtures/drupal-fake-site/modules/simpletest/tests/xmlrpc_test.module +0 -0
  185. data/test/fixtures/drupal-fake-site/modules/statistics/statistics.info +13 -0
  186. data/test/fixtures/drupal-fake-site/modules/statistics/statistics.module +0 -0
  187. data/test/fixtures/drupal-fake-site/modules/syslog/syslog.info +12 -0
  188. data/test/fixtures/drupal-fake-site/modules/syslog/syslog.module +0 -0
  189. data/test/fixtures/drupal-fake-site/modules/system/system.info +19 -0
  190. data/test/fixtures/drupal-fake-site/modules/system/system.module +0 -0
  191. data/test/fixtures/drupal-fake-site/modules/taxonomy/taxonomy.info +15 -0
  192. data/test/fixtures/drupal-fake-site/modules/taxonomy/taxonomy.module +0 -0
  193. data/test/fixtures/drupal-fake-site/modules/toolbar/toolbar.info +11 -0
  194. data/test/fixtures/drupal-fake-site/modules/toolbar/toolbar.module +0 -0
  195. data/test/fixtures/drupal-fake-site/modules/tracker/tracker.info +13 -0
  196. data/test/fixtures/drupal-fake-site/modules/tracker/tracker.module +0 -0
  197. data/test/fixtures/drupal-fake-site/modules/translation/tests/translation_test.info +12 -0
  198. data/test/fixtures/drupal-fake-site/modules/translation/tests/translation_test.module +0 -0
  199. data/test/fixtures/drupal-fake-site/modules/translation/translation.info +13 -0
  200. data/test/fixtures/drupal-fake-site/modules/translation/translation.module +0 -0
  201. data/test/fixtures/drupal-fake-site/modules/trigger/tests/trigger_test.info +11 -0
  202. data/test/fixtures/drupal-fake-site/modules/trigger/tests/trigger_test.module +0 -0
  203. data/test/fixtures/drupal-fake-site/modules/trigger/trigger.info +13 -0
  204. data/test/fixtures/drupal-fake-site/modules/trigger/trigger.module +0 -0
  205. data/test/fixtures/drupal-fake-site/modules/update/tests/aaa_update_test.info +11 -0
  206. data/test/fixtures/drupal-fake-site/modules/update/tests/aaa_update_test.module +0 -0
  207. data/test/fixtures/drupal-fake-site/modules/update/tests/bbb_update_test.info +11 -0
  208. data/test/fixtures/drupal-fake-site/modules/update/tests/bbb_update_test.module +0 -0
  209. data/test/fixtures/drupal-fake-site/modules/update/tests/ccc_update_test.info +11 -0
  210. data/test/fixtures/drupal-fake-site/modules/update/tests/ccc_update_test.module +0 -0
  211. data/test/fixtures/drupal-fake-site/modules/update/tests/update_test.info +12 -0
  212. data/test/fixtures/drupal-fake-site/modules/update/tests/update_test.module +0 -0
  213. data/test/fixtures/drupal-fake-site/modules/update/update.info +13 -0
  214. data/test/fixtures/drupal-fake-site/modules/update/update.module +0 -0
  215. data/test/fixtures/drupal-fake-site/modules/user/tests/user_form_test.info +12 -0
  216. data/test/fixtures/drupal-fake-site/modules/user/tests/user_form_test.module +0 -0
  217. data/test/fixtures/drupal-fake-site/modules/user/user.info +16 -0
  218. data/test/fixtures/drupal-fake-site/modules/user/user.module +0 -0
  219. data/test/fixtures/drupal-fake-site/profiles/minimal/minimal.info +13 -0
  220. data/test/fixtures/drupal-fake-site/profiles/minimal/minimal.profile +0 -0
  221. data/test/fixtures/drupal-fake-site/profiles/openpublic/modules/custom/combineblocks/combineblocks.info +11 -0
  222. data/test/fixtures/drupal-fake-site/profiles/openpublic/modules/custom/openpublic_api/openpublic_api.info +12 -0
  223. data/test/fixtures/drupal-fake-site/profiles/openpublic/modules/custom/openpublic_splash/openpublic_splash.info +16 -0
  224. data/test/fixtures/drupal-fake-site/profiles/openpublic/modules/custom/phase2_blog/phase2_blog.info +32 -0
  225. data/test/fixtures/drupal-fake-site/profiles/openpublic/modules/custom/phase2_document/phase2_document.info +38 -0
  226. data/test/fixtures/drupal-fake-site/profiles/openpublic/modules/custom/phase2_profile/phase2_profile.info +45 -0
  227. data/test/fixtures/drupal-fake-site/profiles/openpublic/openpublic.info +137 -0
  228. data/test/fixtures/drupal-fake-site/profiles/openpublic/openpublic.make +149 -0
  229. data/test/fixtures/drupal-fake-site/profiles/openpublic/openpublic.profile +0 -0
  230. data/test/fixtures/drupal-fake-site/profiles/openpublic/themes/openomega/openomega.info +434 -0
  231. data/test/fixtures/drupal-fake-site/profiles/openpublic/themes/openpublic_theme/.project +11 -0
  232. data/test/fixtures/drupal-fake-site/profiles/openpublic/themes/openpublic_theme/openpublic_theme.info +51 -0
  233. data/test/fixtures/drupal-fake-site/profiles/openpublic/themes/spartan/spartan.info +434 -0
  234. data/test/fixtures/drupal-fake-site/profiles/standard/standard.info +32 -0
  235. data/test/fixtures/drupal-fake-site/profiles/standard/standard.profile +0 -0
  236. data/test/fixtures/drupal-fake-site/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info +12 -0
  237. data/test/fixtures/drupal-fake-site/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info +15 -0
  238. data/test/fixtures/drupal-fake-site/profiles/testing/testing.info +11 -0
  239. data/test/fixtures/drupal-fake-site/profiles/testing/testing.profile +0 -0
  240. data/test/fixtures/drupal-fake-site/sites/all/modules/entity/entity.info +31 -0
  241. data/test/fixtures/drupal-fake-site/sites/all/modules/entity/entity.module +0 -0
  242. data/test/fixtures/drupal-fake-site/sites/all/modules/entity/entity_token.info +13 -0
  243. data/test/fixtures/drupal-fake-site/sites/all/modules/entity/entity_token.module +0 -0
  244. data/test/fixtures/drupal-fake-site/sites/all/modules/entity/tests/entity_feature.info +14 -0
  245. data/test/fixtures/drupal-fake-site/sites/all/modules/entity/tests/entity_feature.module +0 -0
  246. data/test/fixtures/drupal-fake-site/sites/all/modules/entity/tests/entity_test.info +15 -0
  247. data/test/fixtures/drupal-fake-site/sites/all/modules/entity/tests/entity_test.module +0 -0
  248. data/test/fixtures/drupal-fake-site/sites/all/modules/featured_news_feature/featured_news.info +23 -0
  249. data/test/fixtures/drupal-fake-site/sites/all/modules/featured_news_feature/featured_news.module +0 -0
  250. data/test/fixtures/drupal-fake-site/sites/all/modules/google_analytics/googleanalytics.info +13 -0
  251. data/test/fixtures/drupal-fake-site/sites/all/modules/google_analytics/googleanalytics.module +0 -0
  252. data/test/fixtures/drupal-fake-site/sites/all/modules/media/media.info +26 -0
  253. data/test/fixtures/drupal-fake-site/sites/all/modules/media/media.module +0 -0
  254. data/test/fixtures/drupal-fake-site/sites/all/modules/migrate/migrate.info +47 -0
  255. data/test/fixtures/drupal-fake-site/sites/all/modules/migrate/migrate.module +0 -0
  256. data/test/fixtures/drupal-fake-site/sites/all/modules/migrate/migrate_example/migrate_example.info +27 -0
  257. data/test/fixtures/drupal-fake-site/sites/all/modules/migrate/migrate_example/migrate_example.module +0 -0
  258. data/test/fixtures/drupal-fake-site/sites/all/modules/migrate/migrate_example_baseball/migrate_example_baseball.info +32 -0
  259. data/test/fixtures/drupal-fake-site/sites/all/modules/migrate/migrate_example_baseball/migrate_example_baseball.module +0 -0
  260. data/test/fixtures/drupal-fake-site/sites/all/modules/migrate/migrate_ui/migrate_ui.info +15 -0
  261. data/test/fixtures/drupal-fake-site/sites/all/modules/migrate/migrate_ui/migrate_ui.module +0 -0
  262. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/bulk_export/bulk_export.info +12 -0
  263. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/bulk_export/bulk_export.module +0 -0
  264. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools.info +14 -0
  265. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools.module +0 -0
  266. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools_access_ruleset/ctools_access_ruleset.info +12 -0
  267. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools_access_ruleset/ctools_access_ruleset.module +0 -0
  268. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools_ajax_sample/ctools_ajax_sample.info +12 -0
  269. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools_ajax_sample/ctools_ajax_sample.module +0 -0
  270. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools_custom_content/ctools_custom_content.info +12 -0
  271. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools_custom_content/ctools_custom_content.module +0 -0
  272. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools_plugin_example/ctools_plugin_example.info +15 -0
  273. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/ctools_plugin_example/ctools_plugin_example.module +0 -0
  274. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/page_manager/page_manager.info +12 -0
  275. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/page_manager/page_manager.module +0 -0
  276. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/stylizer/stylizer.info +13 -0
  277. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/stylizer/stylizer.module +0 -0
  278. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/tests/ctools_plugin_test.info +15 -0
  279. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/tests/ctools_plugin_test.module +0 -0
  280. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/views_content/views_content.info +17 -0
  281. data/test/fixtures/drupal-fake-site/sites/all/modules/subdir/ctools/views_content/views_content.module +0 -0
  282. data/test/fixtures/drupal-fake-site/sites/all/modules/views/tests/views_test.info +13 -0
  283. data/test/fixtures/drupal-fake-site/sites/all/modules/views/tests/views_test.module +0 -0
  284. data/test/fixtures/drupal-fake-site/sites/all/modules/views/views.info +297 -0
  285. data/test/fixtures/drupal-fake-site/sites/all/modules/views/views.module +0 -0
  286. data/test/fixtures/drupal-fake-site/sites/all/modules/views/views_ui.info +15 -0
  287. data/test/fixtures/drupal-fake-site/sites/all/modules/views/views_ui.module +0 -0
  288. data/test/fixtures/drupal-fake-site/sites/all/modules/wysiwyg/tests/wysiwyg_test.info +14 -0
  289. data/test/fixtures/drupal-fake-site/sites/all/modules/wysiwyg/tests/wysiwyg_test.module +0 -0
  290. data/test/fixtures/drupal-fake-site/sites/all/modules/wysiwyg/wysiwyg.info +17 -0
  291. data/test/fixtures/drupal-fake-site/sites/all/modules/wysiwyg/wysiwyg.module +0 -0
  292. data/test/fixtures/drupal-fake-site/sites/all/themes/fusion/fusion_core/fusion_core.info +102 -0
  293. data/test/fixtures/drupal-fake-site/sites/all/themes/fusion/fusion_starter/fusion_starter.info +190 -0
  294. data/test/fixtures/drupal-fake-site/sites/all/themes/fusion/fusion_starter_lite/fusion_starter_lite.info +170 -0
  295. data/test/fixtures/drupal-fake-site/sites/all/themes/subdir/mothership/.gitignore +3 -0
  296. data/test/fixtures/drupal-fake-site/sites/all/themes/subdir/mothership/NEWTHEME/NEWTHEME.info +124 -0
  297. data/test/fixtures/drupal-fake-site/sites/all/themes/subdir/mothership/mothership/mothership.info +126 -0
  298. data/test/fixtures/drupal-fake-site/sites/all/themes/subdir/mothership/mothershipstark/mothershipstark.info +15 -0
  299. data/test/fixtures/drupal-fake-site/sites/all/themes/subdir/mothership/tema/tema.info +58 -0
  300. data/test/fixtures/drupal-fake-site/sites/all/themes/tao/tao.info +49 -0
  301. data/test/fixtures/drupal-fake-site/sites/default/settings.php +0 -0
  302. data/test/fixtures/drupal-fake-site/sites/www.bar.org/settings.php +0 -0
  303. data/test/fixtures/drupal-fake-site/sites/www.foo.org/settings.php +0 -0
  304. data/test/fixtures/drupal-fake-site/themes/bartik/bartik.info +41 -0
  305. data/test/fixtures/drupal-fake-site/themes/garland/garland.info +14 -0
  306. data/test/fixtures/drupal-fake-site/themes/seven/seven.info +20 -0
  307. data/test/fixtures/drupal-fake-site/themes/stark/stark.info +12 -0
  308. data/test/fixtures/drupal-fake-site/themes/tests/block_test_theme/block_test_theme.info +20 -0
  309. data/test/fixtures/drupal-fake-site/themes/tests/test_theme/test_theme.info +22 -0
  310. data/test/fixtures/drupal-fake-site/themes/tests/update_test_basetheme/update_test_basetheme.info +10 -0
  311. data/test/fixtures/drupal-fake-site/themes/tests/update_test_subtheme/update_test_subtheme.info +11 -0
  312. data/test/fixtures/fake_library.tar.gz +0 -0
  313. data/test/fixtures/rootcandy/rootcandy.info +52 -0
  314. data/test/fixtures/views-info.diff +11 -0
  315. data/test/fixtures/views.tar.gz +0 -0
  316. data/test/helper.rb +7 -0
  317. data/test/makefiles/test1.make +20 -0
  318. data/test/makefiles/test2.make +14 -0
  319. data/test/makefiles/test3.make +8 -0
  320. data/test/test_drupid_component.rb +120 -0
  321. data/test/test_drupid_download_strategy.rb +112 -0
  322. data/test/test_drupid_drush.rb +32 -0
  323. data/test/test_drupid_extend_pathname.rb +33 -0
  324. data/test/test_drupid_library.rb +62 -0
  325. data/test/test_drupid_makefile.rb +181 -0
  326. data/test/test_drupid_patch.rb +53 -0
  327. data/test/test_drupid_platform.rb +207 -0
  328. data/test/test_drupid_platform_project.rb +206 -0
  329. data/test/test_drupid_project.rb +650 -0
  330. data/test/test_drupid_updater.rb +76 -0
  331. data/test/test_drupid_version.rb +295 -0
  332. data/test/test_pathname.rb +67 -0
  333. 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
+ #