# Test correct relative paths and creation of intermediate directories # when input files are part of a multi-level directory structure: # # user@host:.../build$ nanopb_generator -D . -I ../proto ../proto/simple.proto # user@host:.../build$ nanopb_generator -D . -I ../proto ../proto/protobuf/any.proto # # should result in: # # |-- build # | |-- protobuf # | | +-- any.pb.c # | | +-- any.pb.h # | +-- simple.pb.c # | +-- simple.pb.h # +-- proto # |-- protobuf # | +-- any.proto # +-- simple.proto Import('env') import os, sys # As of 0.4.2, SCons rules still go through protoc that handles paths correctly # by itself. To test direct nanopb_generator usage we invoke it manually here. env.Command(["build/protobuf/any.pb.h", "build/simple.pb.h", "build/protobuf/any.pb.c", "build/simple.pb.c",], ["proto/protobuf/any.proto", "proto/simple.proto"], [ Delete("$BUILDDIR/generator_relative_paths/build"), Mkdir("$BUILDDIR/generator_relative_paths/build"), env['NANOPB_GENERATOR'] + " -D$BUILDDIR/generator_relative_paths/build -I$BUILDDIR/generator_relative_paths/proto $SOURCES" ]) env.Match("simple_pb_h_ok", ["build/simple.pb.h", "simple.expected"]) env.Match("simple_pb_c_ok", ["build/simple.pb.c", "simple.expected"]) env.Match("any_pb_h_ok", ["build/protobuf/any.pb.h", "any.expected"]) env.Match("any_pb_c_ok", ["build/protobuf/any.pb.c", "any.expected"]) # Test when not using -D env.Command(["test.pb.c", "test.pb.h"], "test.proto", env['NANOPB_GENERATOR'] + " test.proto", chdir = True) env.Match("test_pb_h_ok", ["test.pb.h", "test.expected"]) env.Match("test_pb_c_ok", ["test.pb.c", "test.expected"])