|  | @@ -29,6 +29,7 @@
 | 
	
		
			
				|  |  |  // 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>
 | 
	
	
		
			
				|  | @@ -56,7 +57,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.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -TEST(RubyGeneratorTest, Proto3GeneratorTest) {
 | 
	
		
			
				|  |  | +void RubyTest(string proto_file) {
 | 
	
		
			
				|  |  |    string ruby_tests = FindRubyTestDir();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    google::protobuf::compiler::CommandLineInterface cli;
 | 
	
	
		
			
				|  | @@ -68,22 +69,23 @@ TEST(RubyGeneratorTest, Proto3GeneratorTest) {
 | 
	
		
			
				|  |  |    // Copy generated_code.proto to the temporary test directory.
 | 
	
		
			
				|  |  |    string test_input;
 | 
	
		
			
				|  |  |    GOOGLE_CHECK_OK(File::GetContents(
 | 
	
		
			
				|  |  | -      ruby_tests + "/ruby_generated_code.proto",
 | 
	
		
			
				|  |  | +      ruby_tests + proto_file + ".proto",
 | 
	
		
			
				|  |  |        &test_input,
 | 
	
		
			
				|  |  |        true));
 | 
	
		
			
				|  |  |    GOOGLE_CHECK_OK(File::SetContents(
 | 
	
		
			
				|  |  | -      TestTempDir() + "/ruby_generated_code.proto",
 | 
	
		
			
				|  |  | +      TestTempDir() + proto_file + ".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(),
 | 
	
		
			
				|  |  | -    "ruby_generated_code.proto",
 | 
	
		
			
				|  |  | +    proto_target.c_str(),
 | 
	
		
			
				|  |  |    };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    EXPECT_EQ(0, cli.Run(4, argv));
 | 
	
	
		
			
				|  | @@ -91,61 +93,35 @@ TEST(RubyGeneratorTest, Proto3GeneratorTest) {
 | 
	
		
			
				|  |  |    // Load the generated output and compare to the expected result.
 | 
	
		
			
				|  |  |    string output;
 | 
	
		
			
				|  |  |    GOOGLE_CHECK_OK(File::GetContentsAsText(
 | 
	
		
			
				|  |  | -      TestTempDir() + "/ruby_generated_code_pb.rb",
 | 
	
		
			
				|  |  | +      TestTempDir() + proto_file + "_pb.rb",
 | 
	
		
			
				|  |  |        &output,
 | 
	
		
			
				|  |  |        true));
 | 
	
		
			
				|  |  |    string expected_output;
 | 
	
		
			
				|  |  |    GOOGLE_CHECK_OK(File::GetContentsAsText(
 | 
	
		
			
				|  |  | -      ruby_tests + "/ruby_generated_code_pb.rb",
 | 
	
		
			
				|  |  | +      ruby_tests + proto_file + "_pb.rb",
 | 
	
		
			
				|  |  |        &expected_output,
 | 
	
		
			
				|  |  |        true));
 | 
	
		
			
				|  |  |    EXPECT_EQ(expected_output, output);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -TEST(RubyGeneratorTest, Proto2GeneratorTest) {
 | 
	
		
			
				|  |  | -  string ruby_tests = FindRubyTestDir();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  google::protobuf::compiler::CommandLineInterface cli;
 | 
	
		
			
				|  |  | -  cli.SetInputsAreProtoPathRelative(true);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  ruby::Generator ruby_generator;
 | 
	
		
			
				|  |  | -  cli.RegisterGenerator("--ruby_out", &ruby_generator, "");
 | 
	
		
			
				|  |  | +TEST(RubyGeneratorTest, Proto3GeneratorTest) {
 | 
	
		
			
				|  |  | +  RubyTest("/ruby_generated_code");
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  // 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, Proto2GeneratorTest) {
 | 
	
		
			
				|  |  | +    RubyTest("/ruby_generated_code_proto2");
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  // 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",
 | 
	
		
			
				|  |  | -  };
 | 
	
		
			
				|  |  | +TEST(RubyGeneratorTest, Proto3ImplicitPackageTest) {
 | 
	
		
			
				|  |  | +    RubyTest("/ruby_generated_pkg_implicit");
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  EXPECT_EQ(0, cli.Run(4, argv));
 | 
	
		
			
				|  |  | +TEST(RubyGeneratorTest, Proto3ExplictPackageTest) {
 | 
	
		
			
				|  |  | +    RubyTest("/ruby_generated_pkg_explicit");
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  // 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);
 | 
	
		
			
				|  |  | +TEST(RubyGeneratorTest, Proto3ExplictLegacyPackageTest) {
 | 
	
		
			
				|  |  | +    RubyTest("/ruby_generated_pkg_explicit_legacy");
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  }  // namespace
 |