Skip to content

Commit

Permalink
Merge pull request #18 from IronCore864/main
Browse files Browse the repository at this point in the history
chore: rename charms.yaml file to interface.yaml
  • Loading branch information
PietroPasotti authored Jul 30, 2024
2 parents 6de05b2 + dbcd1de commit e2322ec
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 15 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Interface-tester-pytest
# pytest-interface-tester

This repository contains a library meant to facilitate compliance testing of charm relation interfaces.
The problem is best stated as follows:
Expand Down Expand Up @@ -74,7 +74,7 @@ The flow is (from the POV of the spec repo):


## Customizing the fixture's address
You can customize name and location of the fixture, but you will need to include that data when registering your charm with the interface. In `charms.yaml`, you can then specify:
You can customize name and location of the fixture, but you will need to include that data when registering your charm with the interface. In `interface.yaml`, you can then specify:
```yaml
- name: my-charm-name # required
url: https://github.com/foo/my-charm-name # required
Expand Down
25 changes: 13 additions & 12 deletions interface_tester/collector.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
schemas for one, you can execute this file to ascertain that all relevant data is being gathered
correctly.
"""

import dataclasses
import importlib
import inspect
Expand Down Expand Up @@ -60,8 +61,8 @@ def __hash__(self):
return hash((self.name, self.url, self.branch))


class _CharmsDotYamlSpec(TypedDict):
"""Specification of the `charms.yaml` file each interface/version dir should contain."""
class _InterfacesDotYamlSpec(TypedDict):
"""Specification of the `interface.yaml` file each interface/version dir should contain."""

providers: List[_CharmTestConfig]
requirers: List[_CharmTestConfig]
Expand Down Expand Up @@ -151,20 +152,20 @@ def get_schemas(file: Path) -> Dict[Literal["requirer", "provider"], Type[DataBa
return out


def _gather_charms_for_version(version_dir: Path) -> Optional[_CharmsDotYamlSpec]:
"""Attempt to read the `charms.yaml` for this version sudir.
def _gather_charms_for_version(version_dir: Path) -> Optional[_InterfacesDotYamlSpec]:
"""Attempt to read the `interface.yaml` for this version_dir.
On failure, return None.
"""
charms_yaml = version_dir / "charms.yaml"
if not charms_yaml.exists():
interface_yaml = version_dir / "interface.yaml"
if not interface_yaml.exists():
return None

charms = None
try:
charms = yaml.safe_load(charms_yaml.read_text())
charms = yaml.safe_load(interface_yaml.read_text())
except (json.JSONDecodeError, yaml.YAMLError) as e:
logger.error("failed to decode %s: verify that it is valid yaml: %s" % (charms_yaml, e))
logger.error("failed to decode %s: verify that it is valid yaml: %s" % (interface_yaml, e))
except FileNotFoundError as e:
logger.error("not found: %s" % e)
if not charms:
Expand All @@ -175,10 +176,10 @@ def _gather_charms_for_version(version_dir: Path) -> Optional[_CharmsDotYamlSpec

if not isinstance(providers, list) or not isinstance(requirers, list):
raise TypeError(
f"{charms_yaml} file has unexpected providers/requirers spec; "
f"{interface_yaml} file has unexpected providers/requirers spec; "
f"expected two lists of dicts (yaml mappings); "
f"got {type(providers)}/{type(requirers)}. "
f"Invalid charms.yaml format."
f"Invalid interface.yaml format."
)

provider_configs = []
Expand All @@ -190,12 +191,12 @@ def _gather_charms_for_version(version_dir: Path) -> Optional[_CharmsDotYamlSpec
except TypeError:
logger.error(
"failure parsing %s to _CharmTestConfig; invalid charm test "
"configuration in %s/charms.yaml:providers" % (item, version_dir)
"configuration in %s/interface.yaml:providers" % (item, version_dir)
)
continue
destination.append(cfg)

spec: _CharmsDotYamlSpec = {"providers": provider_configs, "requirers": requirer_configs}
spec: _InterfacesDotYamlSpec = {"providers": provider_configs, "requirers": requirer_configs}
return spec


Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "pytest-interface-tester"

version = "2.0.1"
version = "3.0.0"
authors = [
{ name = "Pietro Pasotti", email = "[email protected]" },
]
Expand Down

0 comments on commit e2322ec

Please sign in to comment.