in codegen/module_system.go [1498:1573]
func (g *EndpointGenerator) generateEndpointTestFile(
e *EndpointSpec, instance *ModuleInstance, out *sync.Map,
) error {
if len(e.TestFixtures) < 1 { // skip tests if testFixtures is missing
return nil
}
m := e.ModuleSpec
methodName := e.ThriftMethodName
serviceName := e.ThriftServiceName
if len(m.Services) == 0 {
return nil
}
method := findMethod(m, serviceName, methodName)
if method == nil {
return errors.Errorf(
"Could not find thriftServiceName %q + methodName %q in module",
serviceName, methodName,
)
}
endpointDirectory := filepath.Join(
g.packageHelper.CodeGenTargetPath(),
instance.Directory,
)
targetPath := e.TargetEndpointTestPath(serviceName, methodName)
endpointTestFilePath, err := filepath.Rel(endpointDirectory, targetPath)
if err != nil {
endpointTestFilePath = targetPath
}
meta := &EndpointTestMeta{
Instance: instance,
Method: method,
TestFixtures: e.TestFixtures,
ReqHeaders: e.ReqHeaders,
ResHeaders: e.ResHeaders,
ClientID: e.ClientSpec.ClientID,
}
relativePath, err := filepath.Rel(
targetPath, g.packageHelper.CodeGenTargetPath(),
)
if err != nil {
return errors.Wrap(err,
"Error computing relative path for endpoint test template",
)
}
meta.RelativePathToRoot = relativePath
tempName := "endpoint_test.tmpl"
if e.WorkflowType == "tchannelClient" {
meta.ClientName = e.ClientSpec.ClientName
meta.IncludedPackages = append(
method.Downstream.IncludedPackages,
GoPackageImport{
AliasName: method.Downstream.PackageName,
PackageName: e.ClientSpec.ImportPackagePath,
},
)
tempName = "endpoint_test_tchannel_client.tmpl"
}
endpointTest, err := ExecuteDefaultOrCustomTemplate(tempName, g.templates, instance.CustomTemplates,
instance.Config, meta, g.packageHelper)
if err != nil {
return errors.Wrap(err, "Error executing endpoint test template")
}
out.Store(endpointTestFilePath, endpointTest)
return nil
}