My opinion expressed on the 2.3.0RC0 thread was that @VisibleForTesting would flag class/method/variable as private. I believe the annotation label is pretty suggestive and (I also believe) it's common sense that it should be treated as private by developers. I don't think the fact it's omitted from our guidelines changes perception of it.
Em ter., 23 de jun. de 2020 às 01:15, Bharath Vissapragada < bhara...@apache.org> escreveu: > Sorry, I should've been clearer. It's the former. My point is, any method > tagged with @VisibleForTesting is only intended for testing purposes and > should _not_ be considered public, its visibility scope is wider than > necessary only because it was needed by some test method. That's how I'd > interpret it (Actually, that's what I thought you meant, now I'm confused > :-)). > > On Mon, Jun 22, 2020 at 4:02 PM Nick Dimiduk <ndimi...@apache.org> wrote: > > > On Mon, Jun 22, 2020 at 3:45 PM Bharath Vissapragada < > bhara...@apache.org> > > wrote: > > > > > I share the same opinion. Infact hadoop (from which our annotations are > > > derived I believe), talks about this, "Also, certain APIs are annotated > > as > > > @VisibleForTesting (from com.google.common > > .annotations.VisibleForTesting) > > > - these are meant to be used strictly for unit tests and should be > > treated > > > as “Private” APIs." > > > > > > > > > > > > https://hadoop.apache.org/docs/r3.1.2/hadoop-project-dist/hadoop-common/InterfaceClassification.html > > > > > > > Sorry Bharath, I don't follow. Are you saying "I share the opinion that > the > > VisibleForTesting annotation should be considered as defining a method as > > IA.Private," and this is an omission from our community guidelines > > document? Or are you saying "no, it does not count as an interface > audience > > marker," and we are obliged to treat methods such as in this example as > > public API? > > > > Thanks, > > Nick > > > > On Mon, Jun 22, 2020 at 10:15 AM Sean Busbey <bus...@apache.org> wrote: > > > > > > > Yeah I would say no as well. We should make clear on our dev guide > that > > > you > > > > also should be marking those things with an Interface Audience > marking > > if > > > > you don't intend them to be at the downstream API visibility of the > > > parent > > > > class. > > > > > > > > (IIRC we also use VisibleForTesting in IA.Private classes to > > proactively > > > > explain why some internal looking member is at a wider Java access > > > scope.) > > > > > > > > On Mon, Jun 22, 2020, 11:39 Nick Dimiduk <ndimi...@apache.org> > wrote: > > > > > > > > > Hello, > > > > > > > > > > This came up over on the 2.3.0RC0 thread, so let's open it for > proper > > > > > discussion. In that context, we observe method signature changes > to a > > > > > method marked with the Guava VisibleForTesting annotation. The > method > > > is > > > > a > > > > > protected method on a IA.Public class. There is no method-level IA > > > > > annotation. > > > > > > > > > > Do we consider the VisibleForTesting annotation as a specifier for > > our > > > > > compatibility guidelines? > > > > > > > > > > I am of the opinion that no, it is not an InterfaceAudience > > annotation, > > > > and > > > > > so it is not applicable for defining our public API. > > > > > > > > > > What do you think? > > > > > > > > > > Thanks, > > > > > Nick > > > > > > > > > > > > > > >