def setUp(self): me = os.path.dirname(__file__) single_files = os.path.join(me, '..', 'files', 'single') self.conanfile = os.path.join(single_files, 'settings_all.py') self.conanfile_wrapper = ConanFileWrapper.parse(self.conanfile) self.settings = get_settings() self.options = ''
def setUp(self): self.registry = RunnerRegistry() self.settings = get_settings() # Dummy (but valid) conanfile me = os.path.dirname(__file__) single_files = os.path.join(me, '..', '..', 'files', 'single') self.conanfile = os.path.join(single_files, 'conanfile01.py')
def test_settings_from_filename(self): tf = tempfile.NamedTemporaryFile(mode='w', delete=False) tf.write(default_settings_yml) tf.close() try: settings = get_settings(filename=tf.name) self.assertIsInstance(settings, Settings) finally: os.remove(tf.name)
def setUp(self): settings = get_settings() # Dummy (but valid) conanfile me = os.path.dirname(__file__) conanfile = os.path.join(me, '..', '..', 'files', 'single', 'conanfile01.py') self.runner = TravisRunner(conanfile=conanfile, settings=settings, osys="Linux")
def setUp(self): import logging logging.basicConfig(level=logging.DEBUG) me = os.path.dirname(__file__) single_files = os.path.join(me, '..', 'files', 'single') self.conanfile = os.path.join(single_files, 'raise_configure.py') self.conanfile_wrapper = ConanFileWrapper.parse(self.conanfile) self.settings = get_settings() self.n_options = 1 self.options_multiplier = pow(2, self.n_options)
def test_settings_invalid_filename(self): with self.assertRaises(IOError): get_settings(filename='invalid_filename.txt')
def test_default_settings(self): settings = get_settings() self.assertIsInstance(settings, Settings)
def setUp(self): me = os.path.dirname(__file__) single_files = os.path.join(me, '..', 'files', 'single') conanfile01 = os.path.join(single_files, 'conanfile01.py') self.wrapper = ConanFileWrapper.parse(conanfile01) self.settings = get_settings()
def run(conanfile, filter_func=None, dry_run=False): # Do the work osys = platform_system() # Look for runner runner = RunnerRegistry.get_runner(conanfile=conanfile, settings=get_settings(), osys=osys, dry_run=dry_run) all_jobs = runner.enumerate_jobs() all_jobs = list(JobGeneratorBase.filter_jobs(all_jobs, filter=filter_func)) sys.stdout.write("All combinations sum up to {} jobs\n".format(len(all_jobs))) # - may paginate total_pages = os.environ.get("CONAN_TOTAL_PAGES", None) current_page = os.environ.get("CONAN_CURRENT_PAGE", None) msg = '' if total_pages or current_page: assert total_pages and current_page, "Both environment variables must be set: CONAN_TOTAL_PAGES and CONAN_CURRENT_PAGE" init, end = slice(len(all_jobs), int(current_page), int(total_pages)) all_jobs = all_jobs[init:end] msg = "(page {}/{})".format(current_page, total_pages) # Print jobs to run sys.stdout.write("Jobs to run... {}\n".format(msg)) print_jobs(all_jobs) results = [] # Get username and channel USERNAME = os.getenv("CONAN_USERNAME", 'conan') CHANNEL = os.getenv("CONAN_CHANNEL", 'stable' if runner.is_stable_branch() else 'testing') # Aggregate jobs by compiler and iterate grouped_jobs = groupby(all_jobs, itemgetter(0)) i = 0 total = len(all_jobs) with ExitStack() as stack: # Add remotes in order of precedence ADDITIONAL_REMOTES = get_env("CONAN_REMOTES", []) for remote in reversed(ADDITIONAL_REMOTES): _ = stack.enter_context(conan.remote(url=remote)) REMOTE = os.getenv("CONAN_UPLOAD", None) if REMOTE and REMOTE not in ADDITIONAL_REMOTES: _ = stack.enter_context(conan.remote(url=REMOTE)) # Run jobs for compiler, options in grouped_jobs: # Get a runner for each compiler (will modify profile) runner.set_compiler(compiler) with profile_for(compiler) as profile_file: runner.set_profile(profile_file) for _, opt in options: i += 1 options_str = ["{}={}".format(key, value) for key, value in opt.items()] sys.stdout.write("\n==> [{:>2}/{}] {}: {}\n".format(i, total, str(compiler), ', '.join(options_str))) ret = runner.run(opt, username=USERNAME, channel=CHANNEL) sys.stdout.write(ret + '\n\n') results.append(ret) # Summary of jobs status sys.stdout.write("Summing up... {}\n".format(msg)) print_jobs(all_jobs, job_status=results) succeed = len(results) == results.count(SUCCESS) if not succeed: sys.stdout.write("Only {} out of {} jobs succeeded (status={}) :/ \n\n".format(results.count(SUCCESS), len(results), SUCCESS)) if not dry_run: return -1 else: sys.stdout.write("All jobs succeeded!\n\n") # Upload (will raise if errors) runner.upload(USERNAME, CHANNEL) return 0 if succeed else -1
def setUp(self): self.settings = get_settings() # Dummy (but valid) conanfile me = os.path.dirname(__file__) self.conanfile = os.path.join(me, '..', '..', 'files', 'single', 'conanfile01.py')