From 8f2f9eb49813568b6a7b6a1fa7480e961f7b8c9a Mon Sep 17 00:00:00 2001 From: Mark Daoust <markdaoust@google.com> Date: Wed, 22 Aug 2018 11:42:40 -0700 Subject: [PATCH] Add test for stacked "for_subclass_implementers" in class __mro__. This test asserts that "for_subclass_implementers" short-circuits the __mro__ inspection. A method labeled "for_subclass_implementers" will be documented in it's defining class, regardless of inheritable decorations farther up the class hierarchy. PiperOrigin-RevId: 209802006 --- tensorflow/tools/docs/doc_controls_test.py | 39 +++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/tensorflow/tools/docs/doc_controls_test.py b/tensorflow/tools/docs/doc_controls_test.py index 410342fb69f..d5eb4ffc000 100644 --- a/tensorflow/tools/docs/doc_controls_test.py +++ b/tensorflow/tools/docs/doc_controls_test.py @@ -145,7 +145,7 @@ class DocControlsTest(googletest.TestCase): self.assertTrue( doc_controls.should_skip_class_attr(GrandChild, 'my_method')) - def testfor_subclass_implementers(self): + def test_for_subclass_implementers(self): class GrandParent(object): @@ -178,6 +178,43 @@ class DocControlsTest(googletest.TestCase): self.assertTrue( doc_controls.should_skip_class_attr(Grand2Child, 'my_method')) + def test_for_subclass_implementers_short_circuit(self): + + class GrandParent(object): + + @doc_controls.for_subclass_implementers + def my_method(self): + pass + + class Parent(GrandParent): + + def my_method(self): + pass + + class Child(Parent): + + @doc_controls.do_not_doc_inheritable + def my_method(self): + pass + + class GrandChild(Child): + + @doc_controls.for_subclass_implementers + def my_method(self): + pass + + class Grand2Child(Child): + pass + + self.assertFalse( + doc_controls.should_skip_class_attr(GrandParent, 'my_method')) + self.assertTrue(doc_controls.should_skip_class_attr(Parent, 'my_method')) + self.assertTrue(doc_controls.should_skip_class_attr(Child, 'my_method')) + self.assertFalse( + doc_controls.should_skip_class_attr(GrandChild, 'my_method')) + self.assertTrue( + doc_controls.should_skip_class_attr(Grand2Child, 'my_method')) + if __name__ == '__main__': googletest.main()