Include package name in include guard (issue #207).
authorPetteri Aimonen <jpa@git.mail.kapsi.fi>
Sat, 23 Jul 2016 17:24:54 +0000 (20:24 +0300)
committerPetteri Aimonen <jpa@git.mail.kapsi.fi>
Sat, 23 Jul 2016 17:24:54 +0000 (20:24 +0300)
Fix suggested by Ulenspiegel.

Also added testcase for the same.

generator/nanopb_generator.py
tests/multiple_files/SConscript
tests/multiple_files/subdir/multifile2.proto [new file with mode: 0644]
tests/multiple_files/test_multiple_files.c

index 6451457..9cf2de5 100755 (executable)
@@ -1045,7 +1045,10 @@ class ProtoFile:
         else:
             yield '/* Generated by %s at %s. */\n\n' % (nanopb_version, time.asctime())
 
-        symbol = make_identifier(headername)
+        if self.fdesc.package:
+            symbol = make_identifier(self.fdesc.package + '_' + headername)
+        else:
+            symbol = make_identifier(headername)
         yield '#ifndef PB_%s_INCLUDED\n' % symbol
         yield '#define PB_%s_INCLUDED\n' % symbol
         try:
index 1689f48..b1281e1 100644 (file)
@@ -4,10 +4,13 @@ Import("env")
 
 incpath = env.Clone()
 incpath.Append(PROTOCPATH = '#multiple_files')
+incpath.Append(CPPPATH = '$BUILD/multiple_files')
 
 incpath.NanopbProto(["multifile1", "multifile1.options"])
 incpath.NanopbProto("multifile2")
-test = incpath.Program(["test_multiple_files.c", "multifile1.pb.c", "multifile2.pb.c"])
+incpath.NanopbProto("subdir/multifile2")
+test = incpath.Program(["test_multiple_files.c", "multifile1.pb.c",
+                        "multifile2.pb.c", "subdir/multifile2.pb.c"])
 
 env.RunTest(test)
 
diff --git a/tests/multiple_files/subdir/multifile2.proto b/tests/multiple_files/subdir/multifile2.proto
new file mode 100644 (file)
index 0000000..847a929
--- /dev/null
@@ -0,0 +1,25 @@
+syntax = "proto2";
+
+package subdir;
+
+import "multifile1.proto";
+
+message Callback2Message {
+    required TestMessage tstmsg = 1;
+    required SubMessage submsg = 2;
+}
+
+message OneofMessage {
+    oneof msgs {
+        StaticMessage tstmsg = 1;
+    }
+}
+
+message Enums {
+    required SignedEnum senum = 1;
+    required UnsignedEnum uenum = 2;
+}
+
+message SubdirMessage {
+    required int32 foo = 1 [default = 15];
+}
index 292b8d7..70a3e59 100644 (file)
@@ -6,6 +6,7 @@
 #include <pb_encode.h>
 #include "unittests.h"
 #include "multifile2.pb.h"
+#include "subdir/multifile2.pb.h"
 
 int main()
 {
@@ -18,5 +19,12 @@ int main()
     TEST(PB_LTYPE(Enums_fields[0].type) == PB_LTYPE_VARINT);
     TEST(PB_LTYPE(Enums_fields[1].type) == PB_LTYPE_UVARINT);
     
+    /* Test that subdir file is correctly included */
+    {
+        subdir_SubdirMessage foo = subdir_SubdirMessage_init_default;
+        TEST(foo.foo == 15);
+        /* TEST(subdir_OneofMessage_size == 27); */ /* TODO: Issue #172 */
+    }
+    
     return status;
 }