def test_munge_cmdstan_versions(self): with tempfile.TemporaryDirectory(prefix="cmdstan_tests", dir=_TMPDIR) as tmpdir: tdir = os.path.join(tmpdir, 'tmpdir_xxx') os.makedirs(tdir) os.makedirs(os.path.join(tdir, 'cmdstan-2.22.0-rc1')) os.makedirs(os.path.join(tdir, 'cmdstan-2.22.0-rc2')) self.assertEqual(get_latest_cmdstan(tdir), 'cmdstan-2.22.0-rc2') os.makedirs(os.path.join(tdir, 'cmdstan-2.22.0')) self.assertEqual(get_latest_cmdstan(tdir), 'cmdstan-2.22.0')
def test_default_path(self): cur_value = None if 'CMDSTAN' in os.environ: cur_value = os.environ['CMDSTAN'] try: if 'CMDSTAN' in os.environ: self.assertEqual(cmdstan_path(), os.environ['CMDSTAN']) path = os.environ['CMDSTAN'] del os.environ['CMDSTAN'] self.assertFalse('CMDSTAN' in os.environ) set_cmdstan_path(path) self.assertEqual(cmdstan_path(), path) self.assertTrue('CMDSTAN' in os.environ) else: install_dir = os.path.expanduser( os.path.join('~', '.cmdstanpy') ) install_version = os.path.expanduser( os.path.join(install_dir, get_latest_cmdstan(install_dir)) ) self.assertTrue( os.path.samefile(cmdstan_path(), install_version) ) self.assertTrue('CMDSTAN' in os.environ) finally: if cur_value is not None: os.environ['CMDSTAN'] = cur_value else: if 'CMDSTAN' in os.environ: del os.environ['CMDSTAN']
def test_set_path(self): install_dir = os.path.expanduser(os.path.join('~', '.cmdstanpy')) install_version = os.path.expanduser( os.path.join(install_dir, get_latest_cmdstan(install_dir)) ) set_cmdstan_path(install_version) self.assertEqual(install_version, cmdstan_path())
def test_munge_cmdstan_versions(self): tdir = os.path.join(HERE, 'tmpdir_xxx') os.mkdir(tdir) os.mkdir(os.path.join(tdir, 'cmdstan-2.22-rc1')) os.mkdir(os.path.join(tdir, 'cmdstan-2.22-rc2')) os.mkdir(os.path.join(tdir, 'cmdstan-2.22.0')) self.assertEqual(get_latest_cmdstan(tdir), 'cmdstan-2.22.0') shutil.rmtree(tdir, ignore_errors=True)
def test_set_path(self): if 'CMDSTAN' in os.environ: self.assertEqual(cmdstan_path(), os.environ['CMDSTAN']) else: install_dir = os.path.expanduser(os.path.join('~', '.cmdstanpy')) install_version = os.path.expanduser( os.path.join(install_dir, get_latest_cmdstan(install_dir))) set_cmdstan_path(install_version) self.assertEqual(install_version, cmdstan_path()) self.assertEqual(install_version, os.environ['CMDSTAN'])
def test_validate_path(self): install_dir = os.path.expanduser(os.path.join('~', '.cmdstanpy')) install_version = os.path.expanduser( os.path.join(install_dir, get_latest_cmdstan(install_dir))) set_cmdstan_path(install_version) validate_cmdstan_path(install_version) path_foo = os.path.abspath(os.path.join('releases', 'foo')) with self.assertRaisesRegex(ValueError, 'no such CmdStan directory'): validate_cmdstan_path(path_foo) path_test = os.path.abspath('test') with self.assertRaisesRegex(ValueError, 'no CmdStan binaries'): validate_cmdstan_path(path_test)
def test_set_path(self): if 'CMDSTAN' in os.environ: self.assertEqual(cmdstan_path(), os.environ['CMDSTAN']) else: cmdstan_dir = os.path.expanduser(os.path.join('~', _DOT_CMDSTAN)) if not os.path.exists(cmdstan_dir): cmdstan_dir = os.path.expanduser( os.path.join('~', _DOT_CMDSTANPY)) install_version = os.path.join(cmdstan_dir, get_latest_cmdstan(cmdstan_dir)) set_cmdstan_path(install_version) self.assertEqual(install_version, cmdstan_path()) self.assertEqual(install_version, os.environ['CMDSTAN'])
def test_default_path(self): if 'CMDSTAN' in os.environ: self.assertPathsEqual(cmdstan_path(), os.environ['CMDSTAN']) path = os.environ['CMDSTAN'] with self.modified_environ('CMDSTAN'): self.assertFalse('CMDSTAN' in os.environ) set_cmdstan_path(path) self.assertPathsEqual(cmdstan_path(), path) self.assertTrue('CMDSTAN' in os.environ) else: cmdstan_dir = os.path.expanduser(os.path.join('~', _DOT_CMDSTAN)) install_version = os.path.join(cmdstan_dir, get_latest_cmdstan(cmdstan_dir)) self.assertTrue(os.path.samefile(cmdstan_path(), install_version)) self.assertTrue('CMDSTAN' in os.environ)
def test_validate_path(self): install_dir = os.path.expanduser(os.path.join('~', '.cmdstanpy')) install_version = os.path.expanduser( os.path.join(install_dir, get_latest_cmdstan(install_dir))) set_cmdstan_path(install_version) validate_cmdstan_path(install_version) path_foo = os.path.abspath(os.path.join('releases', 'foo')) with self.assertRaisesRegex(ValueError, 'no such CmdStan directory'): validate_cmdstan_path(path_foo) folder_name = ''.join( random.choice(string.ascii_letters) for _ in range(10)) while os.path.exists(folder_name): folder_name = ''.join( random.choice(string.ascii_letters) for _ in range(10)) os.makedirs(folder_name) path_test = os.path.abspath(folder_name) with self.assertRaisesRegex(ValueError, 'no CmdStan binaries'): validate_cmdstan_path(path_test) shutil.rmtree(folder_name)
def test_validate_path(self): if 'CMDSTAN' in os.environ: install_version = os.environ.get('CMDSTAN') else: cmdstan_dir = os.path.expanduser(os.path.join('~', _DOT_CMDSTAN)) install_version = os.path.join(cmdstan_dir, get_latest_cmdstan(cmdstan_dir)) set_cmdstan_path(install_version) validate_cmdstan_path(install_version) path_foo = os.path.abspath(os.path.join('releases', 'foo')) with self.assertRaisesRegex(ValueError, 'No CmdStan directory'): validate_cmdstan_path(path_foo) folder_name = ''.join( random.choice(string.ascii_letters) for _ in range(10)) while os.path.exists(folder_name): folder_name = ''.join( random.choice(string.ascii_letters) for _ in range(10)) os.makedirs(folder_name) path_test = os.path.abspath(folder_name) with self.assertRaisesRegex(ValueError, 'missing binaries'): validate_cmdstan_path(path_test) shutil.rmtree(folder_name)