def test_filesystem(tmp_path, database): """Test loading and using a queue with the filesystem database. """ from rse.main import Encyclopedia config_dir = os.path.join(str(tmp_path), "software") os.mkdir(config_dir) config_file = os.path.join(config_dir, "rse.ini") # System exit if doesn't exist with pytest.raises(SystemExit): enc = Encyclopedia(config_file=config_file) enc = Encyclopedia(config_file=config_file, generate=True, database=database) assert enc.config.configfile == config_file assert os.path.exists(config_dir) assert enc.config_dir == config_dir assert enc.config.configfile == os.path.join(enc.config_dir, "rse.ini") assert enc.database == database assert enc.db.database == database if database == "filesystem": assert enc.db.data_base == os.path.join(config_dir, "database") # Test list, empty without anything assert not enc.list() # Add a repo repo = enc.add("github.com/singularityhub/sregistry") assert len(enc.list()) == 1 # enc.get should return last repo, given no id lastrepo = enc.get() assert lastrepo.uid == repo.uid # Summary enc.summary() enc.summary("github.com/singularityhub/sregistry") enc.analyze("github.com/singularityhub/sregistry") enc.analyze_bulk() # Clean up a specific repo (no prompt) enc.clear(repo.uid, noprompt=True) assert len(enc.list()) == 0 enc.clear(noprompt=True) assert not enc.list() # Get the taxonomy or criteria enc.list_taxonomy() enc.list_criteria()
def main(args, extra): # Create a research software encyclopedia enc = Encyclopedia(config_file=args.config_file, database=args.database) try: repo = enc.get(args.uid) print(json.dumps(repo.load(), indent=4)) except NoReposError: bot.error( "There are no software repositories in the database! Use rse add to add some." ) except RepoNotFoundError: bot.error( f"{args.uid} does not exist in the database. Use rse add to add it." )