From 7f78912c9fa4e5b9b265738584a75e89a63513c1 Mon Sep 17 00:00:00 2001 From: hanchao Date: Mon, 5 Dec 2016 21:07:31 +0800 Subject: [PATCH 1/3] test code for issue #729 --- .../tests/configs/generate_protostr.sh | 2 + .../tests/configs/run_tests.sh | 11 +++-- .../test_config_parser_for_non_file_config.py | 40 +++++++++++++++++++ 3 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 python/paddle/trainer_config_helpers/tests/configs/test_config_parser_for_non_file_config.py diff --git a/python/paddle/trainer_config_helpers/tests/configs/generate_protostr.sh b/python/paddle/trainer_config_helpers/tests/configs/generate_protostr.sh index e55f9bd3884a90..a54af94ce3db4e 100755 --- a/python/paddle/trainer_config_helpers/tests/configs/generate_protostr.sh +++ b/python/paddle/trainer_config_helpers/tests/configs/generate_protostr.sh @@ -11,10 +11,12 @@ for conf in ${configs[*]} do echo "Generating " $conf python -m paddle.utils.dump_config $conf.py > $protostr/$conf.protostr.unittest + cat ${conf}.py |python test_config_parser_for_non_file_config.py > $protostr/$conf.protostr.non_file_config.unittest done for conf in ${whole_configs[*]} do echo "Generating " $conf python -m paddle.utils.dump_config $conf.py "" --whole > $protostr/$conf.protostr.unittest + cat ${conf}.py |python test_config_parser_for_non_file_config.py --whole > $protostr/$conf.protostr.non_file_config.unittest done diff --git a/python/paddle/trainer_config_helpers/tests/configs/run_tests.sh b/python/paddle/trainer_config_helpers/tests/configs/run_tests.sh index 73f8b333b236a8..ed2ac6ed18be52 100755 --- a/python/paddle/trainer_config_helpers/tests/configs/run_tests.sh +++ b/python/paddle/trainer_config_helpers/tests/configs/run_tests.sh @@ -16,20 +16,23 @@ if [ -z $1 ]; then do base_protostr=$protostr/$file new_protostr=$protostr/$file.unittest - diff $base_protostr $new_protostr -u + diff $base_protostr $new_protostr -u && + diff $protostr/$file $protostr/$file.non_file_config.unittest -u done else for file in ${configs[*]} do if ! $1 $protostr/$file.protostr $protostr/$file.protostr.unittest; then - diff $protostr/$file.protostr $protostr/$file.protostr.unittest -u + diff $protostr/$file.protostr $protostr/$file.protostr.unittest -u && + diff $protostr/$file.protostr $protostr/$file.protostr.non_file_config.unittest -u fi done for file in ${whole_configs[*]} - do +do if ! $1 $protostr/$file.protostr $protostr/$file.protostr.unittest --whole; then - diff $protostr/$file.protostr $protostr/$file.protostr.unittest -u + diff $protostr/$file.protostr $protostr/$file.protostr.unittest -u && + diff $protostr/$file.protostr $protostr/$file.protostr.non_file_config.unittest -u fi done fi diff --git a/python/paddle/trainer_config_helpers/tests/configs/test_config_parser_for_non_file_config.py b/python/paddle/trainer_config_helpers/tests/configs/test_config_parser_for_non_file_config.py new file mode 100644 index 00000000000000..71ee0499d16437 --- /dev/null +++ b/python/paddle/trainer_config_helpers/tests/configs/test_config_parser_for_non_file_config.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python +# Copyright (c) 2016 Baidu, Inc. 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. + +import sys +import getopt + +whole = False +opts, args = getopt.getopt(sys.argv[1:], "", ["whole"]) +for op, value in opts: + if op == "--whole": + whole = True + +cmdstr = """ +from paddle.trainer.config_parser import * +from paddle.trainer_config_helpers import * +def configs():\n""" + +for line in sys.stdin: + if "import" in line and "from" in line: + continue + cmdstr = cmdstr + " " + line + +if whole: + cmdstr = cmdstr + """print parse_config(configs, "")""" +else: + cmdstr = cmdstr + """print parse_config(configs, "").model_config""" + +exec(cmdstr) From 23d57335f1e76dbc7e63647c092e7ee521844932 Mon Sep 17 00:00:00 2001 From: hanchao Date: Thu, 8 Dec 2016 18:14:25 +0800 Subject: [PATCH 2/3] update cr for pull #734. --- .../tests/configs/run_tests.sh | 10 ++-- .../test_config_parser_for_non_file_config.py | 47 +++++++++++-------- 2 files changed, 35 insertions(+), 22 deletions(-) diff --git a/python/paddle/trainer_config_helpers/tests/configs/run_tests.sh b/python/paddle/trainer_config_helpers/tests/configs/run_tests.sh index ed2ac6ed18be52..72dd55bb67a8f9 100755 --- a/python/paddle/trainer_config_helpers/tests/configs/run_tests.sh +++ b/python/paddle/trainer_config_helpers/tests/configs/run_tests.sh @@ -16,14 +16,16 @@ if [ -z $1 ]; then do base_protostr=$protostr/$file new_protostr=$protostr/$file.unittest - diff $base_protostr $new_protostr -u && + diff $base_protostr $new_protostr -u diff $protostr/$file $protostr/$file.non_file_config.unittest -u done else for file in ${configs[*]} do if ! $1 $protostr/$file.protostr $protostr/$file.protostr.unittest; then - diff $protostr/$file.protostr $protostr/$file.protostr.unittest -u && + diff $protostr/$file.protostr $protostr/$file.protostr.unittest -u + fi + if ! $1 $protostr/$file.protostr $protostr/$file.protostr.non_file_config.unittest; then diff $protostr/$file.protostr $protostr/$file.protostr.non_file_config.unittest -u fi done @@ -31,7 +33,9 @@ else for file in ${whole_configs[*]} do if ! $1 $protostr/$file.protostr $protostr/$file.protostr.unittest --whole; then - diff $protostr/$file.protostr $protostr/$file.protostr.unittest -u && + diff $protostr/$file.protostr $protostr/$file.protostr.unittest -u + fi + if ! $1 $protostr/$file.protostr $protostr/$file.protostr.non_file_config.unittest --whole; then diff $protostr/$file.protostr $protostr/$file.protostr.non_file_config.unittest -u fi done diff --git a/python/paddle/trainer_config_helpers/tests/configs/test_config_parser_for_non_file_config.py b/python/paddle/trainer_config_helpers/tests/configs/test_config_parser_for_non_file_config.py index 71ee0499d16437..87a607acf42199 100644 --- a/python/paddle/trainer_config_helpers/tests/configs/test_config_parser_for_non_file_config.py +++ b/python/paddle/trainer_config_helpers/tests/configs/test_config_parser_for_non_file_config.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright (c) 2016 Baidu, Inc. All Rights Reserved +# Copyright (c) 2016 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. @@ -14,27 +14,36 @@ # limitations under the License. import sys +import re import getopt -whole = False -opts, args = getopt.getopt(sys.argv[1:], "", ["whole"]) -for op, value in opts: - if op == "--whole": - whole = True +def main(print_whole_config, globals, locals): + ''' + this test will all test_config.py + ''' + cmdstr = """from paddle.trainer.config_parser import parse_config\n""" + importstr = "" + functionstr = "" -cmdstr = """ -from paddle.trainer.config_parser import * -from paddle.trainer_config_helpers import * -def configs():\n""" + for line in sys.stdin: + if re.match("^import", line) or re.match("^from.*import", line): + importstr = importstr + line + else: + functionstr = functionstr + " " + line -for line in sys.stdin: - if "import" in line and "from" in line: - continue - cmdstr = cmdstr + " " + line + cmdstr = cmdstr + importstr + """def configs():\n""" + functionstr + #cmdstr = cmdstr + """def configs():\n""" + importstr + functionstr + if print_whole_config: + cmdstr = cmdstr + """print parse_config(configs, "")""" + else: + cmdstr = cmdstr + """print parse_config(configs, "").model_config""" -if whole: - cmdstr = cmdstr + """print parse_config(configs, "")""" -else: - cmdstr = cmdstr + """print parse_config(configs, "").model_config""" + exec(cmdstr, globals, locals) -exec(cmdstr) +if __name__ == '__main__': + whole = False + opts, args = getopt.getopt(sys.argv[1:], "", ["whole"]) + for op, value in opts: + if op == "--whole": + whole = True + main(whole, globals(), locals()) From 957794cd29974acc3d36f201d2754a6e8c096371 Mon Sep 17 00:00:00 2001 From: hanchao Date: Thu, 8 Dec 2016 19:00:10 +0800 Subject: [PATCH 3/3] fix bad ident --- python/paddle/trainer_config_helpers/tests/configs/run_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/paddle/trainer_config_helpers/tests/configs/run_tests.sh b/python/paddle/trainer_config_helpers/tests/configs/run_tests.sh index 72dd55bb67a8f9..e984ee70625456 100755 --- a/python/paddle/trainer_config_helpers/tests/configs/run_tests.sh +++ b/python/paddle/trainer_config_helpers/tests/configs/run_tests.sh @@ -31,7 +31,7 @@ else done for file in ${whole_configs[*]} -do + do if ! $1 $protostr/$file.protostr $protostr/$file.protostr.unittest --whole; then diff $protostr/$file.protostr $protostr/$file.protostr.unittest -u fi