summary refs log tree commit diff
path: root/pkgs/development/libraries/nanopb
diff options
context:
space:
mode:
authorWael Nasreddine <wael.nasreddine@gmail.com>2020-06-05 13:29:52 -0700
committerWael Nasreddine <wael@keeptruckin.com>2020-06-05 13:33:30 -0700
commitc0810058bee79ce9b2959657d0fb13882e3b9bbc (patch)
treed85d2c9fe97c2ed9090d0f51af36160deec9fd53 /pkgs/development/libraries/nanopb
parent47361447f89a1abd36365ea8da7822eeb8b58d3c (diff)
downloadnixpkgs-c0810058bee79ce9b2959657d0fb13882e3b9bbc.tar
nixpkgs-c0810058bee79ce9b2959657d0fb13882e3b9bbc.tar.gz
nixpkgs-c0810058bee79ce9b2959657d0fb13882e3b9bbc.tar.bz2
nixpkgs-c0810058bee79ce9b2959657d0fb13882e3b9bbc.tar.lz
nixpkgs-c0810058bee79ce9b2959657d0fb13882e3b9bbc.tar.xz
nixpkgs-c0810058bee79ce9b2959657d0fb13882e3b9bbc.tar.zst
nixpkgs-c0810058bee79ce9b2959657d0fb13882e3b9bbc.zip
nanopb: add tests via passthru.tests
Diffstat (limited to 'pkgs/development/libraries/nanopb')
-rw-r--r--pkgs/development/libraries/nanopb/default.nix7
-rw-r--r--pkgs/development/libraries/nanopb/test-message-with-annotations/default.nix27
-rw-r--r--pkgs/development/libraries/nanopb/test-message-with-annotations/withannotations.proto7
-rw-r--r--pkgs/development/libraries/nanopb/test-message-with-options/default.nix27
-rw-r--r--pkgs/development/libraries/nanopb/test-message-with-options/withoptions.options1
-rw-r--r--pkgs/development/libraries/nanopb/test-message-with-options/withoptions.proto5
-rw-r--r--pkgs/development/libraries/nanopb/test-simple-proto2/default.nix24
-rw-r--r--pkgs/development/libraries/nanopb/test-simple-proto2/simple.proto5
-rw-r--r--pkgs/development/libraries/nanopb/test-simple-proto3/default.nix24
-rw-r--r--pkgs/development/libraries/nanopb/test-simple-proto3/simple.proto5
10 files changed, 132 insertions, 0 deletions
diff --git a/pkgs/development/libraries/nanopb/default.nix b/pkgs/development/libraries/nanopb/default.nix
index 92d56386f0f..a63d367b800 100644
--- a/pkgs/development/libraries/nanopb/default.nix
+++ b/pkgs/development/libraries/nanopb/default.nix
@@ -52,6 +52,13 @@ in stdenv.mkDerivation rec {
     chmod +x $out/bin/protoc-gen-nanopb
   '';
 
+  passthru.tests = {
+    simple-proto2 = callPackage ./test-simple-proto2 {};
+    simple-proto3 = callPackage ./test-simple-proto3 {};
+    message-with-annotations = callPackage ./test-message-with-annotations {};
+    message-with-options = callPackage ./test-message-with-options {};
+  };
+
   meta = with lib; {
     inherit (protobuf.meta) platforms;
 
diff --git a/pkgs/development/libraries/nanopb/test-message-with-annotations/default.nix b/pkgs/development/libraries/nanopb/test-message-with-annotations/default.nix
new file mode 100644
index 00000000000..618d7c521ce
--- /dev/null
+++ b/pkgs/development/libraries/nanopb/test-message-with-annotations/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, protobuf, nanopb }:
+
+stdenv.mkDerivation {
+  name = "nanopb-test-message-with-annotations";
+  meta.timeout = 60;
+  src = ./.;
+
+  # protoc requires any .proto file to be compiled to reside within it's
+  # proto_path. By default the current directory is automatically added to the
+  # proto_path. I tried using --proto_path ${./.} ${./simple.proto} and it did
+  # not work because they end up in the store at different locations.
+  installPhase = ":";
+  buildPhase = ''
+    mkdir $out
+
+    ${protobuf}/bin/protoc --proto_path=. --proto_path=${nanopb}/share/nanopb/generator/proto --plugin=protoc-gen-nanopb=${nanopb}/bin/protoc-gen-nanopb --nanopb_out=$out withannotations.proto
+  '';
+
+  docheck = true;
+  checkphase = ''
+    grep -q WithAnnotations $out/withannotations.pb.c || (echo "error: WithAnnotations not found in $out/withannotations.pb.c"; exit 1)
+    grep -q WithAnnotations $out/withannotations.pb.h || (echo "error: WithAnnotations not found in $out/withannotations.pb.h"; exit 1)
+    grep -q "pb_byte_t uuid\[16\]" $out/withannotations.pb.h || (echo "error: uuid is not of type pb_byte_t and of size 16 in $out/withannotations.pb.h"; exit 1)
+    grep -q "FIXED_LENGTH_BYTES, uuid" $out/withannotations.pb.h || (echo "error: uuid is not of fixed lenght bytes in $out/withannotations.pb.h"; exit 1)
+    grep -q "#define WithAnnotations_size" $out/withannotations.pb.h || (echo "error: the size of WithAnnotations is not known in $out/withannotations.pb.h"; exit 1)
+  '';
+}
diff --git a/pkgs/development/libraries/nanopb/test-message-with-annotations/withannotations.proto b/pkgs/development/libraries/nanopb/test-message-with-annotations/withannotations.proto
new file mode 100644
index 00000000000..d8109e877d6
--- /dev/null
+++ b/pkgs/development/libraries/nanopb/test-message-with-annotations/withannotations.proto
@@ -0,0 +1,7 @@
+syntax = "proto3";
+
+import "nanopb.proto";
+
+message WithAnnotations {
+  bytes uuid = 1 [(nanopb).max_size = 16, (nanopb).fixed_length = true];
+}
diff --git a/pkgs/development/libraries/nanopb/test-message-with-options/default.nix b/pkgs/development/libraries/nanopb/test-message-with-options/default.nix
new file mode 100644
index 00000000000..c15b51f7197
--- /dev/null
+++ b/pkgs/development/libraries/nanopb/test-message-with-options/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, protobuf, nanopb }:
+
+stdenv.mkDerivation {
+  name = "nanopb-test-message-with-options";
+  meta.timeout = 60;
+  src = ./.;
+
+  # protoc requires any .proto file to be compiled to reside within it's
+  # proto_path. By default the current directory is automatically added to the
+  # proto_path. I tried using --proto_path ${./.} ${./simple.proto} and it did
+  # not work because they end up in the store at different locations.
+  installPhase = ":";
+  buildPhase = ''
+    mkdir $out
+
+    ${protobuf}/bin/protoc --plugin=protoc-gen-nanopb=${nanopb}/bin/protoc-gen-nanopb --nanopb_out=$out withoptions.proto
+  '';
+
+  docheck = true;
+  checkphase = ''
+    grep -q WithOptions $out/withoptions.pb.c || (echo "error: WithOptions not found in $out/withoptions.pb.c"; exit 1)
+    grep -q WithOptions $out/withoptions.pb.h || (echo "error: WithOptions not found in $out/withoptions.pb.h"; exit 1)
+    grep -q "pb_byte_t uuid\[16\]" $out/withoptions.pb.h || (echo "error: uuid is not of type pb_byte_t and of size 16 in $out/withoptions.pb.h"; exit 1)
+    grep -q "FIXED_LENGTH_BYTES, uuid" $out/withoptions.pb.h || (echo "error: uuid is not of fixed lenght bytes in $out/withoptions.pb.h"; exit 1)
+    grep -q "#define WithOptions_size" $out/withoptions.pb.h || (echo "error: the size of WithOptions is not known in $out/withoptions.pb.h"; exit 1)
+  '';
+}
diff --git a/pkgs/development/libraries/nanopb/test-message-with-options/withoptions.options b/pkgs/development/libraries/nanopb/test-message-with-options/withoptions.options
new file mode 100644
index 00000000000..ecf98a21736
--- /dev/null
+++ b/pkgs/development/libraries/nanopb/test-message-with-options/withoptions.options
@@ -0,0 +1 @@
+ WithOptions.uuid max_size:16 fixed_length:true
diff --git a/pkgs/development/libraries/nanopb/test-message-with-options/withoptions.proto b/pkgs/development/libraries/nanopb/test-message-with-options/withoptions.proto
new file mode 100644
index 00000000000..5a5da3a1c97
--- /dev/null
+++ b/pkgs/development/libraries/nanopb/test-message-with-options/withoptions.proto
@@ -0,0 +1,5 @@
+syntax = "proto3";
+
+message WithOptions {
+  bytes uuid = 1;
+}
diff --git a/pkgs/development/libraries/nanopb/test-simple-proto2/default.nix b/pkgs/development/libraries/nanopb/test-simple-proto2/default.nix
new file mode 100644
index 00000000000..a915e778537
--- /dev/null
+++ b/pkgs/development/libraries/nanopb/test-simple-proto2/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, protobuf, nanopb }:
+
+stdenv.mkDerivation {
+  name = "nanopb-test-simple-proto2";
+  meta.timeout = 60;
+  src = ./.;
+
+  # protoc requires any .proto file to be compiled to reside within it's
+  # proto_path. By default the current directory is automatically added to the
+  # proto_path. I tried using --proto_path ${./.} ${./simple.proto} and it did
+  # not work because they end up in the store at different locations.
+  installPhase = ":";
+  buildPhase = ''
+    mkdir $out
+
+    ${protobuf}/bin/protoc --plugin=protoc-gen-nanopb=${nanopb}/bin/protoc-gen-nanopb --nanopb_out=$out simple.proto
+  '';
+
+  doCheck = true;
+  checkPhase = ''
+    grep -q SimpleMessage $out/simple.pb.c || (echo "ERROR: SimpleMessage not found in $out/simple.pb.c"; exit 1)
+    grep -q SimpleMessage $out/simple.pb.h || (echo "ERROR: SimpleMessage not found in $out/simple.pb.h"; exit 1)
+  '';
+}
diff --git a/pkgs/development/libraries/nanopb/test-simple-proto2/simple.proto b/pkgs/development/libraries/nanopb/test-simple-proto2/simple.proto
new file mode 100644
index 00000000000..b02936b1ae2
--- /dev/null
+++ b/pkgs/development/libraries/nanopb/test-simple-proto2/simple.proto
@@ -0,0 +1,5 @@
+syntax = "proto2";
+
+message SimpleMessage {
+  required int32 lucky_number = 1;
+}
diff --git a/pkgs/development/libraries/nanopb/test-simple-proto3/default.nix b/pkgs/development/libraries/nanopb/test-simple-proto3/default.nix
new file mode 100644
index 00000000000..3e2bba731b9
--- /dev/null
+++ b/pkgs/development/libraries/nanopb/test-simple-proto3/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, protobuf, nanopb }:
+
+stdenv.mkDerivation {
+  name = "nanopb-test-simple-proto3";
+  meta.timeout = 60;
+  src = ./.;
+
+  # protoc requires any .proto file to be compiled to reside within it's
+  # proto_path. By default the current directory is automatically added to the
+  # proto_path. I tried using --proto_path ${./.} ${./simple.proto} and it did
+  # not work because they end up in the store at different locations.
+  installPhase = ":";
+  buildPhase = ''
+    mkdir $out
+
+    ${protobuf}/bin/protoc --plugin=protoc-gen-nanopb=${nanopb}/bin/protoc-gen-nanopb --nanopb_out=$out simple.proto
+  '';
+
+  doCheck = true;
+  checkPhase = ''
+    grep -q SimpleMessage $out/simple.pb.c || (echo "ERROR: SimpleMessage not found in $out/simple.pb.c"; exit 1)
+    grep -q SimpleMessage $out/simple.pb.h || (echo "ERROR: SimpleMessage not found in $out/simple.pb.h"; exit 1)
+  '';
+}
diff --git a/pkgs/development/libraries/nanopb/test-simple-proto3/simple.proto b/pkgs/development/libraries/nanopb/test-simple-proto3/simple.proto
new file mode 100644
index 00000000000..6b99cdb5daa
--- /dev/null
+++ b/pkgs/development/libraries/nanopb/test-simple-proto3/simple.proto
@@ -0,0 +1,5 @@
+syntax = "proto3";
+
+message SimpleMessage {
+  int32 lucky_number = 1;
+}