1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 package embedconflict
30
31 import (
32 "os"
33 "os/exec"
34 "strings"
35 "testing"
36 )
37
38 func TestEmbedConflict(t *testing.T) {
39 cmd := exec.Command("protoc", "--gogo_out=.", "-I=../../../../../:../../protobuf/:.", "ec.proto")
40 data, err := cmd.CombinedOutput()
41 if err == nil && !strings.Contains(string(data), "Plugin failed with status code 1") {
42 t.Errorf("Expected error, got: %s", data)
43 if err = os.Remove("ec.pb.go"); err != nil {
44 t.Error(err)
45 }
46 }
47 t.Logf("received expected error = %v and output = %v", err, string(data))
48 }
49
50 func TestEmbedMarshaler(t *testing.T) {
51 cmd := exec.Command("protoc", "--gogo_out=.", "-I=../../../../../:../../protobuf/:.", "em.proto")
52 data, err := cmd.CombinedOutput()
53 dataStr := string(data)
54 t.Logf("received error = %v and output = %v", err, dataStr)
55 if !strings.Contains(dataStr, "WARNING: found non-") || !strings.Contains(dataStr, "unsafe_marshaler") {
56 t.Errorf("Expected WARNING: found non-[marshaler unsafe_marshaler] C with embedded marshaler D")
57 }
58 if err = os.Remove("em.pb.go"); err != nil {
59 t.Error(err)
60 }
61 }
62
63 func TestEmbedExtend(t *testing.T) {
64 cmd := exec.Command("protoc", "--gogo_out=.", "-I=../../../../../:../../protobuf/:.", "ee.proto")
65 data, err := cmd.CombinedOutput()
66 if err == nil && !strings.Contains(string(data), "Plugin failed with status code 1") {
67 t.Errorf("Expected error, got: %s", data)
68 if err = os.Remove("ee.pb.go"); err != nil {
69 t.Error(err)
70 }
71 }
72 t.Logf("received expected error = %v and output = %v", err, string(data))
73 }
74
75 func TestCustomName(t *testing.T) {
76 cmd := exec.Command("protoc", "--gogo_out=.", "-I=../../../../../:../../protobuf/:.", "en.proto")
77 data, err := cmd.CombinedOutput()
78 if err == nil && !strings.Contains(string(data), "Plugin failed with status code 1") {
79 t.Errorf("Expected error, got: %s", data)
80 if err = os.Remove("en.pb.go"); err != nil {
81 t.Error(err)
82 }
83 }
84 t.Logf("received expected error = %v and output = %v", err, string(data))
85 }
86
87 func TestRepeatedEmbed(t *testing.T) {
88 cmd := exec.Command("protoc", "--gogo_out=.", "-I=../../../../../:../../protobuf/:.", "er.proto")
89 data, err := cmd.CombinedOutput()
90 if err == nil && !strings.Contains(string(data), "Plugin failed with status code 1") {
91 t.Errorf("Expected error, got: %s", data)
92 if err = os.Remove("er.pb.go"); err != nil {
93 t.Error(err)
94 }
95 }
96 dataStr := string(data)
97 t.Logf("received error = %v and output = %v", err, dataStr)
98 warning := "ERROR: found repeated embedded field B in message A"
99 if !strings.Contains(dataStr, warning) {
100 t.Errorf("Expected " + warning)
101 }
102 }
103
104 func TestTakesTooLongToDebug(t *testing.T) {
105 cmd := exec.Command("protoc", "--gogo_out=.", "-I=../../../../../:../../protobuf/:.", "eb.proto")
106 data, err := cmd.CombinedOutput()
107 if err == nil && !strings.Contains(string(data), "Plugin failed with status code 1") {
108 t.Errorf("Expected error, got: %s", data)
109 if err = os.Remove("eb.pb.go"); err != nil {
110 t.Error(err)
111 }
112 }
113 dataStr := string(data)
114 t.Logf("received error = %v and output = %v", err, dataStr)
115 warning := "ERROR: found embedded bytes field"
116 if !strings.Contains(dataStr, warning) {
117 t.Errorf("Expected " + warning)
118 }
119 }
120
View as plain text