Skip to content

Commit 59992f1

Browse files
committed
Add linguist-generated and closed pipe test
1 parent 1e1356a commit 59992f1

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

.gitattributes

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# Generated files
2-
provisionersdk/proto/*.go
2+
provisionersdk/proto/*.go linguist-generated=true

provisionersdk/serve.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ func Serve(ctx context.Context, server proto.DRPCProvisionerServer, options *Ser
4444
return nil
4545
}
4646
if errors.Is(err, io.ErrClosedPipe) {
47+
// This may occur if the transport on either end is
48+
// closed before the context. It's fine to return
49+
// nil here, since the server has nothing to
50+
// communicate with.
4751
return nil
4852
}
4953
return xerrors.Errorf("serve transport: %w", err)

provisionersdk/serve_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,14 @@ func TestProvisionerSDK(t *testing.T) {
3636
_, err := api.Parse(context.Background(), &proto.Parse_Request{})
3737
require.Equal(t, drpcerr.Unimplemented, int(drpcerr.Code(err)))
3838
})
39+
t.Run("ServeClosedPipe", func(t *testing.T) {
40+
client, server := provisionersdk.TransportPipe()
41+
_ = client.Close()
42+
_ = server.Close()
43+
44+
err := provisionersdk.Serve(context.Background(), &proto.DRPCProvisionerUnimplementedServer{}, &provisionersdk.ServeOptions{
45+
Transport: server,
46+
})
47+
require.NoError(t, err)
48+
})
3949
}

0 commit comments

Comments
 (0)