PageRenderTime 53ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/makeTest.php

https://github.com/jbrauer/drush
PHP | 635 lines | 504 code | 63 blank | 68 comment | 13 complexity | b9d790c1ec06d5f32c5537e10b717cc6 MD5 | raw file
  1. <?php
  2. /**
  3. * Make makefile tests.
  4. * @group make
  5. * @group slow
  6. */
  7. class makeMakefileCase extends Drush_CommandTestCase {
  8. /**
  9. * Path to test make files.
  10. */
  11. protected $makefile_path;
  12. /**
  13. * Initialize $makefile_path.
  14. */
  15. function __construct() {
  16. $this->makefile_path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'makefiles';
  17. }
  18. /**
  19. * Run a given makefile test.
  20. *
  21. * @param $test
  22. * The test makefile to run, as defined by $this->getMakefile();
  23. */
  24. private function runMakefileTest($test) {
  25. $default_options = array(
  26. 'test' => NULL,
  27. 'md5' => 'print',
  28. );
  29. $config = $this->getMakefile($test);
  30. $options = array_merge($config['options'], $default_options);
  31. $makefile = $this->makefile_path . DIRECTORY_SEPARATOR . $config['makefile'];
  32. $return = !empty($config['fail']) ? self::EXIT_ERROR : self::EXIT_SUCCESS;
  33. $this->drush('make', array($makefile), $options, NULL, NULL, $return);
  34. // Check the log for the build hash if this test should pass.
  35. if (empty($config['fail'])) {
  36. $output = $this->getOutput();
  37. $this->assertContains($config['md5'], $output, $config['name'] . ' - build md5 matches expected value: ' . $config['md5']);
  38. }
  39. }
  40. function testMakeGet() {
  41. $this->runMakefileTest('get');
  42. }
  43. function testMakeGit() {
  44. $this->runMakefileTest('git');
  45. }
  46. function testMakeGitSimple() {
  47. $this->runMakefileTest('git-simple');
  48. }
  49. function testMakeNoPatchTxt() {
  50. $this->runMakefileTest('no-patch-txt');
  51. }
  52. /**
  53. * Test no-core and working-copy in options array.
  54. */
  55. function testMakeOptionsArray() {
  56. // Use the goptions-array.make file.
  57. $config = $this->getMakefile('options-array');
  58. $makefile_path = dirname(__FILE__) . '/makefiles';
  59. $makefile = $makefile_path . '/' . $config['makefile'];
  60. $install_directory = UNISH_SANDBOX . '/options-array';
  61. $this->drush('make', array($makefile, $install_directory));
  62. // Test cck_signup .git/HEAD file.
  63. $this->assertFileExists($install_directory . '/sites/all/modules/cck_signup/.git/HEAD');
  64. $contents = file_get_contents($install_directory . '/sites/all/modules/cck_signup/.git/HEAD');
  65. $this->assertContains('2fe932c', $contents);
  66. // Test context_admin .git/HEAD file.
  67. $this->assertFileExists($install_directory . '/sites/all/modules/context_admin/.git/HEAD');
  68. $contents = file_get_contents($install_directory . '/sites/all/modules/context_admin/.git/HEAD');
  69. $this->assertContains('eb9f05e', $contents);
  70. }
  71. /**
  72. * Test per project working-copy option.
  73. */
  74. function testMakeOptionsProject() {
  75. // Use the options-project.make file.
  76. $config = $this->getMakefile('options-project');
  77. $makefile_path = dirname(__FILE__) . '/makefiles';
  78. $options = array('no-core' => NULL);
  79. $makefile = $makefile_path . '/' . $config['makefile'];
  80. $install_directory = UNISH_SANDBOX . '/options-project';
  81. $this->drush('make', array($makefile, $install_directory), $options);
  82. // Test context_admin .git/HEAD file.
  83. $this->assertFileExists($install_directory . '/sites/all/modules/context_admin/.git/HEAD');
  84. $contents = file_get_contents($install_directory . '/sites/all/modules/context_admin/.git/HEAD');
  85. $this->assertContains('eb9f05e', $contents);
  86. // Test cck_signup .git/HEAD file does not exist.
  87. $this->assertFileNotExists($install_directory . '/sites/all/modules/cck_signup/.git/HEAD');
  88. // Test caption_filter .git/HEAD file.
  89. $this->assertFileExists($install_directory . '/sites/all/modules/contrib/caption_filter/.git/HEAD');
  90. $contents = file_get_contents($install_directory . '/sites/all/modules/contrib//caption_filter/.git/HEAD');
  91. $this->assertContains('c9794cf', $contents);
  92. }
  93. function testMakePatch() {
  94. $this->runMakefileTest('patch');
  95. }
  96. function testMakeInclude() {
  97. $this->runMakefileTest('include');
  98. }
  99. function testMakeRecursion() {
  100. $this->runMakefileTest('recursion');
  101. }
  102. function testMakeRecursionOverride() {
  103. $this->runMakefileTest('recursion-override');
  104. }
  105. function testMakeSvn() {
  106. // Silently skip svn test if svn is not installed.
  107. exec('which svn', $output, $whichSvnErrorCode);
  108. if (!$whichSvnErrorCode) {
  109. $this->runMakefileTest('svn');
  110. }
  111. else {
  112. $this->markTestSkipped('svn command not available.');
  113. }
  114. }
  115. function testMakeBzr() {
  116. // Silently skip bzr test if bzr is not installed.
  117. exec('which bzr', $output, $whichBzrErrorCode);
  118. if (!$whichBzrErrorCode) {
  119. $this->runMakefileTest('bzr');
  120. }
  121. else {
  122. $this->markTestSkipped('bzr command is not available.');
  123. }
  124. }
  125. /**
  126. * Translations can change arbitrarily, so these test for the existence of .po
  127. * files, rather than trying to match a build hash.
  128. */
  129. function testMakeTranslations() {
  130. $config = $this->getMakefile('translations');
  131. $makefile = $this->makefile_path . DIRECTORY_SEPARATOR . $config['makefile'];
  132. $install_directory = UNISH_SANDBOX . '/translations';
  133. $this->drush('make', array($makefile, $install_directory), $config['options']);
  134. $po_files = array(
  135. 'sites/all/modules/token/translations/pt-br.po',
  136. 'sites/all/modules/token/translations/es.po',
  137. );
  138. foreach ($po_files as $po_file) {
  139. $this->assertFileExists($install_directory . '/' . $po_file);
  140. }
  141. }
  142. /**
  143. * Translations can change arbitrarily, so these test for the existence of .po
  144. * files, rather than trying to match a build hash.
  145. */
  146. function testMakeTranslationsInside() {
  147. $config = $this->getMakefile('translations-inside');
  148. $makefile = $this->makefile_path . '/' . $config['makefile'];
  149. $install_directory = UNISH_SANDBOX . '/translations-inside';
  150. $this->drush('make', array($makefile, $install_directory));
  151. $po_files = array(
  152. 'profiles/default/translations/pt-br.po',
  153. 'profiles/default/translations/es.po',
  154. 'sites/all/modules/token/translations/pt-br.po',
  155. 'sites/all/modules/token/translations/es.po',
  156. 'modules/system/translations/pt-br.po',
  157. 'modules/system/translations/es.po',
  158. );
  159. foreach ($po_files as $po_file) {
  160. $this->assertFileExists($install_directory . '/' . $po_file);
  161. }
  162. }
  163. /**
  164. * Translations can change arbitrarily, so these test for the existence of .po
  165. * files, rather than trying to match a build hash.
  166. */
  167. function testMakeTranslationsInside7() {
  168. $config = $this->getMakefile('translations-inside7');
  169. $makefile = $this->makefile_path . DIRECTORY_SEPARATOR . $config['makefile'];
  170. $install_directory = UNISH_SANDBOX . '/translations-inside7';
  171. $this->drush('make', array($makefile, $install_directory));
  172. $po_files = array(
  173. 'profiles/minimal/translations/pt-br.po',
  174. 'profiles/minimal/translations/es.po',
  175. 'profiles/testing/translations/pt-br.po',
  176. 'profiles/testing/translations/es.po',
  177. 'profiles/standard/translations/pt-br.po',
  178. 'profiles/standard/translations/es.po',
  179. 'sites/all/modules/token/translations/pt-br.po',
  180. 'sites/all/modules/token/translations/es.po',
  181. 'modules/system/translations/pt-br.po',
  182. 'modules/system/translations/es.po',
  183. );
  184. foreach ($po_files as $po_file) {
  185. $this->assertFileExists($install_directory . '/' . $po_file);
  186. }
  187. }
  188. function testMakeContribDestination() {
  189. $this->runMakefileTest('contrib-destination');
  190. }
  191. function testMakeDefaults() {
  192. $this->runMakefileTest('defaults');
  193. }
  194. function testMakeFile() {
  195. $this->runMakefileTest('file');
  196. }
  197. function testMakeBZ2() {
  198. // Silently skip bz2 test if bz2 is not installed.
  199. exec('which bzip2', $output, $whichBzip2ErrorCode);
  200. if (!$whichBzip2ErrorCode) {
  201. $this->runMakefileTest('bz2');
  202. }
  203. else {
  204. $this->markTestSkipped('bzip2 command not available.');
  205. }
  206. }
  207. function testMakeBZ2SingleFile() {
  208. // Silently skip bz2 test if bz2 is not installed.
  209. exec('which bzip2', $output, $whichBzip2ErrorCode);
  210. if (!$whichBzip2ErrorCode) {
  211. $this->runMakefileTest('bz2-singlefile');
  212. }
  213. else {
  214. $this->markTestSkipped('bzip2 command not available.');
  215. }
  216. }
  217. function testMakeGZip() {
  218. // Silently skip gzip test if gzip is not installed.
  219. exec('which gzip', $output, $whichGzipErrorCode);
  220. if (!$whichGzipErrorCode) {
  221. $this->runMakefileTest('gzip');
  222. }
  223. else {
  224. $this->markTestSkipped('gzip command not available.');
  225. }
  226. }
  227. function testMakeSubtree() {
  228. $config = $this->getMakefile('subtree');
  229. $makefile = $this->makefile_path . DIRECTORY_SEPARATOR . $config['makefile'];
  230. $install_directory = UNISH_SANDBOX . DIRECTORY_SEPARATOR . 'subtree';
  231. $this->drush('make', array('--no-core', $makefile, $install_directory));
  232. $files['nivo-slider'] = array(
  233. 'exists' => array(
  234. 'jquery.nivo.slider.js',
  235. 'jquery.nivo.slider.pack.js',
  236. 'license.txt',
  237. 'nivo-slider.css',
  238. 'README',
  239. ),
  240. 'notexists' => array(
  241. '__MACOSX',
  242. 'nivo-slider',
  243. ),
  244. );
  245. $files['fullcalendar'] = array(
  246. 'exists' => array(
  247. 'fullcalendar.css',
  248. 'fullcalendar.js',
  249. 'fullcalendar.min.js',
  250. 'fullcalendar.print.css',
  251. 'gcal.js',
  252. ),
  253. 'notexists' => array(
  254. 'changelog.txt',
  255. 'demos',
  256. 'fullcalendar',
  257. 'GPL-LICENSE.txt',
  258. 'jquery',
  259. 'MIT-LICENSE.txt',
  260. ),
  261. );
  262. $basedir = $install_directory . DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . 'all' . DIRECTORY_SEPARATOR . 'libraries';
  263. foreach ($files as $lib => $details) {
  264. $dir = $basedir . DIRECTORY_SEPARATOR . $lib;
  265. if (!empty($details['exists'])) {
  266. foreach ($details['exists'] as $file) {
  267. $this->assertFileExists($dir . DIRECTORY_SEPARATOR . $file);
  268. }
  269. }
  270. if (!empty($details['notexists'])) {
  271. foreach ($details['notexists'] as $file) {
  272. $this->assertFileNotExists($dir . DIRECTORY_SEPARATOR . $file);
  273. }
  274. }
  275. }
  276. }
  277. function testMakeMd5Succeed() {
  278. $this->runMakefileTest('md5-succeed');
  279. }
  280. function testMakeMd5Fail() {
  281. $this->runMakefileTest('md5-fail');
  282. }
  283. function testMakeIgnoreChecksums() {
  284. $this->runMakefileTest('ignore-checksums');
  285. }
  286. /**
  287. * Test .info file writing and the use of a git reference cache for
  288. * git downloads.
  289. */
  290. function testInfoFileWritingGit() {
  291. // Use the git-simple.make file.
  292. $config = $this->getMakefile('git-simple');
  293. $options = array('no-core' => NULL);
  294. $makefile = $this->makefile_path . DIRECTORY_SEPARATOR . $config['makefile'];
  295. $this->drush('make', array($makefile, UNISH_SANDBOX . '/test-build'), $options);
  296. // Test cck_signup.info file.
  297. $this->assertFileExists(UNISH_SANDBOX . '/test-build/sites/all/modules/cck_signup/cck_signup.info');
  298. $contents = file_get_contents(UNISH_SANDBOX . '/test-build/sites/all/modules/cck_signup/cck_signup.info');
  299. $this->assertContains('; Information added by drush on ' . date('Y-m-d'), $contents);
  300. $this->assertContains('version = "2fe932c"', $contents);
  301. $this->assertContains('project = "cck_signup"', $contents);
  302. // Verify that a reference cache was created.
  303. $cache_dir = UNISH_CACHE . DIRECTORY_SEPARATOR . 'cache';
  304. $this->assertFileExists($cache_dir . '/git/cck_signup-' . md5('http://git.drupal.org/project/cck_signup.git'));
  305. // Test context_admin.info file.
  306. $this->assertFileExists(UNISH_SANDBOX . '/test-build/sites/all/modules/context_admin/context_admin.info');
  307. $contents = file_get_contents(UNISH_SANDBOX . '/test-build/sites/all/modules/context_admin/context_admin.info');
  308. $this->assertContains('; Information added by drush on ' . date('Y-m-d'), $contents);
  309. $this->assertContains('version = "eb9f05e"', $contents);
  310. $this->assertContains('project = "context_admin"', $contents);
  311. // Verify git reference cache exists.
  312. $this->assertFileExists($cache_dir . '/git/context_admin-' . md5('http://git.drupal.org/project/context_admin.git'));
  313. // Text caption_filter .info rewrite.
  314. $this->assertFileExists(UNISH_SANDBOX . '/test-build/sites/all/modules/contrib/caption_filter/caption_filter.info');
  315. $contents = file_get_contents(UNISH_SANDBOX . '/test-build/sites/all/modules/contrib/caption_filter/caption_filter.info');
  316. $this->assertContains('; Information added by drush on ' . date('Y-m-d'), $contents);
  317. $this->assertContains('version = "7.x-1.2+0-dev"', $contents);
  318. $this->assertContains('project = "caption_filter"', $contents);
  319. }
  320. function testMakeFileExtract() {
  321. $this->runMakefileTest('file-extract');
  322. }
  323. function testMakeLimitProjects() {
  324. $this->runMakefileTest('limit-projects');
  325. $this->runMakefileTest('limit-projects-multiple');
  326. }
  327. function testMakeLimitLibraries() {
  328. $this->runMakefileTest('limit-libraries');
  329. $this->runMakefileTest('limit-libraries-multiple');
  330. }
  331. /**
  332. * Test that make_move_build() doesn't wipe out directories that it shouldn't.
  333. */
  334. function testMakeMoveBuild() {
  335. // Manually download a module.
  336. $this->drush('pm-download', array('cck_signup'), array('destination' => UNISH_SANDBOX . '/sites/all/modules/contrib', 'yes' => NULL));
  337. // Build a make file.
  338. $config = $this->getMakefile('contrib-destination');
  339. $makefile = $this->makefile_path . DIRECTORY_SEPARATOR . $config['makefile'];
  340. $this->drush('make', array($makefile, '.'), $config['options']);
  341. // Verify that the manually downloaded module still exists.
  342. $this->assertFileExists(UNISH_SANDBOX . '/sites/all/modules/contrib/cck_signup/README.txt');
  343. }
  344. /**
  345. * Test that a distribution can be used as a "core" project.
  346. */
  347. function testMakeUseDistributionAsCore() {
  348. $this->runMakefileTest('use-distribution-as-core');
  349. }
  350. function getMakefile($key) {
  351. static $tests = array(
  352. 'get' => array(
  353. 'name' => 'Test GET retrieval of projects',
  354. 'makefile' => 'get.make',
  355. 'build' => TRUE,
  356. 'md5' => '4bf18507da89bed601548210c22a3bed',
  357. 'options' => array('no-core' => NULL),
  358. ),
  359. 'git' => array(
  360. 'name' => 'GIT integration',
  361. 'makefile' => 'git.make',
  362. 'build' => TRUE,
  363. 'md5' => '4c80d78b50c89b5ba11a997bafec2b43',
  364. 'options' => array('no-core' => NULL, 'no-gitinfofile' => NULL),
  365. ),
  366. 'git-simple' => array(
  367. 'name' => 'Simple git integration',
  368. 'makefile' => 'git-simple.make',
  369. 'build' => TRUE,
  370. 'md5' => '0147681209adef163a8ac2c0cff2a07e',
  371. 'options' => array('no-core' => NULL, 'no-gitinfofile' => NULL),
  372. ),
  373. 'no-patch-txt' => array(
  374. 'name' => 'Test --no-patch-txt option',
  375. 'makefile' => 'patches.make',
  376. 'build' => TRUE,
  377. 'md5' => '59267a04f98374ed5b0b75e90cefcd9c',
  378. 'options' => array('no-core' => NULL, 'no-patch-txt' => NULL),
  379. ),
  380. 'patch' => array(
  381. 'name' => 'Test patching and writing of PATCHES.txt file',
  382. 'makefile' => 'patches.make',
  383. 'build' => TRUE,
  384. 'md5' => 'edf94818907bff754b24ac5c34506028',
  385. 'options' => array('no-core' => NULL),
  386. ),
  387. 'include' => array(
  388. 'name' => 'Including files and property overrides',
  389. 'makefile' => 'include.make',
  390. 'build' => TRUE,
  391. 'md5' => 'e2e230ec5eccaf5618050559ab11510d',
  392. 'options' => array(),
  393. ),
  394. 'recursion' => array(
  395. 'name' => 'Recursion',
  396. 'makefile' => 'recursion.make',
  397. 'build' => TRUE,
  398. 'md5' => 'cd095bd6dadb2f0d3e81f85f13685372',
  399. 'options' => array(
  400. 'no-core' => NULL,
  401. 'contrib-destination' => 'profiles/drupal_forum',
  402. ),
  403. ),
  404. 'recursion-override' => array(
  405. 'name' => 'Recursion overrides',
  406. 'makefile' => 'recursion-override.make',
  407. 'build' => TRUE,
  408. 'md5' => 'a13c3d5d416be9fa78569514844b96a2',
  409. 'options' => array(
  410. 'no-core' => NULL,
  411. ),
  412. ),
  413. 'svn' => array(
  414. 'name' => 'SVN',
  415. 'makefile' => 'svn.make',
  416. 'build' => TRUE,
  417. 'md5' => '0cb28a15958d7fc4bbf8bf6b00bc6514',
  418. 'options' => array('no-core' => NULL),
  419. ),
  420. 'bzr' => array(
  421. 'name' => 'Bzr',
  422. 'makefile' => 'bzr.make',
  423. 'build' => TRUE,
  424. 'md5' => '272e2b9bb27794c54396f2f03c159725',
  425. 'options' => array(),
  426. ),
  427. 'translations' => array(
  428. 'name' => 'Translation downloads',
  429. 'makefile' => 'translations.make',
  430. 'options' => array(
  431. 'translations' => 'es,pt-br',
  432. 'no-core' => NULL,
  433. ),
  434. ),
  435. 'translations-inside' => array(
  436. 'name' => 'Translation downloads inside makefile',
  437. 'makefile' => 'translations-inside.make',
  438. ),
  439. 'translations-inside7' => array(
  440. 'name' => 'Translation downloads inside makefile, core 7.x',
  441. 'makefile' => 'translations-inside7.make',
  442. ),
  443. 'contrib-destination' => array(
  444. 'name' => 'Contrib-destination attribute',
  445. 'makefile' => 'contrib-destination.make',
  446. 'build' => TRUE,
  447. 'md5' => 'd615d004adfa8ebfe44e91119b88389c',
  448. 'options' => array('no-core' => NULL, 'contrib-destination' => '.'),
  449. ),
  450. 'file' => array(
  451. 'name' => 'File extraction',
  452. 'makefile' => 'file.make',
  453. 'build' => TRUE,
  454. 'md5' => '4e9883d6f9f6572af287635689c2545d',
  455. 'options' => array('no-core' => NULL),
  456. ),
  457. 'defaults' => array(
  458. 'name' => 'Test defaults array.',
  459. 'makefile' => 'defaults.make',
  460. 'build' => TRUE,
  461. 'md5' => 'e6c0d6b37cd8573cbd188742b95a274e',
  462. 'options' => array('no-core' => NULL, 'contrib-destination' => '.'),
  463. ),
  464. 'bz2' => array(
  465. 'name' => 'bzip2',
  466. 'makefile' => 'bz2.make',
  467. 'build' => TRUE,
  468. 'md5' => '5ec081203131a1a3277c8b23f9ddb995',
  469. 'options' => array('no-core' => NULL),
  470. ),
  471. 'bz2-singlefile' => array(
  472. 'name' => 'bzip2 single file',
  473. 'makefile' => 'bz2-singlefile.make',
  474. 'build' => TRUE,
  475. 'md5' => '4f9d57f6caaf6ece0526d867327621cc',
  476. 'options' => array('no-core' => NULL),
  477. ),
  478. 'gzip' => array(
  479. 'name' => 'gzip',
  480. 'makefile' => 'gzip.make',
  481. 'build' => TRUE,
  482. 'md5' => '615975484966c36f4c9186601afd61e0',
  483. 'options' => array('no-core' => NULL),
  484. ),
  485. 'subtree' => array(
  486. 'name' => 'Use subtree from downloaded archive',
  487. 'makefile' => 'subtree.make',
  488. 'build' => TRUE,
  489. 'md5' => 'db3770d8b4c9ce77510cbbcc566da9b8',
  490. 'options' => array('no-core' => NULL),
  491. ),
  492. 'md5-succeed' => array(
  493. 'name' => 'MD5 validation',
  494. 'makefile' => 'md5-succeed.make',
  495. 'build' => TRUE,
  496. 'md5' => 'f76ec174a775ce67f8e9edcb02336ef2',
  497. 'options' => array('no-core' => NULL),
  498. ),
  499. 'md5-fail' => array(
  500. 'name' => 'Failed MD5 validation test',
  501. 'makefile' => 'md5-fail.make',
  502. 'build' => FALSE,
  503. 'md5' => FALSE,
  504. 'options' => array('no-core' => NULL),
  505. 'fail' => TRUE,
  506. ),
  507. 'ignore-checksums' => array(
  508. 'name' => 'Ignore invalid checksum/s',
  509. 'makefile' => 'md5-fail.make',
  510. 'build' => TRUE,
  511. 'md5' => 'f76ec174a775ce67f8e9edcb02336ef2',
  512. 'options' => array('no-core' => NULL, 'ignore-checksums' => NULL),
  513. ),
  514. 'file-extract' => array(
  515. 'name' => 'Extract archives',
  516. 'makefile' => 'file-extract.make',
  517. 'build' => TRUE,
  518. 'md5' => 'f92471fb7979e45d2554c61314ac6236',
  519. // @todo This test often fails with concurrency set to more than one.
  520. 'options' => array('no-core' => NULL, 'concurrency' => 1),
  521. ),
  522. 'limit-projects' => array(
  523. 'name' => 'Limit projects downloaded',
  524. 'makefile' => 'limited-projects-libraries.make',
  525. 'build' => TRUE,
  526. 'md5' => '3149650120e541d7d0fa577eef0ee9a3',
  527. 'options' => array('no-core' => NULL, 'projects' => 'boxes'),
  528. ),
  529. 'limit-projects-multiple' => array(
  530. 'name' => 'Limit multiple projects downloaded',
  531. 'makefile' => 'limited-projects-libraries.make',
  532. 'build' => TRUE,
  533. 'md5' => 'ef8996c4d6c6f0d229e2237c73860071',
  534. 'options' => array('no-core' => NULL, 'projects' => 'boxes,admin_menu'),
  535. ),
  536. 'limit-libraries' => array(
  537. 'name' => 'Limit libraries downloaded',
  538. 'makefile' => 'limited-projects-libraries.make',
  539. 'build' => TRUE,
  540. 'md5' => 'cb0da4465d86eb34cafb167787862eb6',
  541. 'options' => array('no-core' => NULL, 'libraries' => 'drush_make'),
  542. ),
  543. 'limit-libraries-multiple' => array(
  544. 'name' => 'Limit multiple libraries downloaded',
  545. 'makefile' => 'limited-projects-libraries.make',
  546. 'build' => TRUE,
  547. 'md5' => '7c10e6fc65728a77a2b0aed4ec2a29cd',
  548. 'options' => array('no-core' => NULL, 'libraries' => 'drush_make,token'),
  549. ),
  550. 'use-distribution-as-core' => array(
  551. 'name' => 'Use distribution as core',
  552. 'makefile' => 'use-distribution-as-core.make',
  553. 'build' => TRUE,
  554. 'md5' => '643a603025a20d498eb583a1e7970bad',
  555. 'options' => array(),
  556. ),
  557. 'options-array' => array(
  558. 'name' => 'Test global options array',
  559. 'makefile' => 'options-array.make',
  560. 'build' => TRUE,
  561. 'options' => array(),
  562. ),
  563. 'options-project' => array(
  564. 'name' => 'Test per-project options array',
  565. 'makefile' => 'options-project.make',
  566. 'build' => TRUE,
  567. 'options' => array(),
  568. ),
  569. );
  570. return $tests[$key];
  571. }
  572. }