use of com.spotify.protoman.descriptor.DescriptorSet in project protoman by spotify.
the class FieldRemovalRuleTest method testFieldRemoved_numberAndNameReserved.
@Test
public void testFieldRemoved_numberAndNameReserved() throws Exception {
final DescriptorSet current = DescriptorSetUtils.buildDescriptorSet("a.proto", "syntax = 'proto3';\n" + "message Derp {\n" + " int32 a = 1;\n" + "}");
final DescriptorSet candidate = DescriptorSetUtils.buildDescriptorSet("a.proto", "syntax = 'proto3';\n" + "message Derp {\n" + " reserved \"a\";" + " reserved 1;" + "}");
final ImmutableList<ValidationViolation> violations = schemaValidator.validate(current, candidate);
assertThat(violations, contains(validationViolation().type(equalTo(ViolationType.GENERATED_SOURCE_CODE_INCOMPATIBILITY_VIOLATION)).description(equalTo("field made reserved"))));
}
use of com.spotify.protoman.descriptor.DescriptorSet in project protoman by spotify.
the class FieldTypeCompatibilityRuleTest method testWireIncompatibleFieldTypeChange.
@Parameters(method = "wireIncompatiblePrimitiveTypeChanges")
@Test
public void testWireIncompatibleFieldTypeChange(final String currentType, final String candidateType) throws Exception {
final DescriptorSet current = DescriptorSetUtils.buildDescriptorSet("a.proto", String.format(TEMPLATE, currentType));
final DescriptorSet candidate = DescriptorSetUtils.buildDescriptorSet("a.proto", String.format(TEMPLATE, candidateType));
final ImmutableList<ValidationViolation> violations = schemaValidator.validate(current, candidate);
assertThat(violations, contains(validationViolation().description(equalTo(String.format("wire-incompatible field type change %s -> %s", currentType.toUpperCase(), candidateType.toUpperCase()))).type(equalTo(ViolationType.WIRE_INCOMPATIBILITY_VIOLATION))));
}
use of com.spotify.protoman.descriptor.DescriptorSet in project protoman by spotify.
the class FieldTypeCompatibilityRuleTest method testWireCompatibleFieldTypeChange.
@Parameters(method = "wireCompatiblePrimitiveTypeChanges")
@Test
public void testWireCompatibleFieldTypeChange(final String currentType, final String candidateType) throws Exception {
final DescriptorSet current = DescriptorSetUtils.buildDescriptorSet("a.proto", String.format(TEMPLATE, currentType));
final DescriptorSet candidate = DescriptorSetUtils.buildDescriptorSet("a.proto", String.format(TEMPLATE, candidateType));
final ImmutableList<ValidationViolation> violations = schemaValidator.validate(current, candidate);
assertThat(violations, contains(validationViolation().description(equalTo("field type changed (wire-compat)")).type(equalTo(ViolationType.GENERATED_SOURCE_CODE_INCOMPATIBILITY_VIOLATION))));
}
use of com.spotify.protoman.descriptor.DescriptorSet in project protoman by spotify.
the class FilePathAndPackageMatchRuleTest method testPackageAndPathMismatch.
@Test
public void testPackageAndPathMismatch() throws Exception {
final DescriptorSet current = DescriptorSet.empty();
final DescriptorSet candidate = DescriptorSetUtils.buildDescriptorSet("foo/bar/a.proto", "syntax = 'proto3';\n" + "package foo.baz;");
final ImmutableList<ValidationViolation> violations = schemaValidator.validate(current, candidate);
assertThat(violations, contains(validationViolation().description(equalTo("proto file path must match package name")).type(equalTo(ViolationType.BEST_PRACTICE_VIOLATION)).current(nullValue(GenericDescriptor.class)).candidate(genericDescriptor())));
}
use of com.spotify.protoman.descriptor.DescriptorSet in project protoman by spotify.
the class JavaPackageRuleTest method existingFile_javaOptionMissing.
@Test
public void existingFile_javaOptionMissing() throws Exception {
final DescriptorSet candidate = DescriptorSetUtils.buildDescriptorSet("a.proto", "syntax = 'proto3';\n" + "package foo.bar;\n");
final ImmutableList<ValidationViolation> violations = schemaValidator.validate(candidate, candidate);
assertThat(violations, is(empty()));
}
Aggregations