mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-19 06:23:04 +00:00
Add the file a symbol is declared in to Reflection (#6613)
* Add the file a symbol is declared in to Reflection If we move a code-generator to depend on Reflection, it may need to know which file something was declared in to properly name generated files. * Doc comments in reflection, and more precise tests * Add --project-root flag to flatc, normalize declaraion_file to this root * fix --project-root stuff * posixpath * fix scripts * format * rename --project-root to --bfbs-filenames Also, make it optional, rather than defaulting to `./`, if its not specified, then don't serialize the filenames. * bfbs generation * fix some tests * uncomment a thing * add to project root directory conditionally * fix * git clang format * Added help description and removed != nullptr * " * Remove accidental change to docs * Remove accidental change to docs * Pool strings Co-authored-by: Casper Neo <cneo@google.com>
This commit is contained in:
Binary file not shown.
@@ -53,7 +53,7 @@ set TEST_NOINCL_FLAGS=%TEST_BASE_FLAGS% --no-includes
|
||||
..\%buildtype%\flatc.exe --ts --gen-name-strings %TEST_BASE_FLAGS% %TEST_TS_FLAGS% -o union_vector union_vector/union_vector.fbs
|
||||
..\%buildtype%\flatc.exe --rust -I include_test -o include_test include_test/include_test1.fbs || goto FAIL
|
||||
..\%buildtype%\flatc.exe --rust -I include_test -o include_test/sub include_test/sub/include_test2.fbs || goto FAIL
|
||||
..\%buildtype%\flatc.exe -b --schema --bfbs-comments --bfbs-builtins -I include_test monster_test.fbs || goto FAIL
|
||||
..\%buildtype%\flatc.exe -b --schema --bfbs-comments --bfbs-filenames . --bfbs-builtins -I include_test monster_test.fbs || goto FAIL
|
||||
..\%buildtype%\flatc.exe --cpp --bfbs-comments --bfbs-builtins --bfbs-gen-embed %TEST_NOINCL_FLAGS% %TEST_CPP_FLAGS% -I include_test monster_test.fbs || goto FAIL
|
||||
..\%buildtype%\flatc.exe -b --schema --bfbs-comments --bfbs-builtins -I include_test arrays_test.fbs || goto FAIL
|
||||
..\%buildtype%\flatc.exe --jsonschema --schema -I include_test monster_test.fbs || goto FAIL
|
||||
|
||||
@@ -50,7 +50,7 @@ $TEST_NOINCL_FLAGS $TEST_CPP_FLAGS $TEST_CS_FLAGS $TEST_TS_FLAGS -o namespace_te
|
||||
../flatc --ts --gen-name-strings $TEST_BASE_FLAGS $TEST_TS_FLAGS -o union_vector union_vector/union_vector.fbs
|
||||
../flatc --rust -I include_test -o include_test include_test/include_test1.fbs
|
||||
../flatc --rust -I include_test -o include_test/sub include_test/sub/include_test2.fbs
|
||||
../flatc -b --schema --bfbs-comments --bfbs-builtins -I include_test monster_test.fbs
|
||||
../flatc -b --schema --bfbs-comments --bfbs-filenames . --bfbs-builtins -I include_test monster_test.fbs
|
||||
../flatc --cpp --bfbs-comments --bfbs-builtins --bfbs-gen-embed $TEST_NOINCL_FLAGS $TEST_CPP_FLAGS -I include_test monster_test.fbs
|
||||
../flatc -b --schema --bfbs-comments --bfbs-builtins -I include_test arrays_test.fbs
|
||||
../flatc --jsonschema --schema -I include_test monster_test.fbs
|
||||
@@ -72,10 +72,10 @@ $TEST_NOINCL_FLAGS $TEST_CPP_FLAGS $TEST_CS_FLAGS $TEST_TS_FLAGS -o namespace_te
|
||||
|
||||
working_dir=`pwd`
|
||||
cd FlatBuffers.Test.Swift/Tests/FlatBuffers.Test.SwiftTests
|
||||
$working_dir/../flatc --swift --grpc $TEST_NOINCL_FLAGS $TEST_CPP_FLAGS $TEST_CS_FLAGS -I ${working_dir}/include_test ${working_dir}/monster_test.fbs
|
||||
$working_dir/../flatc --swift $TEST_BASE_FLAGS $TEST_CPP_FLAGS $TEST_CS_FLAGS ${working_dir}/union_vector/union_vector.fbs
|
||||
$working_dir/../flatc --swift ${working_dir}/optional_scalars.fbs
|
||||
$working_dir/../flatc --swift --gen-object-api ${working_dir}/more_defaults.fbs
|
||||
$working_dir/../flatc --bfbs-filenames $working_dir --swift --grpc $TEST_NOINCL_FLAGS $TEST_CPP_FLAGS $TEST_CS_FLAGS -I ${working_dir}/include_test ${working_dir}/monster_test.fbs
|
||||
$working_dir/../flatc --bfbs-filenames $working_dir --swift $TEST_BASE_FLAGS $TEST_CPP_FLAGS $TEST_CS_FLAGS ${working_dir}/union_vector/union_vector.fbs
|
||||
$working_dir/../flatc --bfbs-filenames $working_dir --swift ${working_dir}/optional_scalars.fbs
|
||||
$working_dir/../flatc --bfbs-filenames $working_dir --swift --gen-object-api ${working_dir}/more_defaults.fbs
|
||||
cd $working_dir
|
||||
|
||||
# Tests if the --filename-suffix and --filename-ext works and produces the same
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,5 @@
|
||||
fn main() {
|
||||
use std::process::Command;
|
||||
|
||||
let project_root = std::env::current_dir()
|
||||
.unwrap()
|
||||
.parent() // flatbuffers/tests/rust_usage test
|
||||
@@ -10,7 +9,6 @@ fn main() {
|
||||
.parent() // flatbuffers/
|
||||
.unwrap()
|
||||
.to_path_buf();
|
||||
|
||||
let sample_schema = {
|
||||
let mut s = project_root.to_path_buf();
|
||||
s.push("samples");
|
||||
@@ -35,5 +33,6 @@ fn main() {
|
||||
.expect("Failed to generate file");
|
||||
|
||||
let genfile = "monster_gen.rs";
|
||||
std::fs::rename(&genfile, out_dir.join("monster_generated.rs")).unwrap();
|
||||
std::fs::rename(&genfile, out_dir.join("monster_generated.rs"))
|
||||
.expect("Could not rename monster_ge.rs to monster_generated.rs");
|
||||
}
|
||||
|
||||
@@ -919,7 +919,30 @@ void ReflectionTest(uint8_t *flatbuf, size_t length) {
|
||||
// Make sure the schema is what we expect it to be.
|
||||
auto &schema = *reflection::GetSchema(bfbsfile.c_str());
|
||||
auto root_table = schema.root_table();
|
||||
// Check the declaration files.
|
||||
TEST_EQ_STR(root_table->name()->c_str(), "MyGame.Example.Monster");
|
||||
TEST_EQ_STR(root_table->declaration_file()->c_str(), "//monster_test.fbs");
|
||||
TEST_EQ_STR(
|
||||
schema.objects()->LookupByKey("TableA")->declaration_file()->c_str(),
|
||||
"//include_test/include_test1.fbs");
|
||||
TEST_EQ_STR(schema.objects()
|
||||
->LookupByKey("MyGame.OtherNameSpace.Unused")
|
||||
->declaration_file()
|
||||
->c_str(),
|
||||
"//include_test/sub/include_test2.fbs");
|
||||
TEST_EQ_STR(schema.enums()
|
||||
->LookupByKey("MyGame.OtherNameSpace.FromInclude")
|
||||
->declaration_file()
|
||||
->c_str(),
|
||||
"//include_test/sub/include_test2.fbs");
|
||||
TEST_EQ(schema.fbs_files()->size(), 3);
|
||||
TEST_EQ_STR(schema.fbs_files()->Get(0)->c_str(),
|
||||
"//include_test/include_test1.fbs");
|
||||
TEST_EQ_STR(schema.fbs_files()->Get(1)->c_str(),
|
||||
"//include_test/sub/include_test2.fbs");
|
||||
TEST_EQ_STR(schema.fbs_files()->Get(2)->c_str(), "//monster_test.fbs");
|
||||
|
||||
// Check Root table fields
|
||||
auto fields = root_table->fields();
|
||||
auto hp_field_ptr = fields->LookupByKey("hp");
|
||||
TEST_NOTNULL(hp_field_ptr);
|
||||
@@ -1290,6 +1313,7 @@ void ParseProtoTestWithIncludes() {
|
||||
flatbuffers::IDLOptions opts;
|
||||
opts.include_dependence_headers = true;
|
||||
opts.proto_mode = true;
|
||||
opts.project_root = test_data_path;
|
||||
|
||||
// Parse proto.
|
||||
flatbuffers::Parser parser(opts);
|
||||
@@ -1307,10 +1331,16 @@ void ParseProtoTestWithIncludes() {
|
||||
auto import_fbs = flatbuffers::GenerateFBS(import_parser, "test");
|
||||
|
||||
// Ensure generated file is parsable.
|
||||
flatbuffers::Parser parser2;
|
||||
TEST_EQ(
|
||||
parser2.Parse(import_fbs.c_str(), include_directories, "imported.fbs"),
|
||||
true);
|
||||
flatbuffers::IDLOptions opts2;
|
||||
opts2.project_root = protopath;
|
||||
flatbuffers::Parser parser2(opts2);
|
||||
// Since `imported.fbs` isn't in the filesystem AbsolutePath can't figure it
|
||||
// out by itself. We manually construct it so Parser works.
|
||||
std::string imported_fbs = flatbuffers::PosixPath(
|
||||
flatbuffers::AbsolutePath(protopath) + "/imported.fbs");
|
||||
TEST_EQ(parser2.Parse(import_fbs.c_str(), include_directories,
|
||||
imported_fbs.c_str()),
|
||||
true);
|
||||
TEST_EQ(parser2.Parse(fbs.c_str(), nullptr), true);
|
||||
TEST_EQ_STR(fbs.c_str(), goldenfile.c_str());
|
||||
|
||||
@@ -1324,7 +1354,8 @@ void ParseProtoTestWithIncludes() {
|
||||
|
||||
// Ensure generated file is parsable.
|
||||
flatbuffers::Parser parser4;
|
||||
TEST_EQ(parser4.Parse(import_fbs.c_str(), nullptr, "imported.fbs"), true);
|
||||
TEST_EQ(parser4.Parse(import_fbs.c_str(), nullptr, imported_fbs.c_str()),
|
||||
true);
|
||||
TEST_EQ(parser4.Parse(fbs_union.c_str(), nullptr), true);
|
||||
TEST_EQ_STR(fbs_union.c_str(), goldenunionfile.c_str());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user