From 56a977d4363a1af3a0944dfdafcef01636a642ee Mon Sep 17 00:00:00 2001 From: Xin Pan Date: Mon, 27 Aug 2018 18:11:06 +0800 Subject: [PATCH] add test --- paddle/fluid/framework/CMakeLists.txt | 2 ++ paddle/fluid/framework/version_test.cc | 26 ++++++++++++++++++++++++++ paddle/fluid/pybind/pybind.cc | 3 +++ python/paddle/fluid/io.py | 2 +- 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 paddle/fluid/framework/version_test.cc diff --git a/paddle/fluid/framework/CMakeLists.txt b/paddle/fluid/framework/CMakeLists.txt index 8af9a8f68a..1c9130305c 100644 --- a/paddle/fluid/framework/CMakeLists.txt +++ b/paddle/fluid/framework/CMakeLists.txt @@ -118,6 +118,8 @@ endif(NOT WIN32) cc_test(operator_test SRCS operator_test.cc DEPS operator op_registry device_context) cc_library(version SRCS version.cc) +cc_test(version_test SRCS version_test.cc DEPS version) + cc_library(proto_desc SRCS var_desc.cc op_desc.cc block_desc.cc program_desc.cc DEPS shape_inference op_info operator glog version) cc_library(op_registry SRCS op_registry.cc DEPS op_proto_maker op_info operator glog proto_desc) diff --git a/paddle/fluid/framework/version_test.cc b/paddle/fluid/framework/version_test.cc new file mode 100644 index 0000000000..cc57f713d8 --- /dev/null +++ b/paddle/fluid/framework/version_test.cc @@ -0,0 +1,26 @@ +// Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "paddle/fluid/framework/version.h" +#include "gtest/gtest.h" + +namespace paddle { +namespace framework { +TEST(Variable, GetMutable) { + EXPECT_TRUE(IsProgramVersionSupported(0)); + EXPECT_FALSE(IsProgramVersionSupported(1)); + EXPECT_FALSE(IsProgramVersionSupported(-1)); +} +} // namespace framework +} // namespace paddle diff --git a/paddle/fluid/pybind/pybind.cc b/paddle/fluid/pybind/pybind.cc index 191241de7d..6d85d01477 100644 --- a/paddle/fluid/pybind/pybind.cc +++ b/paddle/fluid/pybind/pybind.cc @@ -33,6 +33,7 @@ limitations under the License. */ #include "paddle/fluid/framework/prune.h" #include "paddle/fluid/framework/reader.h" #include "paddle/fluid/framework/selected_rows.h" +#include "paddle/fluid/framework/version.h" #include "paddle/fluid/operators/activation_op.h" #include "paddle/fluid/operators/reader/lod_tensor_blocking_queue.h" #include "paddle/fluid/platform/enforce.h" @@ -534,6 +535,8 @@ All parameter, weight, gradient are variables in Paddle. m.def("set_feed_variable", framework::SetFeedVariable); m.def("get_fetch_variable", framework::GetFetchVariable); + m.def("_is_program_version_supported", IsProgramVersionSupported); + BindProgramDesc(&m); BindBlockDesc(&m); BindVarDsec(&m); diff --git a/python/paddle/fluid/io.py b/python/paddle/fluid/io.py index f72ca0a8d5..3e02e14167 100644 --- a/python/paddle/fluid/io.py +++ b/python/paddle/fluid/io.py @@ -751,7 +751,7 @@ def load_inference_model(dirname, program = Program.parse_from_string(program_desc_str) # TODO(panyx0718): Link to our version and compatibility guide. - if program._version() != 0: + if not core._is_program_version_supported(program._version()): raise ValueError("Unsupported program version: %d\n" % program._version()) # Binary data also need versioning. -- GitLab