def runTest(self): """ Test with some basic testcases (also check if he can find dependencies inside the given directory """ package = { 'spec': '_', 'module': ("name", "version"), 'dependencies': [] } res = build.resolveDependencies([deepcopy(package)], None, self.log) self.assertEqual([package], res) package_dep = { 'spec': '_', 'module': ("name", "version"), 'dependencies': [('gzip', '1.4')] } res = build.resolveDependencies([deepcopy(package_dep)], base_easyconfig_dir, self.log) # Dependency should be found self.assertEqual(len(res), 2) # here we have include a Dependency in the package list package['module'] = ("gzip", "1.4") res = build.resolveDependencies([deepcopy(package_dep), deepcopy(package)], None, self.log) # all dependencies should be resolved self.assertEqual(0, sum(len(pkg['dependencies']) for pkg in res)) # this should not resolve (cannot find gzip-1.4.eb) self.assertRaises(EasyBuildError, build.resolveDependencies, [deepcopy(package_dep)], None, self.log) # test if dependencies of an automatically found file are also loaded package_dep['dependencies'] = [('gzip', "1.4-GCC-4.6.3")] res = build.resolveDependencies([deepcopy(package_dep)], base_easyconfig_dir, self.log) # GCC should be first (required by gzip dependency) self.assertEqual(('GCC', '4.6.3'), res[0]['module']) self.assertEqual(('name', 'version'), res[-1]['module'])
files += findEasyconfigs(path, log) else: # Default path path = "easybuild/easyconfigs/" files = findEasyconfigs(path, log) # process all the found easyconfig files packages = [] for file in files: try: packages.extend(processEasyconfig(file, log, None)) except EasyBuildError, err: test_results.append((file, 'eb-file error', err)) if opts.parallel: resolved = resolveDependencies(packages, opts.robot, log) # use %%s so i can later replace it command = "cd %s && python %s %%s --no-parallel" % (cur_dir, sys.argv[0]) parbuild.build_packages_in_parallel(command, resolved, output_dir, log) else: build_packages(packages, output_dir) def perform_step(fase, obj, method): """ Perform method on object if it can be build """ if obj not in build_stopped: try: method(obj) except EasyBuildError, err: