in codegen/smithy-go-codegen/src/main/java/software/amazon/smithy/go/codegen/integration/HttpProtocolUnitTestGenerator.java [216:267]
public void generateTestFunction(GoWriter writer) {
writer.addUseImports(SmithyGoDependency.TESTING);
writer.openBlock("func " + unitTestFuncNameFormat() + "(t *testing.T) {", "}", unitTestFuncNameArgs(),
() -> {
skipTests.forEach((skipTest) -> {
if (skipTest.matches(service.getId(), operation.getId())) {
writer.write("t.Skip(\"disabled test $L $L\")", service.getId(), operation.getId());
writer.write("");
}
});
generateTestSetup(writer);
writer.write("cases := map[string]struct {");
generateTestCaseParams(writer);
writer.openBlock("}{", "}", () -> {
for (T testCase : testCases) {
Optional<AppliesTo> appliesTo = testCase.getAppliesTo();
if (appliesTo.isPresent() && !(appliesTo.get().equals(AppliesTo.CLIENT))) {
continue;
}
testCase.getDocumentation().ifPresent(writer::writeDocs);
writer.openBlock("$S: {", "},", testCase.getId(), () -> {
generateTestCaseValues(writer, testCase);
});
}
});
// And test case iteration/assertions
writer.openBlock("for name, c := range cases {", "}", () -> {
writer.openBlock("t.Run(name, func(t *testing.T) {", "})", () -> {
skipTests.forEach((skipTest) -> {
for (T testCase : testCases) {
if (skipTest.matches(service.getId(), operation.getId(), testCase.getId())) {
writer.openBlock("if name == $S {", "}", testCase.getId(), () -> {
writer.write("t.Skip(\"disabled test $L $L\")", service.getId(),
operation.getId());
});
writer.write("");
}
}
});
generateTestBodySetup(writer);
generateTestServer(writer, "server", this::generateTestServerHandler);
generateTestClient(writer, "client");
generateTestInvokeClientOperation(writer, "client");
generateTestAssertions(writer);
});
});
});
}