Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
P
protobuf
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
protobuf
Commits
b0670dda
Commit
b0670dda
authored
Jan 15, 2015
by
Chris Fallin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix golden-file Ruby test to work with out-of-tree builds.
parent
3f3820d8
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
41 additions
and
34 deletions
+41
-34
Makefile.am
Makefile.am
+5
-1
ruby_generator_unittest.cc
src/google/protobuf/compiler/ruby/ruby_generator_unittest.cc
+36
-33
No files found.
Makefile.am
View file @
b0670dda
...
...
@@ -245,6 +245,7 @@ ruby_EXTRA_DIST= \
ruby/ext/google/protobuf_c/defs.c
\
ruby/ext/google/protobuf_c/encode_decode.c
\
ruby/ext/google/protobuf_c/extconf.rb
\
ruby/ext/google/protobuf_c/map.c
\
ruby/ext/google/protobuf_c/message.c
\
ruby/ext/google/protobuf_c/protobuf.c
\
ruby/ext/google/protobuf_c/protobuf.h
\
...
...
@@ -255,7 +256,10 @@ ruby_EXTRA_DIST= \
ruby/google-protobuf.gemspec
\
ruby/lib/google/protobuf.rb
\
ruby/tests/basic.rb
\
ruby/tests/stress.rb
ruby/tests/stress.rb
\
ruby/tests/generated_code.proto
\
ruby/tests/generated_code.rb
\
ruby/tests/generated_code_test.rb
all_EXTRA_DIST
=
$(java_EXTRA_DIST)
$(python_EXTRA_DIST)
$(ruby_EXTRA_DIST)
...
...
src/google/protobuf/compiler/ruby/ruby_generator_unittest.cc
View file @
b0670dda
...
...
@@ -42,33 +42,22 @@
namespace
google
{
namespace
protobuf
{
namespace
compiler
{
namespace
python
{
namespace
ruby
{
namespace
{
class
TestGenerator
:
public
CodeGenerator
{
public
:
TestGenerator
()
{}
~
TestGenerator
()
{}
virtual
bool
Generate
(
const
FileDescriptor
*
file
,
const
string
&
parameter
,
GeneratorContext
*
context
,
string
*
error
)
const
{
TryInsert
(
"test_pb2.py"
,
"imports"
,
context
);
TryInsert
(
"test_pb2.py"
,
"module_scope"
,
context
);
TryInsert
(
"test_pb2.py"
,
"class_scope:foo.Bar"
,
context
);
TryInsert
(
"test_pb2.py"
,
"class_scope:foo.Bar.Baz"
,
context
);
return
true
;
}
void
TryInsert
(
const
string
&
filename
,
const
string
&
insertion_point
,
GeneratorContext
*
context
)
const
{
google
::
protobuf
::
scoped_ptr
<
io
::
ZeroCopyOutputStream
>
output
(
context
->
OpenForInsert
(
filename
,
insertion_point
));
io
::
Printer
printer
(
output
.
get
(),
'$'
);
printer
.
Print
(
"// inserted $name$
\n
"
,
"name"
,
insertion_point
);
string
FindRubyTestDir
()
{
// Inspired by TestSourceDir() in src/google/protobuf/testing/googletest.cc.
string
prefix
=
"."
;
while
(
!
File
::
Exists
(
prefix
+
"/ruby/tests"
))
{
if
(
!
File
::
Exists
(
prefix
))
{
GOOGLE_LOG
(
FATAL
)
<<
"Could not find Ruby test directory. Please run tests from "
"somewhere within the protobuf source package."
;
}
prefix
+=
"/.."
;
}
};
return
prefix
+
"/ruby/tests"
;
}
// This test is a simple golden-file test over the output of the Ruby code
// generator. When we make changes to the Ruby extension and alter the Ruby code
...
...
@@ -78,39 +67,53 @@ class TestGenerator : public CodeGenerator {
// extensions to the point where we can do this test in a more automated way.
TEST
(
RubyGeneratorTest
,
GeneratorTest
)
{
string
ruby_tests
=
FindRubyTestDir
();
google
::
protobuf
::
compiler
::
CommandLineInterface
cli
;
cli
.
SetInputsAreProtoPathRelative
(
true
);
ruby
::
Generator
ruby_generator
;
cli
.
RegisterGenerator
(
"--ruby_out"
,
&
ruby_generator
,
""
);
string
path_arg
=
"-I"
+
TestSourceDir
()
+
"/ruby/tests"
;
// Copy generated_code.proto to the temporary test directory.
string
test_input
;
GOOGLE_CHECK_OK
(
File
::
GetContents
(
ruby_tests
+
"/generated_code.proto"
,
&
test_input
,
true
));
GOOGLE_CHECK_OK
(
File
::
SetContents
(
TestTempDir
()
+
"/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
();
const
char
*
argv
[]
=
{
"protoc"
,
path_arg
.
c_str
(),
ruby_out
.
c_str
(),
proto_path
.
c_str
(),
"generated_code.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
()
+
"/generated_code.rb"
,
&
output
,
true
));
GOOGLE_CHECK_OK
(
File
::
GetContents
(
TestTempDir
()
+
"/generated_code.rb"
,
&
output
,
true
));
string
expected_output
;
GOOGLE_CHECK_OK
(
File
::
GetContents
(
TestSourceDir
()
+
"/ruby/tests
/generated_code.rb"
,
ruby_tests
+
"
/generated_code.rb"
,
&
expected_output
,
true
));
EXPECT_EQ
(
expected_output
,
output
);
}
}
// namespace
}
// namespace
python
}
// namespace
ruby
}
// namespace compiler
}
// namespace protobuf
}
// namespace google
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment