f26e8c2ae0
This has one important packaging change: the netstandard version now depends (implicitly) on netstandard1.6.1 rather than on individual packages. This is the preferred style of dependency, and shouldn't affect any users - see http://stackoverflow.com/questions/42946951 for details. The tests are still NUnit, but NUnit doesn't support "dotnet test" yet; the test project is now an executable using NUnitLite. (When NUnit supports dotnet test, we can adapt to it.) Note that the project will now only work in Visual Studio 2017 (and Visual Studio Code, and from the command line with the .NET Core 1.0.0 SDK); Visual Studio 2015 does *not* support this project file format.
105 lines
3.3 KiB
Bash
Executable File
105 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
function run_test() {
|
|
# Generate test proto files.
|
|
./protoc_1 -Iprotos/src -I../../../src/ --csharp_out=src/Google.Protobuf.Test \
|
|
--csharp_opt=base_namespace=Google.Protobuf \
|
|
protos/src/google/protobuf/unittest_import_proto3.proto \
|
|
protos/src/google/protobuf/unittest_import_public_proto3.proto \
|
|
protos/src/google/protobuf/unittest_well_known_types.proto
|
|
|
|
./protoc_1 -Iprotos/csharp --csharp_out=src/Google.Protobuf.Test \
|
|
--csharp_opt=base_namespace=UnitTest.Issues \
|
|
protos/csharp/protos/unittest_issues.proto
|
|
|
|
./protoc_2 -Iprotos/src --csharp_out=src/Google.Protobuf.Test \
|
|
--csharp_opt=base_namespace=Google.Protobuf \
|
|
protos/src/google/protobuf/unittest_proto3.proto \
|
|
protos/src/google/protobuf/map_unittest_proto3.proto
|
|
|
|
# Build and test.
|
|
dotnet restore src/Google.Protobuf/Google.Protobuf.csproj
|
|
dotnet restore src/Google.Protobuf.Test/Google.Protobuf.Test.csproj
|
|
dotnet build -c Release src/Google.Protobuf/Google.Protobuf.csproj
|
|
dotnet build -c Release src/Google.Protobuf.Test/Google.Protobuf.Test.csproj
|
|
dotnet run -c Release -f netcoreapp1.0 -p src/Google.Protobuf.Test/Google.Protobuf.Test.csproj
|
|
}
|
|
|
|
set -ex
|
|
|
|
# Change to the script's directory.
|
|
cd $(dirname $0)
|
|
|
|
# Version of the tests (i.e., the version of protobuf from where we extracted
|
|
# these tests).
|
|
TEST_VERSION=3.0.0
|
|
|
|
# The old version of protobuf that we are testing compatibility against. This
|
|
# is usually the same as TEST_VERSION (i.e., we use the tests extracted from
|
|
# that version to test compatibility of the newest runtime against it), but it
|
|
# is also possible to use this same test set to test the compatibiilty of the
|
|
# latest version against other versions.
|
|
case "$1" in
|
|
""|3.0.0)
|
|
OLD_VERSION=3.0.0
|
|
OLD_VERSION_PROTOC=http://repo1.maven.org/maven2/com/google/protobuf/protoc/3.0.0/protoc-3.0.0-linux-x86_64.exe
|
|
;;
|
|
3.0.2)
|
|
OLD_VERSION=3.0.2
|
|
OLD_VERSION_PROTOC=http://repo1.maven.org/maven2/com/google/protobuf/protoc/3.0.2/protoc-3.0.2-linux-x86_64.exe
|
|
;;
|
|
3.1.0)
|
|
OLD_VERSION=3.1.0
|
|
OLD_VERSION_PROTOC=http://repo1.maven.org/maven2/com/google/protobuf/protoc/3.1.0/protoc-3.1.0-linux-x86_64.exe
|
|
;;
|
|
*)
|
|
echo "[ERROR]: Unknown version number: $1"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
echo "Running compatibility tests with $OLD_VERSION"
|
|
|
|
# Check protoc
|
|
[ -f ../../../src/protoc ] || {
|
|
echo "[ERROR]: Please build protoc first."
|
|
exit 1
|
|
}
|
|
|
|
# Download old version protoc compiler (for linux).
|
|
wget $OLD_VERSION_PROTOC -O old_protoc
|
|
chmod +x old_protoc
|
|
|
|
# Test source compatibility. In these tests we recompile everything against
|
|
# the new runtime (including old version generated code).
|
|
# Copy the new runtime and keys.
|
|
cp ../../src/Google.Protobuf src/Google.Protobuf -r
|
|
cp ../../keys . -r
|
|
|
|
# Test A.1:
|
|
# proto set 1: use old version
|
|
# proto set 2 which may import protos in set 1: use old version
|
|
cp old_protoc protoc_1
|
|
cp old_protoc protoc_2
|
|
run_test
|
|
|
|
# Test A.2:
|
|
# proto set 1: use new version
|
|
# proto set 2 which may import protos in set 1: use old version
|
|
cp ../../../src/protoc protoc_1
|
|
cp old_protoc protoc_2
|
|
run_test
|
|
|
|
# Test A.3:
|
|
# proto set 1: use old version
|
|
# proto set 2 which may import protos in set 1: use new version
|
|
cp old_protoc protoc_1
|
|
cp ../../../src/protoc protoc_2
|
|
run_test
|
|
|
|
rm protoc_1
|
|
rm protoc_2
|
|
rm old_protoc
|
|
rm keys -r
|
|
rm src/Google.Protobuf -r
|