chore: Add test helpers to improve coverage (#166)

* chore: Rename ProjectHistory to ProjectVersion

Version more accurately represents version storage. This
forks from the WorkspaceHistory name, but I think it's
easier to understand Workspace history.

* Rename files

* Standardize tests a bit more

* Remove Server struct from coderdtest

* Improve test coverage for workspace history

* Fix linting errors

* Fix coderd test leak

* Fix coderd test leak

* Improve workspace history logs

* Standardize test structure for codersdk

* Fix linting errors

* Fix WebSocket compression

* Update coderd/workspaces.go

Co-authored-by: Bryan <bryan@coder.com>

* Add test for listing project parameters

* Cache npm dependencies with setup node

* Remove windows npm cache key

Co-authored-by: Bryan <bryan@coder.com>
This commit is contained in:
Kyle Carberry
2022-02-05 18:24:51 -06:00
committed by GitHub
co-authored by Bryan
parent f19770b2c6
commit 1796dc6c2f
38 changed files with 1466 additions and 1057 deletions
+24 -5
View File
@@ -48,6 +48,10 @@ func (*echo) Parse(request *proto.Parse_Request, stream proto.DRPCProvisioner_Pa
path := filepath.Join(request.Directory, fmt.Sprintf("%d.parse.protobuf", index))
_, err := os.Stat(path)
if err != nil {
if index == 0 {
// Error if nothing is around to enable failed states.
return xerrors.New("no state")
}
break
}
data, err := os.ReadFile(path)
@@ -64,7 +68,8 @@ func (*echo) Parse(request *proto.Parse_Request, stream proto.DRPCProvisioner_Pa
return err
}
}
return nil
<-stream.Context().Done()
return stream.Context().Err()
}
// Provision reads requests from the provided directory to stream responses.
@@ -73,6 +78,10 @@ func (*echo) Provision(request *proto.Provision_Request, stream proto.DRPCProvis
path := filepath.Join(request.Directory, fmt.Sprintf("%d.provision.protobuf", index))
_, err := os.Stat(path)
if err != nil {
if index == 0 {
// Error if nothing is around to enable failed states.
return xerrors.New("no state")
}
break
}
data, err := os.ReadFile(path)
@@ -89,14 +98,24 @@ func (*echo) Provision(request *proto.Provision_Request, stream proto.DRPCProvis
return err
}
}
return nil
<-stream.Context().Done()
return stream.Context().Err()
}
type Responses struct {
Parse []*proto.Parse_Response
Provision []*proto.Provision_Response
}
// Tar returns a tar archive of responses to provisioner operations.
func Tar(parseResponses []*proto.Parse_Response, provisionResponses []*proto.Provision_Response) ([]byte, error) {
func Tar(responses *Responses) ([]byte, error) {
if responses == nil {
responses = &Responses{ParseComplete, ProvisionComplete}
}
var buffer bytes.Buffer
writer := tar.NewWriter(&buffer)
for index, response := range parseResponses {
for index, response := range responses.Parse {
data, err := protobuf.Marshal(response)
if err != nil {
return nil, err
@@ -113,7 +132,7 @@ func Tar(parseResponses []*proto.Parse_Response, provisionResponses []*proto.Pro
return nil, err
}
}
for index, response := range provisionResponses {
for index, response := range responses.Provision {
data, err := protobuf.Marshal(response)
if err != nil {
return nil, err
+6 -2
View File
@@ -53,7 +53,9 @@ func TestEcho(t *testing.T) {
},
},
}}
data, err := echo.Tar(responses, nil)
data, err := echo.Tar(&echo.Responses{
Parse: responses,
})
require.NoError(t, err)
client, err := api.Parse(ctx, &proto.Parse_Request{
Directory: unpackTar(t, data),
@@ -86,7 +88,9 @@ func TestEcho(t *testing.T) {
},
},
}}
data, err := echo.Tar(nil, responses)
data, err := echo.Tar(&echo.Responses{
Provision: responses,
})
require.NoError(t, err)
client, err := api.Provision(ctx, &proto.Provision_Request{
Directory: unpackTar(t, data),