README.md
1 Protocol Buffers - Google's data interchange format
2 ===================================================
3
4 [![Build Status](https://travis-ci.org/google/protobuf.svg?branch=master)](https://travis-ci.org/google/protobuf)
5
6 Copyright 2008 Google Inc.
7
8 This directory contains conformance tests for testing completeness and
9 correctness of Protocol Buffers implementations. These tests are designed
10 to be easy to run against any Protocol Buffers implementation.
11
12 This directory contains the tester process `conformance-test`, which
13 contains all of the tests themselves. Then separate programs written
14 in whatever language you want to test communicate with the tester
15 program over a pipe.
16
17 Before running any of these tests, make sure you run `make` in the base
18 directory to build `protoc`, since all the tests depend on it.
19
20 $ make
21
22 Then to run the tests against the C++ implementation, run:
23
24 $ cd conformance && make test_cpp
25
26 More tests and languages will be added soon!
27
28 Testing other Protocol Buffer implementations
29 ---------------------------------------------
30
31 To run these tests against a new Protocol Buffers implementation, write a
32 program in your language that uses the protobuf implementation you want
33 to test. This program should implement the testing protocol defined in
34 [conformance.proto](https://github.com/google/protobuf/blob/master/conformance/conformance.proto).
35 This is designed to be as easy as possible: the C++ version is only
36 150 lines and is a good example for what this program should look like
37 (see [conformance_cpp.cc](https://github.com/google/protobuf/blob/master/conformance/conformance_cpp.cc)).
38 The program only needs to be able to read from stdin and write to stdout.
39
40 Portability
41 -----------
42
43 Note that the test runner currently does not work on Windows. Patches
44 to fix this are welcome! (But please get in touch first to settle on
45 a general implementation strategy).
46