def node_library(self, **kwargs) -> Path: # TODO: once we've migrated all Node.js repos to either having # .repo-metadata.json, or excluding README.md, we can remove this. if not os.path.exists("./.repo-metadata.json"): self.excludes.append("README.md") if "samples/README.md" not in self.excludes: self.excludes.append("samples/README.md") kwargs["metadata"] = node.template_metadata() kwargs["publish_token"] = node.get_publish_token(kwargs["metadata"]["name"]) ignore_src_index = [ "yes" for f in self.excludes if fnmatch.fnmatch("src/index.ts", f) ] # generate root-level `src/index.ts` to export multiple versions and its default clients if ( "versions" in kwargs and "default_version" in kwargs and not ignore_src_index ): node.generate_index_ts( versions=kwargs["versions"], default_version=kwargs["default_version"] ) return self._generic_library("node_library", **kwargs)
def test_generate_index_ts_invalid_default_version(): # use a non-nodejs template directory with util.chdir(FIXTURES / "node_templates" / "index_samples"): versions = ["v1beta1"] default_version = "v1" with pytest.raises(AttributeError) as err: node.generate_index_ts(versions, default_version) assert f"must contain default version {default_version}" in err.args
def test_generate_index_ts(): # use a non-nodejs template directory with util.chdir(FIXTURES / "node_templates" / "index_samples"): node.generate_index_ts(["v1", "v1beta1"], "v1") generated_index_path = pathlib.Path( FIXTURES / "node_templates" / "index_samples" / "src" / "index.ts") sample_index_path = pathlib.Path(FIXTURES / "node_templates" / "index_samples" / "sample_index.ts") assert filecmp.cmp(generated_index_path, sample_index_path)
def test_generate_index_ts_no_clients(): # use a non-nodejs template directory with util.chdir(FIXTURES / "node_templates" / "index_samples"): versions = ["v1", "v1beta1", "invalid_index"] default_version = "invalid_index" with pytest.raises(AttributeError) as err: node.generate_index_ts(versions, default_version) assert ( f"No client is exported in the default version's({default_version}) index.ts ." in err.args)
def test_generate_index_ts_empty_versions(): cwd = os.getcwd() try: # use a non-nodejs template directory os.chdir(FIXTURES / "node_templates" / "index_samples") with pytest.raises(AttributeError) as err: node.generate_index_ts([], "v1") assert "can't be empty" in err.args finally: os.chdir(cwd)
def test_generate_index_ts(): cwd = os.getcwd() try: # use a non-nodejs template directory os.chdir(FIXTURES / "node_templates" / "index_samples") node.generate_index_ts(["v1", "v1beta1"], "v1") generated_index_path = pathlib.Path( FIXTURES / "node_templates" / "index_samples" / "src" / "index.ts") sample_index_path = pathlib.Path(FIXTURES / "node_templates" / "index_samples" / "sample_index.ts") assert filecmp.cmp(generated_index_path, sample_index_path) finally: os.chdir(cwd)
def test_generate_index_ts_empty_versions(): # use a non-nodejs template directory with util.chdir(FIXTURES / "node_templates" / "index_samples"): with pytest.raises(AttributeError) as err: node.generate_index_ts([], "v1") assert "can't be empty" in err.args