Skip to content

Commit

Permalink
Add recover to fail test on panic
Browse files Browse the repository at this point in the history
```
~> go get github.com/zclconf/go-cty@v1.13.1
~>  go test ./rpc/... -v -run=TestCommonServer
=== RUN   TestCommonServer_ConfigSpec
=== RUN   TestCommonServer_ConfigSpec/Builder_Component_Server
    common_test.go:75: Call to ConfigSpec for Builder Component Server panicked: ConfigSpec failed: gob: type cty.Type has no exported fields
2023/04/21 14:31:27 [WARN] Shutting down mux conn in Server
2023/04/21 14:31:27 [WARN] Client is closing mux
=== RUN   TestCommonServer_ConfigSpec/Datasource_Component_Server
    common_test.go:75: Call to ConfigSpec for Datasource Component Server panicked: ConfigSpec failed: gob: type cty.Type has no exported fields
2023/04/21 14:31:27 [WARN] Shutting down mux conn in Server
2023/04/21 14:31:27 [WARN] Client is closing mux
=== RUN   TestCommonServer_ConfigSpec/Provisioner_Component_Server
    common_test.go:75: Call to ConfigSpec for Provisioner Component Server panicked: ConfigSpec failed: gob: type cty.Type has no exported fields
2023/04/21 14:31:27 [WARN] Shutting down mux conn in Server
2023/04/21 14:31:27 [WARN] Client is closing mux
--- FAIL: TestCommonServer_ConfigSpec (0.00s)
    --- FAIL: TestCommonServer_ConfigSpec/Builder_Component_Server (0.00s)
    --- FAIL: TestCommonServer_ConfigSpec/Datasource_Component_Server (0.00s)
    --- FAIL: TestCommonServer_ConfigSpec/Provisioner_Component_Server (0.00s)
FAIL
FAIL    github.com/hashicorp/packer-plugin-sdk/rpc      0.278s
FAIL
```
  • Loading branch information
nywilken committed Apr 21, 2023
1 parent f1fdeb0 commit d37ad45
Showing 1 changed file with 32 additions and 13 deletions.
45 changes: 32 additions & 13 deletions rpc/common_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,28 +36,47 @@ func TestCommonServer_ConfigSpec(t *testing.T) {
defer client.Close()
defer server.Close()

var spec hcldec.ObjectSpec
var configSpecTestFn func() hcldec.ObjectSpec
switch v := tc.component.(type) {
case packersdk.Builder:
server.RegisterBuilder(v)
remote := client.Builder()
spec = remote.ConfigSpec()
configSpecTestFn = func() hcldec.ObjectSpec {
server.RegisterBuilder(v)
remote := client.Builder()
spec := remote.ConfigSpec()
return spec
}
case packersdk.Datasource:
server.RegisterDatasource(v)
remote := client.Datasource()
spec = remote.ConfigSpec()
configSpecTestFn = func() hcldec.ObjectSpec {
server.RegisterDatasource(v)
remote := client.Datasource()
spec := remote.ConfigSpec()
return spec
}
case packersdk.Provisioner:
server.RegisterProvisioner(v)
remote := client.Provisioner()
spec = remote.ConfigSpec()
configSpecTestFn = func() hcldec.ObjectSpec {
server.RegisterProvisioner(v)
remote := client.Provisioner()
spec := remote.ConfigSpec()
return spec
}
case packersdk.PostProcessor:
server.RegisterPostProcessor(v)
remote := client.PostProcessor()
spec = remote.ConfigSpec()
configSpecTestFn = func() hcldec.ObjectSpec {
server.RegisterPostProcessor(v)
remote := client.PostProcessor()
spec := remote.ConfigSpec()
return spec
}
default:
t.Fatalf("Unknown component type %T", v)
}

defer func() {
if r := recover(); r != nil {
t.Errorf("Call to ConfigSpec for %s panicked: %v", tc.name, r)
}
}()

spec := configSpecTestFn()
if len(spec) == 0 {
t.Errorf("expected remote.ConfigSpec for %T to return a valid hcldec.ObjectSpec, but return %v", tc.component, spec)
}
Expand Down

0 comments on commit d37ad45

Please sign in to comment.