|
@@ -29,7 +29,6 @@
|
|
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
|
#include <memory>
|
|
|
-#include <list>
|
|
|
|
|
|
#include <google/protobuf/compiler/ruby/ruby_generator.h>
|
|
|
#include <google/protobuf/compiler/command_line_interface.h>
|
|
@@ -57,7 +56,7 @@ string FindRubyTestDir() {
|
|
|
// Some day, we may integrate build systems between protoc and the language
|
|
|
// extensions to the point where we can do this test in a more automated way.
|
|
|
|
|
|
-void RubyTest(string proto_file) {
|
|
|
+TEST(RubyGeneratorTest, Proto3GeneratorTest) {
|
|
|
string ruby_tests = FindRubyTestDir();
|
|
|
|
|
|
google::protobuf::compiler::CommandLineInterface cli;
|
|
@@ -69,23 +68,22 @@ void RubyTest(string proto_file) {
|
|
|
// Copy generated_code.proto to the temporary test directory.
|
|
|
string test_input;
|
|
|
GOOGLE_CHECK_OK(File::GetContents(
|
|
|
- ruby_tests + proto_file + ".proto",
|
|
|
+ ruby_tests + "/ruby_generated_code.proto",
|
|
|
&test_input,
|
|
|
true));
|
|
|
GOOGLE_CHECK_OK(File::SetContents(
|
|
|
- TestTempDir() + proto_file + ".proto",
|
|
|
+ TestTempDir() + "/ruby_generated_code.proto",
|
|
|
test_input,
|
|
|
true));
|
|
|
|
|
|
// Invoke the proto compiler (we will be inside TestTempDir() at this point).
|
|
|
string ruby_out = "--ruby_out=" + TestTempDir();
|
|
|
string proto_path = "--proto_path=" + TestTempDir();
|
|
|
- string proto_target = TestTempDir() + proto_file + ".proto";
|
|
|
const char* argv[] = {
|
|
|
"protoc",
|
|
|
ruby_out.c_str(),
|
|
|
proto_path.c_str(),
|
|
|
- proto_target.c_str(),
|
|
|
+ "ruby_generated_code.proto",
|
|
|
};
|
|
|
|
|
|
EXPECT_EQ(0, cli.Run(4, argv));
|
|
@@ -93,35 +91,61 @@ void RubyTest(string proto_file) {
|
|
|
// Load the generated output and compare to the expected result.
|
|
|
string output;
|
|
|
GOOGLE_CHECK_OK(File::GetContentsAsText(
|
|
|
- TestTempDir() + proto_file + "_pb.rb",
|
|
|
+ TestTempDir() + "/ruby_generated_code_pb.rb",
|
|
|
&output,
|
|
|
true));
|
|
|
string expected_output;
|
|
|
GOOGLE_CHECK_OK(File::GetContentsAsText(
|
|
|
- ruby_tests + proto_file + "_pb.rb",
|
|
|
+ ruby_tests + "/ruby_generated_code_pb.rb",
|
|
|
&expected_output,
|
|
|
true));
|
|
|
EXPECT_EQ(expected_output, output);
|
|
|
}
|
|
|
|
|
|
-TEST(RubyGeneratorTest, Proto3GeneratorTest) {
|
|
|
- RubyTest("/ruby_generated_code");
|
|
|
-}
|
|
|
-
|
|
|
TEST(RubyGeneratorTest, Proto2GeneratorTest) {
|
|
|
- RubyTest("/ruby_generated_code_proto2");
|
|
|
-}
|
|
|
+ string ruby_tests = FindRubyTestDir();
|
|
|
|
|
|
-TEST(RubyGeneratorTest, Proto3ImplicitPackageTest) {
|
|
|
- RubyTest("/ruby_generated_pkg_implicit");
|
|
|
-}
|
|
|
+ google::protobuf::compiler::CommandLineInterface cli;
|
|
|
+ cli.SetInputsAreProtoPathRelative(true);
|
|
|
|
|
|
-TEST(RubyGeneratorTest, Proto3ExplictPackageTest) {
|
|
|
- RubyTest("/ruby_generated_pkg_explicit");
|
|
|
-}
|
|
|
+ ruby::Generator ruby_generator;
|
|
|
+ cli.RegisterGenerator("--ruby_out", &ruby_generator, "");
|
|
|
+
|
|
|
+ // Copy generated_code.proto to the temporary test directory.
|
|
|
+ string test_input;
|
|
|
+ GOOGLE_CHECK_OK(File::GetContents(
|
|
|
+ ruby_tests + "/ruby_generated_code_proto2.proto",
|
|
|
+ &test_input,
|
|
|
+ true));
|
|
|
+ GOOGLE_CHECK_OK(File::SetContents(
|
|
|
+ TestTempDir() + "/ruby_generated_code_proto2.proto",
|
|
|
+ test_input,
|
|
|
+ true));
|
|
|
|
|
|
-TEST(RubyGeneratorTest, Proto3ExplictLegacyPackageTest) {
|
|
|
- RubyTest("/ruby_generated_pkg_explicit_legacy");
|
|
|
+ // Invoke the proto compiler (we will be inside TestTempDir() at this point).
|
|
|
+ string ruby_out = "--ruby_out=" + TestTempDir();
|
|
|
+ string proto_path = "--proto_path=" + TestTempDir();
|
|
|
+ const char* argv[] = {
|
|
|
+ "protoc",
|
|
|
+ ruby_out.c_str(),
|
|
|
+ proto_path.c_str(),
|
|
|
+ "ruby_generated_code_proto2.proto",
|
|
|
+ };
|
|
|
+
|
|
|
+ EXPECT_EQ(0, cli.Run(4, argv));
|
|
|
+
|
|
|
+ // Load the generated output and compare to the expected result.
|
|
|
+ string output;
|
|
|
+ GOOGLE_CHECK_OK(File::GetContents(
|
|
|
+ TestTempDir() + "/ruby_generated_code_proto2_pb.rb",
|
|
|
+ &output,
|
|
|
+ true));
|
|
|
+ string expected_output;
|
|
|
+ GOOGLE_CHECK_OK(File::GetContents(
|
|
|
+ ruby_tests + "/ruby_generated_code_proto2_pb.rb",
|
|
|
+ &expected_output,
|
|
|
+ true));
|
|
|
+ EXPECT_EQ(expected_output, output);
|
|
|
}
|
|
|
|
|
|
} // namespace
|