diff --git a/gio/gdbus-2.0/codegen/codegen_rst.py b/gio/gdbus-2.0/codegen/codegen_rst.py
index 026ad675d..303e547cf 100644
--- a/gio/gdbus-2.0/codegen/codegen_rst.py
+++ b/gio/gdbus-2.0/codegen/codegen_rst.py
@@ -142,7 +142,7 @@ class RstCodeGenerator:
else:
access = "readable"
res += [
- ".. _{title}:",
+ f".. _{title}:",
"",
title,
"^" * len(title),
@@ -218,7 +218,7 @@ class RstCodeGenerator:
for m in iface.methods:
title = f"{iface.name}.{m.name}"
res += [
- ".. _{title}:",
+ f".. _{title}:",
"",
title,
"^" * len(title),
@@ -296,7 +296,7 @@ class RstCodeGenerator:
for s in iface.signals:
title = f"{iface.name}::{s.name}"
res += [
- ".. _{title}:",
+ f".. _{title}:",
"",
title,
"^" * len(title),
diff --git a/gio/tests/codegen.py b/gio/tests/codegen.py
index e27a412ba..22cf356ce 100644
--- a/gio/tests/codegen.py
+++ b/gio/tests/codegen.py
@@ -520,6 +520,123 @@ G_END_DECLS
rst = f.readlines()
self.assertTrue(len(rst) != 0)
+ def test_generate_rst_method(self):
+ """Test generating a method documentation with the rst generator."""
+ xml_contents = """
+
+
+
+
+
+
+ """
+ res = self.runCodegenWithInterface(
+ xml_contents,
+ "--generate-rst",
+ "test",
+ )
+ self.assertEqual("", res.err)
+ self.assertEqual("", res.out)
+ with open("test-org.project.Bar.Frobnicator.rst", "r") as f:
+ rst = f.read()
+ self.assertIn("""
+-------
+Methods
+-------
+
+.. _org.project.Bar.Frobnicator.RandomMethod:
+
+org.project.Bar.Frobnicator.RandomMethod
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+::
+
+ RandomMethod ()
+
+
+A random test method.""", rst)
+
+ def test_generate_rst_signal(self):
+ """Test generating a signal documentation with the rst generator."""
+ xml_contents = """
+
+
+
+
+
+
+ """
+ res = self.runCodegenWithInterface(
+ xml_contents,
+ "--generate-rst",
+ "test",
+ )
+ self.assertEqual("", res.err)
+ self.assertEqual("", res.out)
+ with open("test-org.project.Bar.Frobnicator.rst", "r") as f:
+ rst = f.read()
+ self.assertIn("""
+-------
+Signals
+-------
+
+.. _org.project.Bar.Frobnicator::RandomSignal:
+
+org.project.Bar.Frobnicator::RandomSignal
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+::
+
+ RandomSignal ()
+
+
+A random test signal.""", rst)
+
+ def test_generate_rst_property(self):
+ """Test generating a property documentation with the rst generator."""
+ xml_contents = """
+
+
+
+
+
+
+ """
+ res = self.runCodegenWithInterface(
+ xml_contents,
+ "--generate-rst",
+ "test",
+ )
+ self.assertEqual("", res.err)
+ self.assertEqual("", res.out)
+ with open("test-org.project.Bar.Frobnicator.rst", "r") as f:
+ rst = f.read()
+ self.assertIn("""
+----------
+Properties
+----------
+
+.. _org.project.Bar.Frobnicator:RandomProperty:
+
+org.project.Bar.Frobnicator:RandomProperty
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+::
+
+ RandomProperty readable s
+
+
+A random test property.""", rst)
+
@unittest.skipIf(on_win32(), "requires /dev/stdout")
def test_glib_min_required_invalid(self):
"""Test running with an invalid --glib-min-required."""