fleet/server/mock/mockimpl
Victor Lyuboslavsky a86253d2bf
Refactoring Android datastore interface (#26982)
For #26219 

Refactoring the interface between Android service and Android datastore
to use 1 common datastore interface: `fleet.AndroidDatastore`

These changes are based on feedback from the recent Backend Sync.

```mermaid
---
title: Partial class diagram
---
classDiagram
    direction LR
    class `android.Service`
    <<interface>> `android.Service`
    class `android/service.Service`
    `android/service.Service` ..|> `android.Service`: implements

    class `fleet.AndroidDatastore`
    <<interface>> `fleet.AndroidDatastore`
    class `fleet.Datastore`
    <<interface>> `fleet.Datastore`
    class `android.Datastore`
    <<interface>> `android.Datastore`
    `android/service.Service` *-- `fleet.AndroidDatastore`: USES (THIS IS THE KEY CHANGE)
    `fleet.Datastore` *-- `fleet.AndroidDatastore`: contains
    `mysql.Datastore` ..|> `fleet.Datastore`: implements
    `fleet.AndroidDatastore` *-- `android.Datastore`: contains
    `mysql.Datastore` *-- `android.Datastore`: contains
    `android/mysql.Datastore` ..|> `android.Datastore`: implements
```
2025-03-13 14:28:52 -05:00
..
impl.go Refactoring Android datastore interface (#26982) 2025-03-13 14:28:52 -05:00
impl_test.go Move external dependency mockimpl to monorepo (#15863) 2024-01-10 11:46:24 -03:00
LICENSE.txt Move external dependency mockimpl to monorepo (#15863) 2024-01-10 11:46:24 -03:00
README.md Move external dependency mockimpl to monorepo (#15863) 2024-01-10 11:46:24 -03:00

mockimpl

The contents of this directory were copied (on December 2023) from https://github.com/fleetdm/mockimpl which was forked from https://github.com/groob/mockimpl.

mockimpl generates mock method stubs for implementing an interface. mockimpl is based on impl

go get -u github.com/groob/mockimpl

Sample usage:

$ impl 'f *File' io.ReadWriteCloser
// Automatically generated by mockimpl. DO NOT EDIT!

package mock

import "io"

var _ io.ReadWriteCloser = (*File)(nil)

type ReadFunc func(p []byte) (n int, err error)

type WriteFunc func(p []byte) (n int, err error)

type CloseFunc func() error

type File struct {
       	ReadFunc        ReadFunc
       	ReadFuncInvoked bool

       	WriteFunc        WriteFunc
       	WriteFuncInvoked bool

       	CloseFunc        CloseFunc
       	CloseFuncInvoked bool
}

func (f *File) Read(p []byte) (n int, err error) {
       	f.ReadFuncInvoked = true
       	return f.ReadFunc(p)
}

func (f *File) Write(p []byte) (n int, err error) {
       	f.WriteFuncInvoked = true
       	return f.WriteFunc(p)
}

func (f *File) Close() error {
       	f.CloseFuncInvoked = true
       	return f.CloseFunc()
}

# You can also provide a full name by specifying the package path.
# This helps in cases where the interface can't be guessed
# just from the package name and interface name.
$ impl 's *Source' golang.org/x/oauth2.TokenSource
func (s *Source) Token() (*oauth2.Token, error) {
    panic("not implemented")
}

You can use impl from Vim with vim-go-impl