From 11672e53e2d8ab3101d5087dad7c8ff469837de4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Csord=C3=A1s?= Date: Mon, 18 Feb 2019 11:03:18 +0100 Subject: [PATCH] Split up analyzer handling part --- .travis.yml | 24 +++++++++- Makefile | 23 +++++++++- analyzer/.noserc | 13 ++++++ analyzer/Makefile | 24 ++++++++++ {bin => analyzer/bin}/codechecker-analyze | 0 {bin => analyzer/bin}/codechecker-analyzers | 0 {bin => analyzer/bin}/codechecker-check | 0 {bin => analyzer/bin}/codechecker-checkers | 0 {bin => analyzer/bin}/codechecker-log | 0 {bin => analyzer/bin}/codechecker-parse | 0 .../libhandlers => analyzer/cmd}/analyze.py | 7 +-- .../libhandlers => analyzer/cmd}/analyzers.py | 3 +- .../libhandlers => analyzer/cmd}/check.py | 3 +- .../libhandlers => analyzer/cmd}/checkers.py | 3 +- .../libhandlers => analyzer/cmd}/log.py | 5 ++- .../libhandlers => analyzer/cmd}/parse.py | 0 .../codechecker}/__init__.py | 0 .../codechecker/analyze}/__init__.py | 0 .../codechecker}/analyze/analysis_manager.py | 10 ++--- .../codechecker}/analyze/analyzer.py | 13 +++--- .../codechecker}/analyze/analyzer_env.py | 0 .../analyze/analyzers}/__init__.py | 0 .../analyze/analyzers/analyzer_base.py | 0 .../analyze/analyzers/analyzer_clang_tidy.py | 15 ++++--- .../analyze/analyzers/analyzer_clangsa.py | 16 +++---- .../analyze/analyzers/analyzer_types.py | 8 ++-- .../analyze/analyzers/config_handler.py | 0 .../analyzers/config_handler_clang_tidy.py | 3 +- .../analyzers/config_handler_clangsa.py | 3 +- .../analyze/analyzers/ctu_triple_arch.py | 6 +-- .../analyze/analyzers/result_handler_base.py | 0 .../analyzers/result_handler_clang_tidy.py | 7 +-- .../analyzers/result_handler_clangsa.py | 4 +- .../codechecker}/analyze/ctu_manager.py | 5 ++- .../codechecker}/analyze/gcc_toolchain.py | 0 .../codechecker}/analyze/host_check.py | 0 .../analyze/pre_analysis_manager.py | 12 ++--- .../analyze/statistics_collector.py | 5 +-- .../analyze/tidy_output_converter.py | 0 analyzer/codechecker/buildlog/__init__.py | 5 +++ .../codechecker/buildlog}/build_action.py | 0 .../codechecker/buildlog}/build_manager.py | 4 +- .../codechecker/buildlog}/host_check.py | 0 .../codechecker/buildlog}/log_parser.py | 6 ++- analyzer/requirements_py/dev/requirements.txt | 4 ++ .../requirements_py/test/requirements.txt | 3 ++ analyzer/tests/Makefile | 43 ++++++++++++++++++ analyzer/tests/functional/__init__.py | 21 +++++++++ .../tests}/functional/analyze/__init__.py | 0 .../tests}/functional/analyze/test_analyze.py | 0 .../functional/analyze/test_files/failure.c | 0 .../analyze/test_files/includes/simple.h | 0 .../functional/analyze/test_files/simple.c | 0 .../functional/analyze/test_files/simple.cpp | 0 .../functional/analyze/test_files/success.c | 0 .../functional/analyze_and_parse/__init__.py | 0 .../test_analyze_and_parse.py | 0 .../analyze_and_parse/test_files/Makefile | 0 .../test_files/compiler_warning.cpp | 0 .../compiler_warning_no_warn.output | 0 .../test_files/compiler_warning_simple.output | 0 .../compiler_warning_wno_group.output | 0 .../compiler_warning_wno_simple1.output | 0 .../compiler_warning_wno_simple2.output | 0 .../compiler_warning_wunused.output | 0 .../test_files/context_free_hash.output | 0 .../test_files/context_hash.cpp | 0 .../test_files/context_sensitive_hash.output | 0 .../test_files/macros.output | 0 .../test_files/multi_error.cpp | 0 .../test_files/multi_error.en1.output | 0 .../test_files/multi_error.en2.output | 0 .../test_files/multi_error.output | 0 .../test_files/multi_error.steps.output | 0 .../test_files/multi_error_skipped.output | 0 .../test_files/multi_error_suppress.cpp | 0 .../test_files/multi_error_suppress.output | 0 .../multi_error_suppress_cstyle.cpp | 0 .../multi_error_suppress_cstyle.output | 0 .../test_files/multi_error_suppress_typo.cpp | 0 .../multi_error_suppress_typo.output | 0 .../analyze_and_parse/test_files/nofail.cpp | 0 .../test_files/nofail.output | 0 .../test_files/nofail.steps.output | 0 .../analyze_and_parse/test_files/notes.output | 0 .../test_files/saargs_forward.cpp | 0 .../saargs_forward.noforward.output | 0 .../test_files/saargs_forward.output | 0 .../test_files/saargs_forward.saargs.txt | 0 .../analyze_and_parse/test_files/simple1.cpp | 0 .../test_files/simple1.deduplication.output | 0 .../test_files/simple1.output | 0 .../test_files/simple1.steps.output | 0 .../analyze_and_parse/test_files/simple2.cpp | 0 .../test_files/simple2.output | 0 .../test_files/simple2.steps.output | 0 .../analyze_and_parse/test_files/skiplist.txt | 0 .../test_files/source_code_comments.cpp | 0 .../test_files/source_code_comments.output | 0 .../test_files/tidy_check.cpp | 0 .../test_files/tidy_check.output | 0 .../tests}/functional/ctu/__init__.py | 0 .../tests}/functional/ctu/test_ctu.py | 0 .../functional/ctu/test_files/buildlog.json | 0 .../tests}/functional/ctu/test_files/lib.c | 0 .../tests}/functional/ctu/test_files/main.c | 0 .../tests}/functional/ctu_failure/__init__.py | 0 .../ctu_failure/test_ctu_failure.py | 4 +- .../tests}/functional/host_check/__init__.py | 0 .../functional/host_check/test_host_check.py | 3 +- analyzer/tests/libtest/__init__.py | 5 +++ analyzer/tests/libtest/codechecker.py | 41 +++++++++++++++++ analyzer/tests/libtest/env.py | 44 +++++++++++++++++++ analyzer/tests/libtest/project.py | 18 ++++++++ analyzer/tests/unit/__init__.py | 19 ++++++++ .../unit/logparser_test_files/include.json | 0 .../intercept-new-space.json | 0 .../logparser_test_files/intercept-new.json | 0 .../intercept-old-space.json | 0 .../logparser_test_files/intercept-old.json | 0 .../ldlogger-new-space.json | 0 .../logparser_test_files/ldlogger-new.json | 0 .../logparser_test_files/ldlogger-old.json | 0 .../tests}/unit/test_buildcmd_escaping.py | 8 ++-- .../tests}/unit/test_gcc_toolchain.py | 2 +- .../tests}/unit/test_log_parser.py | 4 +- .../tests}/unit/test_option_parser.py | 4 +- .../tests}/unit/test_statistics_collectors.py | 2 +- .../tests}/unit/test_tidy_output_converter.py | 2 +- .../unit/tidy_output_test_files/abs.out | 0 .../unit/tidy_output_test_files/empty.plist | 0 .../unit/tidy_output_test_files/empty1.out | 0 .../unit/tidy_output_test_files/empty2.out | 0 .../tidy_output_test_files/files/Makefile | 0 .../tidy_output_test_files/files/test.cpp | 0 .../tidy_output_test_files/files/test2.cpp | 0 .../tidy_output_test_files/files/test3.cpp | 0 .../tidy_output_test_files/files/test3.hh | 0 .../tidy_output_test_files/files/test4.cpp | 0 .../unit/tidy_output_test_files/tidy1.out | 0 .../unit/tidy_output_test_files/tidy1.plist | 0 .../unit/tidy_output_test_files/tidy1_v6.out | 0 .../unit/tidy_output_test_files/tidy2.out | 0 .../unit/tidy_output_test_files/tidy2.plist | 0 .../unit/tidy_output_test_files/tidy2_v6.out | 0 .../unit/tidy_output_test_files/tidy3.out | 0 .../unit/tidy_output_test_files/tidy3.plist | 0 .../unit/tidy_output_test_files/tidy4.out | 0 .../unit/tidy_output_test_files/tidy5.out | 0 .../unit/tidy_output_test_files/tidy5_v6.out | 0 .../unit/tidy_output_test_files/tidy6.out | 0 bin/CodeChecker.py | 8 ---- {tests => scripts/test}/add_new_func_test.py | 0 {tests => scripts/test}/add_new_unit_test.py | 0 {tests => scripts/test}/check_clang.py | 0 tests/Makefile | 24 +++------- .../tu_collector/tests/tu_collector_test.py | 7 +-- 157 files changed, 383 insertions(+), 110 deletions(-) create mode 100644 analyzer/.noserc create mode 100644 analyzer/Makefile rename {bin => analyzer/bin}/codechecker-analyze (100%) rename {bin => analyzer/bin}/codechecker-analyzers (100%) rename {bin => analyzer/bin}/codechecker-check (100%) rename {bin => analyzer/bin}/codechecker-checkers (100%) rename {bin => analyzer/bin}/codechecker-log (100%) rename {bin => analyzer/bin}/codechecker-parse (100%) rename {libcodechecker/libhandlers => analyzer/cmd}/analyze.py (99%) rename {libcodechecker/libhandlers => analyzer/cmd}/analyzers.py (98%) rename {libcodechecker/libhandlers => analyzer/cmd}/check.py (99%) rename {libcodechecker/libhandlers => analyzer/cmd}/checkers.py (99%) rename {libcodechecker/libhandlers => analyzer/cmd}/log.py (97%) rename {libcodechecker/libhandlers => analyzer/cmd}/parse.py (100%) rename {libcodechecker/analyze => analyzer/codechecker}/__init__.py (100%) rename {libcodechecker/analyze/analyzers => analyzer/codechecker/analyze}/__init__.py (100%) rename {libcodechecker => analyzer/codechecker}/analyze/analysis_manager.py (98%) rename {libcodechecker => analyzer/codechecker}/analyze/analyzer.py (95%) rename {libcodechecker => analyzer/codechecker}/analyze/analyzer_env.py (100%) rename {libcodechecker/log => analyzer/codechecker/analyze/analyzers}/__init__.py (100%) rename {libcodechecker => analyzer/codechecker}/analyze/analyzers/analyzer_base.py (100%) rename {libcodechecker => analyzer/codechecker}/analyze/analyzers/analyzer_clang_tidy.py (96%) rename {libcodechecker => analyzer/codechecker}/analyze/analyzers/analyzer_clangsa.py (96%) rename {libcodechecker => analyzer/codechecker}/analyze/analyzers/analyzer_types.py (96%) rename {libcodechecker => analyzer/codechecker}/analyze/analyzers/config_handler.py (100%) rename {libcodechecker => analyzer/codechecker}/analyze/analyzers/config_handler_clang_tidy.py (98%) rename {libcodechecker => analyzer/codechecker}/analyze/analyzers/config_handler_clangsa.py (97%) rename {libcodechecker => analyzer/codechecker}/analyze/analyzers/ctu_triple_arch.py (93%) rename {libcodechecker => analyzer/codechecker}/analyze/analyzers/result_handler_base.py (100%) rename {libcodechecker => analyzer/codechecker}/analyze/analyzers/result_handler_clang_tidy.py (91%) rename {libcodechecker => analyzer/codechecker}/analyze/analyzers/result_handler_clangsa.py (92%) rename {libcodechecker => analyzer/codechecker}/analyze/ctu_manager.py (98%) rename {libcodechecker => analyzer/codechecker}/analyze/gcc_toolchain.py (100%) rename {libcodechecker => analyzer/codechecker}/analyze/host_check.py (100%) rename {libcodechecker => analyzer/codechecker}/analyze/pre_analysis_manager.py (95%) rename {libcodechecker => analyzer/codechecker}/analyze/statistics_collector.py (99%) rename {libcodechecker => analyzer/codechecker}/analyze/tidy_output_converter.py (100%) create mode 100644 analyzer/codechecker/buildlog/__init__.py rename {libcodechecker/log => analyzer/codechecker/buildlog}/build_action.py (100%) rename {libcodechecker/log => analyzer/codechecker/buildlog}/build_manager.py (97%) rename {libcodechecker/log => analyzer/codechecker/buildlog}/host_check.py (100%) rename {libcodechecker/log => analyzer/codechecker/buildlog}/log_parser.py (99%) create mode 100644 analyzer/requirements_py/dev/requirements.txt create mode 100644 analyzer/requirements_py/test/requirements.txt create mode 100644 analyzer/tests/Makefile create mode 100644 analyzer/tests/functional/__init__.py rename {tests => analyzer/tests}/functional/analyze/__init__.py (100%) rename {tests => analyzer/tests}/functional/analyze/test_analyze.py (100%) rename {tests => analyzer/tests}/functional/analyze/test_files/failure.c (100%) rename {tests => analyzer/tests}/functional/analyze/test_files/includes/simple.h (100%) rename {tests => analyzer/tests}/functional/analyze/test_files/simple.c (100%) rename {tests => analyzer/tests}/functional/analyze/test_files/simple.cpp (100%) rename {tests => analyzer/tests}/functional/analyze/test_files/success.c (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/__init__.py (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_analyze_and_parse.py (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/Makefile (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/compiler_warning.cpp (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/compiler_warning_no_warn.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/compiler_warning_simple.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/compiler_warning_wno_group.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/compiler_warning_wno_simple1.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/compiler_warning_wno_simple2.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/compiler_warning_wunused.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/context_free_hash.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/context_hash.cpp (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/context_sensitive_hash.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/macros.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/multi_error.cpp (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/multi_error.en1.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/multi_error.en2.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/multi_error.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/multi_error.steps.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/multi_error_skipped.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/multi_error_suppress.cpp (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/multi_error_suppress.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/multi_error_suppress_cstyle.cpp (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/multi_error_suppress_cstyle.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/multi_error_suppress_typo.cpp (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/multi_error_suppress_typo.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/nofail.cpp (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/nofail.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/nofail.steps.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/notes.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/saargs_forward.cpp (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/saargs_forward.noforward.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/saargs_forward.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/saargs_forward.saargs.txt (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/simple1.cpp (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/simple1.deduplication.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/simple1.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/simple1.steps.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/simple2.cpp (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/simple2.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/simple2.steps.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/skiplist.txt (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/source_code_comments.cpp (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/source_code_comments.output (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/tidy_check.cpp (100%) rename {tests => analyzer/tests}/functional/analyze_and_parse/test_files/tidy_check.output (100%) rename {tests => analyzer/tests}/functional/ctu/__init__.py (100%) rename {tests => analyzer/tests}/functional/ctu/test_ctu.py (100%) rename {tests => analyzer/tests}/functional/ctu/test_files/buildlog.json (100%) rename {tests => analyzer/tests}/functional/ctu/test_files/lib.c (100%) rename {tests => analyzer/tests}/functional/ctu/test_files/main.c (100%) rename {tests => analyzer/tests}/functional/ctu_failure/__init__.py (100%) rename {tests => analyzer/tests}/functional/ctu_failure/test_ctu_failure.py (99%) rename {tests => analyzer/tests}/functional/host_check/__init__.py (100%) rename {tests => analyzer/tests}/functional/host_check/test_host_check.py (96%) create mode 100644 analyzer/tests/libtest/__init__.py create mode 100644 analyzer/tests/libtest/codechecker.py create mode 100644 analyzer/tests/libtest/env.py create mode 100644 analyzer/tests/libtest/project.py create mode 100644 analyzer/tests/unit/__init__.py rename {tests => analyzer/tests}/unit/logparser_test_files/include.json (100%) rename {tests => analyzer/tests}/unit/logparser_test_files/intercept-new-space.json (100%) rename {tests => analyzer/tests}/unit/logparser_test_files/intercept-new.json (100%) rename {tests => analyzer/tests}/unit/logparser_test_files/intercept-old-space.json (100%) rename {tests => analyzer/tests}/unit/logparser_test_files/intercept-old.json (100%) rename {tests => analyzer/tests}/unit/logparser_test_files/ldlogger-new-space.json (100%) rename {tests => analyzer/tests}/unit/logparser_test_files/ldlogger-new.json (100%) rename {tests => analyzer/tests}/unit/logparser_test_files/ldlogger-old.json (100%) rename {tests => analyzer/tests}/unit/test_buildcmd_escaping.py (95%) rename {tests => analyzer/tests}/unit/test_gcc_toolchain.py (97%) rename {tests => analyzer/tests}/unit/test_log_parser.py (99%) rename {tests => analyzer/tests}/unit/test_option_parser.py (98%) rename {tests => analyzer/tests}/unit/test_statistics_collectors.py (99%) rename {tests => analyzer/tests}/unit/test_tidy_output_converter.py (99%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/abs.out (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/empty.plist (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/empty1.out (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/empty2.out (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/files/Makefile (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/files/test.cpp (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/files/test2.cpp (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/files/test3.cpp (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/files/test3.hh (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/files/test4.cpp (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/tidy1.out (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/tidy1.plist (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/tidy1_v6.out (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/tidy2.out (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/tidy2.plist (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/tidy2_v6.out (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/tidy3.out (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/tidy3.plist (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/tidy4.out (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/tidy5.out (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/tidy5_v6.out (100%) rename {tests => analyzer/tests}/unit/tidy_output_test_files/tidy6.out (100%) rename {tests => scripts/test}/add_new_func_test.py (100%) rename {tests => scripts/test}/add_new_unit_test.py (100%) rename {tests => scripts/test}/check_clang.py (100%) diff --git a/.travis.yml b/.travis.yml index ea125498b7..aaa68c6f58 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,12 @@ services: matrix: include: + - os: linux + name: "Analyzer test cases" + sudo: required + dist: xenial + python: "2.7" + env: CC_MODULE=analyzer - os: linux sudo: required dist: xenial @@ -21,6 +27,12 @@ matrix: dist: xenial python: "2.7" env: DATABASE=psql_pg8000 + - os: osx + osx_image: xcode9.4 + name: "Analyzer test cases" + sudo: false + language: generic + env: CC_MODULE=analyzer - os: osx osx_image: xcode9.4 sudo: false @@ -95,5 +107,15 @@ addons: script: - make clean_travis - make package - - if [[ ! -z "$DATABASE" ]]; then make test_matrix_${DATABASE}; else make test; fi + - > + if [[ "$CC_MODULE" = "analyzer" ]]; then + make -C analyzer test_unit test_functional test_tu_collector; + if [[ "$TRAVIS_OS_NAME" = "linux" ]]; then + make -C analyzer test_build_logger + fi + elif [[ ! -z "$DATABASE" ]]; then + make test_matrix_${DATABASE}; + else + make test; + fi - make clean_travis diff --git a/Makefile b/Makefile index 64529df45e..ad40258f3d 100644 --- a/Makefile +++ b/Makefile @@ -12,8 +12,11 @@ CC_BUILD_DOCS_DIR = $(CC_BUILD_WEB_DIR)/docs CC_BUILD_WEB_PLUGINS_DIR = $(CC_BUILD_SCRIPTS_DIR)/plugins CC_BUILD_API_DIR = $(CC_BUILD_SCRIPTS_DIR)/codechecker-api CC_BUILD_LIB_DIR = $(CC_BUILD_DIR)/lib/python2.7 +CC_BUILD_LIBCC_DIR = $(CC_BUILD_LIB_DIR)/libcodechecker CC_BUILD_GEN_DIR = $(CC_BUILD_LIB_DIR)/gencodechecker +CC_ANALYZER = $(CURRENT_DIR)/analyzer + # Root of the repository. ROOT = $(CURRENT_DIR) @@ -68,7 +71,14 @@ package: clean_package build_dir gen-docs thrift userguide build_plist_to_html b cp -r $(BUILD_DIR)/thrift/v*/gen-js/* $(CC_BUILD_API_DIR) # Copy libraries. - cp -r $(ROOT)/libcodechecker $(CC_BUILD_LIB_DIR) + mkdir -p $(CC_BUILD_LIBCC_DIR) && \ + cp -r $(ROOT)/libcodechecker/* $(CC_BUILD_LIBCC_DIR) && \ + cp -r $(CC_ANALYZER)/cmd/* $(CC_BUILD_LIBCC_DIR)/libhandlers && \ + cp -r $(CC_ANALYZER)/codechecker $(CC_BUILD_LIB_DIR) + + # Copy sub-commands. + cp $(ROOT)/bin/* $(CC_BUILD_DIR)/bin && \ + cp $(CC_ANALYZER)/bin/* $(CC_BUILD_DIR)/bin # Copy documentation files. mkdir -p $(CC_BUILD_DOCS_DIR) && \ @@ -80,7 +90,9 @@ package: clean_package build_dir gen-docs thrift userguide build_plist_to_html b cp -r $(ROOT)/config $(CC_BUILD_DIR) && \ ./scripts/build/extend_version_file.py -r $(ROOT) -b $(BUILD_DIR) && \ mkdir -p $(CC_BUILD_DIR)/cc_bin && \ - ./scripts/build/create_commands.py -b $(BUILD_DIR) $(ROOT)/bin + ./scripts/build/create_commands.py -b $(BUILD_DIR) \ + $(ROOT)/bin \ + $(CC_ANALYZER)/bin # Copy web client files. mkdir -p $(CC_BUILD_WEB_DIR) && \ @@ -190,3 +202,10 @@ clean_plist_to_html: clean_tu_collector: rm -rf vendor/tu_collector/build + +clean_travis: + # Clean CodeChecker config files stored in the users home directory. + rm -rf ~/.codechecker* + +test_analyzer: + $(MAKE) -C $(CC_ANALYZER) test diff --git a/analyzer/.noserc b/analyzer/.noserc new file mode 100644 index 0000000000..512f4e1a08 --- /dev/null +++ b/analyzer/.noserc @@ -0,0 +1,13 @@ +[nosetests] + +# increase verbosity level +verbosity=3 + +# more detailed error messages on failed asserts +detailed-errors=1 + +# stop running tests on first error +stop=1 + +# do not capture stdout +#nocapture=1 diff --git a/analyzer/Makefile b/analyzer/Makefile new file mode 100644 index 0000000000..1c6b1def27 --- /dev/null +++ b/analyzer/Makefile @@ -0,0 +1,24 @@ +-include Makefile.local + +CURRENT_DIR = $(shell pwd) + +# Root of the repository. +ROOT = $(CURRENT_DIR)/.. + +ACTIVATE_DEV_VENV ?= . venv_dev/bin/activate + +VENV_DEV_REQ_FILE ?= requirements_py/dev/requirements.txt +VENV_TEST_REQ_FILE ?= requirements_py/test/requirements.txt + +include tests/Makefile + +venv_dev: + # Create a virtual environment for development. + virtualenv -p python2 venv_dev && \ + $(ACTIVATE_DEV_VENV) && pip install -r $(VENV_DEV_REQ_FILE) && \ + pip install -r $(VENV_TEST_REQ_FILE) + +clean_venv_dev: + rm -rf venv_dev + +# TODO: add targets to build analyzer separately. diff --git a/bin/codechecker-analyze b/analyzer/bin/codechecker-analyze similarity index 100% rename from bin/codechecker-analyze rename to analyzer/bin/codechecker-analyze diff --git a/bin/codechecker-analyzers b/analyzer/bin/codechecker-analyzers similarity index 100% rename from bin/codechecker-analyzers rename to analyzer/bin/codechecker-analyzers diff --git a/bin/codechecker-check b/analyzer/bin/codechecker-check similarity index 100% rename from bin/codechecker-check rename to analyzer/bin/codechecker-check diff --git a/bin/codechecker-checkers b/analyzer/bin/codechecker-checkers similarity index 100% rename from bin/codechecker-checkers rename to analyzer/bin/codechecker-checkers diff --git a/bin/codechecker-log b/analyzer/bin/codechecker-log similarity index 100% rename from bin/codechecker-log rename to analyzer/bin/codechecker-log diff --git a/bin/codechecker-parse b/analyzer/bin/codechecker-parse similarity index 100% rename from bin/codechecker-parse rename to analyzer/bin/codechecker-parse diff --git a/libcodechecker/libhandlers/analyze.py b/analyzer/cmd/analyze.py similarity index 99% rename from libcodechecker/libhandlers/analyze.py rename to analyzer/cmd/analyze.py index 07de14fb07..4101a650ef 100644 --- a/libcodechecker/libhandlers/analyze.py +++ b/analyzer/cmd/analyze.py @@ -16,12 +16,13 @@ import shutil import sys +from codechecker.analyze import analyzer +from codechecker.analyze.analyzers import analyzer_types +from codechecker.buildlog import log_parser + from libcodechecker import logger from libcodechecker import package_context from libcodechecker import skiplist_handler -from libcodechecker.analyze import analyzer -from libcodechecker.analyze.analyzers import analyzer_types -from libcodechecker.log import log_parser from libcodechecker.util import RawDescriptionDefaultHelpFormatter, \ load_json_or_empty diff --git a/libcodechecker/libhandlers/analyzers.py b/analyzer/cmd/analyzers.py similarity index 98% rename from libcodechecker/libhandlers/analyzers.py rename to analyzer/cmd/analyzers.py index e74c2d312c..1f42aec79a 100644 --- a/libcodechecker/libhandlers/analyzers.py +++ b/analyzer/cmd/analyzers.py @@ -14,10 +14,11 @@ import argparse import subprocess +from codechecker.analyze.analyzers import analyzer_types + from libcodechecker import logger from libcodechecker import package_context from libcodechecker import output_formatters -from libcodechecker.analyze.analyzers import analyzer_types LOG = logger.get_logger('system') diff --git a/libcodechecker/libhandlers/check.py b/analyzer/cmd/check.py similarity index 99% rename from libcodechecker/libhandlers/check.py rename to analyzer/cmd/check.py index 6c2bb57e6c..8fb6e4c112 100644 --- a/libcodechecker/libhandlers/check.py +++ b/analyzer/cmd/check.py @@ -17,10 +17,11 @@ import shutil import tempfile +from codechecker.analyze.analyzers import analyzer_types + from libcodechecker import logger from libcodechecker import libhandlers from libcodechecker import package_context -from libcodechecker.analyze.analyzers import analyzer_types from libcodechecker.util import RawDescriptionDefaultHelpFormatter LOG = logger.get_logger('system') diff --git a/libcodechecker/libhandlers/checkers.py b/analyzer/cmd/checkers.py similarity index 99% rename from libcodechecker/libhandlers/checkers.py rename to analyzer/cmd/checkers.py index 66c9095b57..ddd1ee35c0 100644 --- a/libcodechecker/libhandlers/checkers.py +++ b/analyzer/cmd/checkers.py @@ -13,10 +13,11 @@ import argparse import os +from codechecker.analyze.analyzers import analyzer_types + from libcodechecker import package_context from libcodechecker import logger from libcodechecker import output_formatters -from libcodechecker.analyze.analyzers import analyzer_types from libcodechecker.env import get_check_env LOG = logger.get_logger('system') diff --git a/libcodechecker/libhandlers/log.py b/analyzer/cmd/log.py similarity index 97% rename from libcodechecker/libhandlers/log.py rename to analyzer/cmd/log.py index cb36c69ecd..582a7cc25e 100644 --- a/libcodechecker/libhandlers/log.py +++ b/analyzer/cmd/log.py @@ -17,10 +17,11 @@ import argparse import os +from codechecker.buildlog import build_manager +from codechecker.buildlog.host_check import check_intercept + from libcodechecker import package_context from libcodechecker import logger -from libcodechecker.log import build_manager -from libcodechecker.log.host_check import check_intercept def get_argparser_ctor_args(): diff --git a/libcodechecker/libhandlers/parse.py b/analyzer/cmd/parse.py similarity index 100% rename from libcodechecker/libhandlers/parse.py rename to analyzer/cmd/parse.py diff --git a/libcodechecker/analyze/__init__.py b/analyzer/codechecker/__init__.py similarity index 100% rename from libcodechecker/analyze/__init__.py rename to analyzer/codechecker/__init__.py diff --git a/libcodechecker/analyze/analyzers/__init__.py b/analyzer/codechecker/analyze/__init__.py similarity index 100% rename from libcodechecker/analyze/analyzers/__init__.py rename to analyzer/codechecker/analyze/__init__.py diff --git a/libcodechecker/analyze/analysis_manager.py b/analyzer/codechecker/analyze/analysis_manager.py similarity index 98% rename from libcodechecker/analyze/analysis_manager.py rename to analyzer/codechecker/analyze/analysis_manager.py index 9100821038..dd380be48a 100644 --- a/libcodechecker/analyze/analysis_manager.py +++ b/analyzer/codechecker/analyze/analysis_manager.py @@ -20,15 +20,15 @@ import zipfile from libcodechecker import util, plist_parser -from libcodechecker.analyze import gcc_toolchain -from libcodechecker.analyze.analyzers import analyzer_clangsa -from libcodechecker.analyze.analyzers import analyzer_types -from libcodechecker.analyze.statistics_collector \ - import SpecialReturnValueCollector from libcodechecker.env import get_check_env from libcodechecker.logger import get_logger from tu_collector import tu_collector +from . import gcc_toolchain +from .analyzers import analyzer_clangsa +from .analyzers import analyzer_types +from .statistics_collector import SpecialReturnValueCollector + LOG = get_logger('analyzer') diff --git a/libcodechecker/analyze/analyzer.py b/analyzer/codechecker/analyze/analyzer.py similarity index 95% rename from libcodechecker/analyze/analyzer.py rename to analyzer/codechecker/analyze/analyzer.py index 4924ddd96d..a4e5c5f076 100644 --- a/libcodechecker/analyze/analyzer.py +++ b/analyzer/codechecker/analyze/analyzer.py @@ -19,16 +19,13 @@ import time from libcodechecker.logger import get_logger -from libcodechecker.analyze import analysis_manager -from libcodechecker.analyze import pre_analysis_manager -from libcodechecker.analyze.analyzers import analyzer_types -from libcodechecker.analyze.analyzers.analyzer_clangsa import ClangSA -from libcodechecker.analyze.statistics_collector \ - import SpecialReturnValueCollector -from libcodechecker.analyze.statistics_collector \ - import ReturnValueCollector from libcodechecker.env import get_check_env +from . import analysis_manager, pre_analysis_manager +from .analyzers import analyzer_types +from .analyzers.analyzer_clangsa import ClangSA +from .statistics_collector import SpecialReturnValueCollector +from .statistics_collector import ReturnValueCollector LOG = get_logger('analyzer') diff --git a/libcodechecker/analyze/analyzer_env.py b/analyzer/codechecker/analyze/analyzer_env.py similarity index 100% rename from libcodechecker/analyze/analyzer_env.py rename to analyzer/codechecker/analyze/analyzer_env.py diff --git a/libcodechecker/log/__init__.py b/analyzer/codechecker/analyze/analyzers/__init__.py similarity index 100% rename from libcodechecker/log/__init__.py rename to analyzer/codechecker/analyze/analyzers/__init__.py diff --git a/libcodechecker/analyze/analyzers/analyzer_base.py b/analyzer/codechecker/analyze/analyzers/analyzer_base.py similarity index 100% rename from libcodechecker/analyze/analyzers/analyzer_base.py rename to analyzer/codechecker/analyze/analyzers/analyzer_base.py diff --git a/libcodechecker/analyze/analyzers/analyzer_clang_tidy.py b/analyzer/codechecker/analyze/analyzers/analyzer_clang_tidy.py similarity index 96% rename from libcodechecker/analyze/analyzers/analyzer_clang_tidy.py rename to analyzer/codechecker/analyze/analyzers/analyzer_clang_tidy.py index 7083591ede..1bbde7c633 100644 --- a/libcodechecker/analyze/analyzers/analyzer_clang_tidy.py +++ b/analyzer/codechecker/analyze/analyzers/analyzer_clang_tidy.py @@ -14,17 +14,18 @@ import shlex import subprocess -from libcodechecker.analyze import host_check -from libcodechecker.analyze.analyzers import analyzer_base -from libcodechecker.analyze.analyzers import config_handler_clang_tidy -from libcodechecker.analyze.analyzers import result_handler_clang_tidy -from libcodechecker.analyze.analyzers.analyzer_clangsa import ClangSA -from libcodechecker.analyze.analyzer_env import \ - extend_analyzer_cmd_with_resource_dir from libcodechecker.env import get_check_env from libcodechecker.logger import get_logger from libcodechecker.util import get_binary_in_path, replace_env_var +from .. import host_check +from ..analyzer_env import extend_analyzer_cmd_with_resource_dir + +from . import analyzer_base +from . import config_handler_clang_tidy +from . import result_handler_clang_tidy +from .analyzer_clangsa import ClangSA + LOG = get_logger('analyzer') diff --git a/libcodechecker/analyze/analyzers/analyzer_clangsa.py b/analyzer/codechecker/analyze/analyzers/analyzer_clangsa.py similarity index 96% rename from libcodechecker/analyze/analyzers/analyzer_clangsa.py rename to analyzer/codechecker/analyze/analyzers/analyzer_clangsa.py index 1fd26568cf..54195f660c 100644 --- a/libcodechecker/analyze/analyzers/analyzer_clangsa.py +++ b/analyzer/codechecker/analyze/analyzers/analyzer_clangsa.py @@ -16,18 +16,18 @@ import shlex import subprocess -from libcodechecker.analyze import host_check -from libcodechecker.analyze.analyzers import analyzer_base -from libcodechecker.analyze.analyzers import config_handler_clangsa -from libcodechecker.analyze.analyzers import ctu_triple_arch -from libcodechecker.analyze.analyzers.result_handler_clangsa import \ - ResultHandlerClangSA -from libcodechecker.analyze.analyzer_env import \ - extend_analyzer_cmd_with_resource_dir from libcodechecker.env import get_check_env from libcodechecker.logger import get_logger from libcodechecker.util import get_binary_in_path, replace_env_var +from .. import host_check +from ..analyzer_env import extend_analyzer_cmd_with_resource_dir + +from . import analyzer_base +from . import config_handler_clangsa +from . import ctu_triple_arch +from .result_handler_clangsa import ResultHandlerClangSA + LOG = get_logger('analyzer') diff --git a/libcodechecker/analyze/analyzers/analyzer_types.py b/analyzer/codechecker/analyze/analyzers/analyzer_types.py similarity index 96% rename from libcodechecker/analyze/analyzers/analyzer_types.py rename to analyzer/codechecker/analyze/analyzers/analyzer_types.py index 5a7c5d82dc..cc5a4dfda2 100644 --- a/libcodechecker/analyze/analyzers/analyzer_types.py +++ b/analyzer/codechecker/analyze/analyzers/analyzer_types.py @@ -15,12 +15,14 @@ import re import subprocess -from libcodechecker.analyze import host_check -from libcodechecker.analyze.analyzers.analyzer_clang_tidy import ClangTidy -from libcodechecker.analyze.analyzers.analyzer_clangsa import ClangSA from libcodechecker.env import get_check_env from libcodechecker.logger import get_logger +from .. import host_check + +from .analyzer_clang_tidy import ClangTidy +from .analyzer_clangsa import ClangSA + LOG = get_logger('analyzer') supported_analyzers = {ClangSA.ANALYZER_NAME: ClangSA, diff --git a/libcodechecker/analyze/analyzers/config_handler.py b/analyzer/codechecker/analyze/analyzers/config_handler.py similarity index 100% rename from libcodechecker/analyze/analyzers/config_handler.py rename to analyzer/codechecker/analyze/analyzers/config_handler.py diff --git a/libcodechecker/analyze/analyzers/config_handler_clang_tidy.py b/analyzer/codechecker/analyze/analyzers/config_handler_clang_tidy.py similarity index 98% rename from libcodechecker/analyze/analyzers/config_handler_clang_tidy.py rename to analyzer/codechecker/analyze/analyzers/config_handler_clang_tidy.py index be8b397fb5..79bd3a34cc 100644 --- a/libcodechecker/analyze/analyzers/config_handler_clang_tidy.py +++ b/analyzer/codechecker/analyze/analyzers/config_handler_clang_tidy.py @@ -15,9 +15,10 @@ import re import shlex -from libcodechecker.analyze.analyzers import config_handler from libcodechecker.logger import get_logger +from . import config_handler + LOG = get_logger('analyzer.tidy') diff --git a/libcodechecker/analyze/analyzers/config_handler_clangsa.py b/analyzer/codechecker/analyze/analyzers/config_handler_clangsa.py similarity index 97% rename from libcodechecker/analyze/analyzers/config_handler_clangsa.py rename to analyzer/codechecker/analyze/analyzers/config_handler_clangsa.py index 1a1b2a3c56..558cfc077c 100644 --- a/libcodechecker/analyze/analyzers/config_handler_clangsa.py +++ b/analyzer/codechecker/analyze/analyzers/config_handler_clangsa.py @@ -13,9 +13,10 @@ import re -from libcodechecker.analyze.analyzers import config_handler from libcodechecker.logger import get_logger +from . import config_handler + LOG = get_logger('analyzer.clangsa') diff --git a/libcodechecker/analyze/analyzers/ctu_triple_arch.py b/analyzer/codechecker/analyze/analyzers/ctu_triple_arch.py similarity index 93% rename from libcodechecker/analyze/analyzers/ctu_triple_arch.py rename to analyzer/codechecker/analyze/analyzers/ctu_triple_arch.py index 24dad8f7d7..be954e0f68 100644 --- a/libcodechecker/analyze/analyzers/ctu_triple_arch.py +++ b/analyzer/codechecker/analyze/analyzers/ctu_triple_arch.py @@ -12,9 +12,9 @@ import shlex -from libcodechecker.analyze.analyzers import analyzer_base -from libcodechecker.analyze.analyzer_env import\ - extend_analyzer_cmd_with_resource_dir +from ..analyzer_env import extend_analyzer_cmd_with_resource_dir + +from . import analyzer_base def get_compile_command(action, config, source='', output=''): diff --git a/libcodechecker/analyze/analyzers/result_handler_base.py b/analyzer/codechecker/analyze/analyzers/result_handler_base.py similarity index 100% rename from libcodechecker/analyze/analyzers/result_handler_base.py rename to analyzer/codechecker/analyze/analyzers/result_handler_base.py diff --git a/libcodechecker/analyze/analyzers/result_handler_clang_tidy.py b/analyzer/codechecker/analyze/analyzers/result_handler_clang_tidy.py similarity index 91% rename from libcodechecker/analyze/analyzers/result_handler_clang_tidy.py rename to analyzer/codechecker/analyze/analyzers/result_handler_clang_tidy.py index 08b5793e9f..34fda658de 100644 --- a/libcodechecker/analyze/analyzers/result_handler_clang_tidy.py +++ b/analyzer/codechecker/analyze/analyzers/result_handler_clang_tidy.py @@ -11,11 +11,12 @@ from __future__ import absolute_import from libcodechecker import report -from libcodechecker.analyze import tidy_output_converter -from libcodechecker.analyze.analyzers.result_handler_base \ - import ResultHandler from libcodechecker.logger import get_logger +from .. import tidy_output_converter + +from .result_handler_base import ResultHandler + LOG = get_logger('report') diff --git a/libcodechecker/analyze/analyzers/result_handler_clangsa.py b/analyzer/codechecker/analyze/analyzers/result_handler_clangsa.py similarity index 92% rename from libcodechecker/analyze/analyzers/result_handler_clangsa.py rename to analyzer/codechecker/analyze/analyzers/result_handler_clangsa.py index ee5493e807..a5fe2b90d1 100644 --- a/libcodechecker/analyze/analyzers/result_handler_clangsa.py +++ b/analyzer/codechecker/analyze/analyzers/result_handler_clangsa.py @@ -11,10 +11,10 @@ from __future__ import absolute_import from libcodechecker import report -from libcodechecker.analyze.analyzers.result_handler_base \ - import ResultHandler from libcodechecker.logger import get_logger +from .result_handler_base import ResultHandler + LOG = get_logger('report') diff --git a/libcodechecker/analyze/ctu_manager.py b/analyzer/codechecker/analyze/ctu_manager.py similarity index 98% rename from libcodechecker/analyze/ctu_manager.py rename to analyzer/codechecker/analyze/ctu_manager.py index b6de4347da..a81c3f328d 100644 --- a/libcodechecker/analyze/ctu_manager.py +++ b/analyzer/codechecker/analyze/ctu_manager.py @@ -15,10 +15,11 @@ import shutil import tempfile -from libcodechecker.analyze.analyzers import analyzer_base -from libcodechecker.analyze.analyzers import ctu_triple_arch from libcodechecker.logger import get_logger +from .analyzers import analyzer_base +from .analyzers import ctu_triple_arch + LOG = get_logger('analyzer') diff --git a/libcodechecker/analyze/gcc_toolchain.py b/analyzer/codechecker/analyze/gcc_toolchain.py similarity index 100% rename from libcodechecker/analyze/gcc_toolchain.py rename to analyzer/codechecker/analyze/gcc_toolchain.py diff --git a/libcodechecker/analyze/host_check.py b/analyzer/codechecker/analyze/host_check.py similarity index 100% rename from libcodechecker/analyze/host_check.py rename to analyzer/codechecker/analyze/host_check.py diff --git a/libcodechecker/analyze/pre_analysis_manager.py b/analyzer/codechecker/analyze/pre_analysis_manager.py similarity index 95% rename from libcodechecker/analyze/pre_analysis_manager.py rename to analyzer/codechecker/analyze/pre_analysis_manager.py index 9b77f8f505..df05a4216a 100644 --- a/libcodechecker/analyze/pre_analysis_manager.py +++ b/analyzer/codechecker/analyze/pre_analysis_manager.py @@ -18,15 +18,15 @@ import traceback import uuid -from libcodechecker import util -from libcodechecker.analyze import ctu_manager -from libcodechecker.analyze import statistics_collector -from libcodechecker.analyze.analyzers import analyzer_base -from libcodechecker.analyze.analyzers import ctu_triple_arch -from libcodechecker.analyze.analyzers.analyzer_clangsa import ClangSA from libcodechecker.env import get_check_env from libcodechecker.logger import get_logger +from . import ctu_manager +from . import statistics_collector +from .analyzers import analyzer_base +from .analyzers import ctu_triple_arch +from .analyzers.analyzer_clangsa import ClangSA + LOG = get_logger('analyzer') diff --git a/libcodechecker/analyze/statistics_collector.py b/analyzer/codechecker/analyze/statistics_collector.py similarity index 99% rename from libcodechecker/analyze/statistics_collector.py rename to analyzer/codechecker/analyze/statistics_collector.py index 33e64a97f5..51de26dc54 100644 --- a/libcodechecker/analyze/statistics_collector.py +++ b/analyzer/codechecker/analyze/statistics_collector.py @@ -16,11 +16,10 @@ import os import re -from libcodechecker.analyze.analyzer_env import\ - extend_analyzer_cmd_with_resource_dir - from libcodechecker.logger import get_logger +from .analyzer_env import extend_analyzer_cmd_with_resource_dir + LOG = get_logger('analyzer') diff --git a/libcodechecker/analyze/tidy_output_converter.py b/analyzer/codechecker/analyze/tidy_output_converter.py similarity index 100% rename from libcodechecker/analyze/tidy_output_converter.py rename to analyzer/codechecker/analyze/tidy_output_converter.py diff --git a/analyzer/codechecker/buildlog/__init__.py b/analyzer/codechecker/buildlog/__init__.py new file mode 100644 index 0000000000..9f68a237a0 --- /dev/null +++ b/analyzer/codechecker/buildlog/__init__.py @@ -0,0 +1,5 @@ +# ------------------------------------------------------------------------- +# The CodeChecker Infrastructure +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# ------------------------------------------------------------------------- diff --git a/libcodechecker/log/build_action.py b/analyzer/codechecker/buildlog/build_action.py similarity index 100% rename from libcodechecker/log/build_action.py rename to analyzer/codechecker/buildlog/build_action.py diff --git a/libcodechecker/log/build_manager.py b/analyzer/codechecker/buildlog/build_manager.py similarity index 97% rename from libcodechecker/log/build_manager.py rename to analyzer/codechecker/buildlog/build_manager.py index c942da0d34..19104be532 100644 --- a/libcodechecker/log/build_manager.py +++ b/analyzer/codechecker/buildlog/build_manager.py @@ -17,9 +17,9 @@ import sys from uuid import uuid4 +from codechecker.analyze import analyzer_env + from libcodechecker.logger import get_logger -# TODO: Cross-reference between subpacakges... -from libcodechecker.analyze import analyzer_env from . import host_check diff --git a/libcodechecker/log/host_check.py b/analyzer/codechecker/buildlog/host_check.py similarity index 100% rename from libcodechecker/log/host_check.py rename to analyzer/codechecker/buildlog/host_check.py diff --git a/libcodechecker/log/log_parser.py b/analyzer/codechecker/buildlog/log_parser.py similarity index 99% rename from libcodechecker/log/log_parser.py rename to analyzer/codechecker/buildlog/log_parser.py index d318385554..cd9e0b6a11 100644 --- a/libcodechecker/log/log_parser.py +++ b/analyzer/codechecker/buildlog/log_parser.py @@ -19,10 +19,12 @@ import traceback # TODO: This is a cross-subpackage import! -from libcodechecker.analyze import gcc_toolchain -from libcodechecker.log.build_action import BuildAction +from codechecker.analyze import gcc_toolchain + from libcodechecker.logger import get_logger +from .build_action import BuildAction + LOG = get_logger('buildlogger') diff --git a/analyzer/requirements_py/dev/requirements.txt b/analyzer/requirements_py/dev/requirements.txt new file mode 100644 index 0000000000..16752df0a1 --- /dev/null +++ b/analyzer/requirements_py/dev/requirements.txt @@ -0,0 +1,4 @@ +pycodestyle==2.4.0 +psycopg2==2.7.1 +psutil==5.2.2 +portalocker==1.1.0 diff --git a/analyzer/requirements_py/test/requirements.txt b/analyzer/requirements_py/test/requirements.txt new file mode 100644 index 0000000000..bf35683890 --- /dev/null +++ b/analyzer/requirements_py/test/requirements.txt @@ -0,0 +1,3 @@ +nose==1.3.7 +pycodestyle==2.4.0 +pylint==1.9.4 diff --git a/analyzer/tests/Makefile b/analyzer/tests/Makefile new file mode 100644 index 0000000000..6a8bf7cdae --- /dev/null +++ b/analyzer/tests/Makefile @@ -0,0 +1,43 @@ +# Environment variables to run tests. + +# Test project configuration, tests are run on these files. +TEST_PROJECT ?= TEST_PROJ=$(ROOT)/tests/projects + +REPO_ROOT ?= REPO_ROOT=$(ROOT) + +# Nose test runner configuration options. +NOSECFG = --config .noserc + +test: test_unit test_functional test_build_logger test_tu_collector + +test_novenv: test_unit_novenv test_functional_novenv + +UNIT_TEST_CMD = $(REPO_ROOT) nosetests $(NOSECFG) tests/unit + +FUNCTIONAL_TEST_CMD = $(REPO_ROOT) $(TEST_PROJECT) \ + nosetests $(NOSECFG) tests/functional || exit 1 + +run_test: venv_dev + $(ACTIVATE_DEV_VENV) && $(REPO_ROOT) $(TEST_PROJECT) \ + nosetests $(NOSECFG) ${TEST} || exit 1 + +test_unit: venv_dev + $(ACTIVATE_DEV_VENV) && $(UNIT_TEST_CMD) + +test_unit_novenv: + $(UNIT_TEST_CMD) + +test_functional: venv_dev + python $(ROOT)/scripts/test/check_clang.py || exit 1; + $(ACTIVATE_DEV_VENV) && $(FUNCTIONAL_TEST_CMD) + +test_functional_novenv: + python $(ROOT)/scripts/test/check_clang.py || exit 1; + $(FUNCTIONAL_TEST_CMD) + +test_build_logger: + make -C $(ROOT)/vendor/build-logger -f Makefile.manual test + +test_tu_collector: + $(ACTIVATE_DEV_VENV) && \ + $(REPO_ROOT) make -C $(ROOT)/vendor/tu_collector test diff --git a/analyzer/tests/functional/__init__.py b/analyzer/tests/functional/__init__.py new file mode 100644 index 0000000000..cab7891efd --- /dev/null +++ b/analyzer/tests/functional/__init__.py @@ -0,0 +1,21 @@ +# ----------------------------------------------------------------------------- +# The CodeChecker Infrastructure +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# ----------------------------------------------------------------------------- +""" +Setup module paths and environment variables for the functional tests. +""" +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import + +import os +import sys + +# Setup the required environment variables for the tests. + +REPO_ROOT = os.path.abspath(os.environ['REPO_ROOT']) +PKG_ROOT = os.path.join(REPO_ROOT, 'build', 'CodeChecker') + +sys.path.append(os.path.join(REPO_ROOT)) diff --git a/tests/functional/analyze/__init__.py b/analyzer/tests/functional/analyze/__init__.py similarity index 100% rename from tests/functional/analyze/__init__.py rename to analyzer/tests/functional/analyze/__init__.py diff --git a/tests/functional/analyze/test_analyze.py b/analyzer/tests/functional/analyze/test_analyze.py similarity index 100% rename from tests/functional/analyze/test_analyze.py rename to analyzer/tests/functional/analyze/test_analyze.py diff --git a/tests/functional/analyze/test_files/failure.c b/analyzer/tests/functional/analyze/test_files/failure.c similarity index 100% rename from tests/functional/analyze/test_files/failure.c rename to analyzer/tests/functional/analyze/test_files/failure.c diff --git a/tests/functional/analyze/test_files/includes/simple.h b/analyzer/tests/functional/analyze/test_files/includes/simple.h similarity index 100% rename from tests/functional/analyze/test_files/includes/simple.h rename to analyzer/tests/functional/analyze/test_files/includes/simple.h diff --git a/tests/functional/analyze/test_files/simple.c b/analyzer/tests/functional/analyze/test_files/simple.c similarity index 100% rename from tests/functional/analyze/test_files/simple.c rename to analyzer/tests/functional/analyze/test_files/simple.c diff --git a/tests/functional/analyze/test_files/simple.cpp b/analyzer/tests/functional/analyze/test_files/simple.cpp similarity index 100% rename from tests/functional/analyze/test_files/simple.cpp rename to analyzer/tests/functional/analyze/test_files/simple.cpp diff --git a/tests/functional/analyze/test_files/success.c b/analyzer/tests/functional/analyze/test_files/success.c similarity index 100% rename from tests/functional/analyze/test_files/success.c rename to analyzer/tests/functional/analyze/test_files/success.c diff --git a/tests/functional/analyze_and_parse/__init__.py b/analyzer/tests/functional/analyze_and_parse/__init__.py similarity index 100% rename from tests/functional/analyze_and_parse/__init__.py rename to analyzer/tests/functional/analyze_and_parse/__init__.py diff --git a/tests/functional/analyze_and_parse/test_analyze_and_parse.py b/analyzer/tests/functional/analyze_and_parse/test_analyze_and_parse.py similarity index 100% rename from tests/functional/analyze_and_parse/test_analyze_and_parse.py rename to analyzer/tests/functional/analyze_and_parse/test_analyze_and_parse.py diff --git a/tests/functional/analyze_and_parse/test_files/Makefile b/analyzer/tests/functional/analyze_and_parse/test_files/Makefile similarity index 100% rename from tests/functional/analyze_and_parse/test_files/Makefile rename to analyzer/tests/functional/analyze_and_parse/test_files/Makefile diff --git a/tests/functional/analyze_and_parse/test_files/compiler_warning.cpp b/analyzer/tests/functional/analyze_and_parse/test_files/compiler_warning.cpp similarity index 100% rename from tests/functional/analyze_and_parse/test_files/compiler_warning.cpp rename to analyzer/tests/functional/analyze_and_parse/test_files/compiler_warning.cpp diff --git a/tests/functional/analyze_and_parse/test_files/compiler_warning_no_warn.output b/analyzer/tests/functional/analyze_and_parse/test_files/compiler_warning_no_warn.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/compiler_warning_no_warn.output rename to analyzer/tests/functional/analyze_and_parse/test_files/compiler_warning_no_warn.output diff --git a/tests/functional/analyze_and_parse/test_files/compiler_warning_simple.output b/analyzer/tests/functional/analyze_and_parse/test_files/compiler_warning_simple.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/compiler_warning_simple.output rename to analyzer/tests/functional/analyze_and_parse/test_files/compiler_warning_simple.output diff --git a/tests/functional/analyze_and_parse/test_files/compiler_warning_wno_group.output b/analyzer/tests/functional/analyze_and_parse/test_files/compiler_warning_wno_group.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/compiler_warning_wno_group.output rename to analyzer/tests/functional/analyze_and_parse/test_files/compiler_warning_wno_group.output diff --git a/tests/functional/analyze_and_parse/test_files/compiler_warning_wno_simple1.output b/analyzer/tests/functional/analyze_and_parse/test_files/compiler_warning_wno_simple1.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/compiler_warning_wno_simple1.output rename to analyzer/tests/functional/analyze_and_parse/test_files/compiler_warning_wno_simple1.output diff --git a/tests/functional/analyze_and_parse/test_files/compiler_warning_wno_simple2.output b/analyzer/tests/functional/analyze_and_parse/test_files/compiler_warning_wno_simple2.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/compiler_warning_wno_simple2.output rename to analyzer/tests/functional/analyze_and_parse/test_files/compiler_warning_wno_simple2.output diff --git a/tests/functional/analyze_and_parse/test_files/compiler_warning_wunused.output b/analyzer/tests/functional/analyze_and_parse/test_files/compiler_warning_wunused.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/compiler_warning_wunused.output rename to analyzer/tests/functional/analyze_and_parse/test_files/compiler_warning_wunused.output diff --git a/tests/functional/analyze_and_parse/test_files/context_free_hash.output b/analyzer/tests/functional/analyze_and_parse/test_files/context_free_hash.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/context_free_hash.output rename to analyzer/tests/functional/analyze_and_parse/test_files/context_free_hash.output diff --git a/tests/functional/analyze_and_parse/test_files/context_hash.cpp b/analyzer/tests/functional/analyze_and_parse/test_files/context_hash.cpp similarity index 100% rename from tests/functional/analyze_and_parse/test_files/context_hash.cpp rename to analyzer/tests/functional/analyze_and_parse/test_files/context_hash.cpp diff --git a/tests/functional/analyze_and_parse/test_files/context_sensitive_hash.output b/analyzer/tests/functional/analyze_and_parse/test_files/context_sensitive_hash.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/context_sensitive_hash.output rename to analyzer/tests/functional/analyze_and_parse/test_files/context_sensitive_hash.output diff --git a/tests/functional/analyze_and_parse/test_files/macros.output b/analyzer/tests/functional/analyze_and_parse/test_files/macros.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/macros.output rename to analyzer/tests/functional/analyze_and_parse/test_files/macros.output diff --git a/tests/functional/analyze_and_parse/test_files/multi_error.cpp b/analyzer/tests/functional/analyze_and_parse/test_files/multi_error.cpp similarity index 100% rename from tests/functional/analyze_and_parse/test_files/multi_error.cpp rename to analyzer/tests/functional/analyze_and_parse/test_files/multi_error.cpp diff --git a/tests/functional/analyze_and_parse/test_files/multi_error.en1.output b/analyzer/tests/functional/analyze_and_parse/test_files/multi_error.en1.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/multi_error.en1.output rename to analyzer/tests/functional/analyze_and_parse/test_files/multi_error.en1.output diff --git a/tests/functional/analyze_and_parse/test_files/multi_error.en2.output b/analyzer/tests/functional/analyze_and_parse/test_files/multi_error.en2.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/multi_error.en2.output rename to analyzer/tests/functional/analyze_and_parse/test_files/multi_error.en2.output diff --git a/tests/functional/analyze_and_parse/test_files/multi_error.output b/analyzer/tests/functional/analyze_and_parse/test_files/multi_error.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/multi_error.output rename to analyzer/tests/functional/analyze_and_parse/test_files/multi_error.output diff --git a/tests/functional/analyze_and_parse/test_files/multi_error.steps.output b/analyzer/tests/functional/analyze_and_parse/test_files/multi_error.steps.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/multi_error.steps.output rename to analyzer/tests/functional/analyze_and_parse/test_files/multi_error.steps.output diff --git a/tests/functional/analyze_and_parse/test_files/multi_error_skipped.output b/analyzer/tests/functional/analyze_and_parse/test_files/multi_error_skipped.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/multi_error_skipped.output rename to analyzer/tests/functional/analyze_and_parse/test_files/multi_error_skipped.output diff --git a/tests/functional/analyze_and_parse/test_files/multi_error_suppress.cpp b/analyzer/tests/functional/analyze_and_parse/test_files/multi_error_suppress.cpp similarity index 100% rename from tests/functional/analyze_and_parse/test_files/multi_error_suppress.cpp rename to analyzer/tests/functional/analyze_and_parse/test_files/multi_error_suppress.cpp diff --git a/tests/functional/analyze_and_parse/test_files/multi_error_suppress.output b/analyzer/tests/functional/analyze_and_parse/test_files/multi_error_suppress.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/multi_error_suppress.output rename to analyzer/tests/functional/analyze_and_parse/test_files/multi_error_suppress.output diff --git a/tests/functional/analyze_and_parse/test_files/multi_error_suppress_cstyle.cpp b/analyzer/tests/functional/analyze_and_parse/test_files/multi_error_suppress_cstyle.cpp similarity index 100% rename from tests/functional/analyze_and_parse/test_files/multi_error_suppress_cstyle.cpp rename to analyzer/tests/functional/analyze_and_parse/test_files/multi_error_suppress_cstyle.cpp diff --git a/tests/functional/analyze_and_parse/test_files/multi_error_suppress_cstyle.output b/analyzer/tests/functional/analyze_and_parse/test_files/multi_error_suppress_cstyle.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/multi_error_suppress_cstyle.output rename to analyzer/tests/functional/analyze_and_parse/test_files/multi_error_suppress_cstyle.output diff --git a/tests/functional/analyze_and_parse/test_files/multi_error_suppress_typo.cpp b/analyzer/tests/functional/analyze_and_parse/test_files/multi_error_suppress_typo.cpp similarity index 100% rename from tests/functional/analyze_and_parse/test_files/multi_error_suppress_typo.cpp rename to analyzer/tests/functional/analyze_and_parse/test_files/multi_error_suppress_typo.cpp diff --git a/tests/functional/analyze_and_parse/test_files/multi_error_suppress_typo.output b/analyzer/tests/functional/analyze_and_parse/test_files/multi_error_suppress_typo.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/multi_error_suppress_typo.output rename to analyzer/tests/functional/analyze_and_parse/test_files/multi_error_suppress_typo.output diff --git a/tests/functional/analyze_and_parse/test_files/nofail.cpp b/analyzer/tests/functional/analyze_and_parse/test_files/nofail.cpp similarity index 100% rename from tests/functional/analyze_and_parse/test_files/nofail.cpp rename to analyzer/tests/functional/analyze_and_parse/test_files/nofail.cpp diff --git a/tests/functional/analyze_and_parse/test_files/nofail.output b/analyzer/tests/functional/analyze_and_parse/test_files/nofail.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/nofail.output rename to analyzer/tests/functional/analyze_and_parse/test_files/nofail.output diff --git a/tests/functional/analyze_and_parse/test_files/nofail.steps.output b/analyzer/tests/functional/analyze_and_parse/test_files/nofail.steps.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/nofail.steps.output rename to analyzer/tests/functional/analyze_and_parse/test_files/nofail.steps.output diff --git a/tests/functional/analyze_and_parse/test_files/notes.output b/analyzer/tests/functional/analyze_and_parse/test_files/notes.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/notes.output rename to analyzer/tests/functional/analyze_and_parse/test_files/notes.output diff --git a/tests/functional/analyze_and_parse/test_files/saargs_forward.cpp b/analyzer/tests/functional/analyze_and_parse/test_files/saargs_forward.cpp similarity index 100% rename from tests/functional/analyze_and_parse/test_files/saargs_forward.cpp rename to analyzer/tests/functional/analyze_and_parse/test_files/saargs_forward.cpp diff --git a/tests/functional/analyze_and_parse/test_files/saargs_forward.noforward.output b/analyzer/tests/functional/analyze_and_parse/test_files/saargs_forward.noforward.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/saargs_forward.noforward.output rename to analyzer/tests/functional/analyze_and_parse/test_files/saargs_forward.noforward.output diff --git a/tests/functional/analyze_and_parse/test_files/saargs_forward.output b/analyzer/tests/functional/analyze_and_parse/test_files/saargs_forward.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/saargs_forward.output rename to analyzer/tests/functional/analyze_and_parse/test_files/saargs_forward.output diff --git a/tests/functional/analyze_and_parse/test_files/saargs_forward.saargs.txt b/analyzer/tests/functional/analyze_and_parse/test_files/saargs_forward.saargs.txt similarity index 100% rename from tests/functional/analyze_and_parse/test_files/saargs_forward.saargs.txt rename to analyzer/tests/functional/analyze_and_parse/test_files/saargs_forward.saargs.txt diff --git a/tests/functional/analyze_and_parse/test_files/simple1.cpp b/analyzer/tests/functional/analyze_and_parse/test_files/simple1.cpp similarity index 100% rename from tests/functional/analyze_and_parse/test_files/simple1.cpp rename to analyzer/tests/functional/analyze_and_parse/test_files/simple1.cpp diff --git a/tests/functional/analyze_and_parse/test_files/simple1.deduplication.output b/analyzer/tests/functional/analyze_and_parse/test_files/simple1.deduplication.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/simple1.deduplication.output rename to analyzer/tests/functional/analyze_and_parse/test_files/simple1.deduplication.output diff --git a/tests/functional/analyze_and_parse/test_files/simple1.output b/analyzer/tests/functional/analyze_and_parse/test_files/simple1.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/simple1.output rename to analyzer/tests/functional/analyze_and_parse/test_files/simple1.output diff --git a/tests/functional/analyze_and_parse/test_files/simple1.steps.output b/analyzer/tests/functional/analyze_and_parse/test_files/simple1.steps.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/simple1.steps.output rename to analyzer/tests/functional/analyze_and_parse/test_files/simple1.steps.output diff --git a/tests/functional/analyze_and_parse/test_files/simple2.cpp b/analyzer/tests/functional/analyze_and_parse/test_files/simple2.cpp similarity index 100% rename from tests/functional/analyze_and_parse/test_files/simple2.cpp rename to analyzer/tests/functional/analyze_and_parse/test_files/simple2.cpp diff --git a/tests/functional/analyze_and_parse/test_files/simple2.output b/analyzer/tests/functional/analyze_and_parse/test_files/simple2.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/simple2.output rename to analyzer/tests/functional/analyze_and_parse/test_files/simple2.output diff --git a/tests/functional/analyze_and_parse/test_files/simple2.steps.output b/analyzer/tests/functional/analyze_and_parse/test_files/simple2.steps.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/simple2.steps.output rename to analyzer/tests/functional/analyze_and_parse/test_files/simple2.steps.output diff --git a/tests/functional/analyze_and_parse/test_files/skiplist.txt b/analyzer/tests/functional/analyze_and_parse/test_files/skiplist.txt similarity index 100% rename from tests/functional/analyze_and_parse/test_files/skiplist.txt rename to analyzer/tests/functional/analyze_and_parse/test_files/skiplist.txt diff --git a/tests/functional/analyze_and_parse/test_files/source_code_comments.cpp b/analyzer/tests/functional/analyze_and_parse/test_files/source_code_comments.cpp similarity index 100% rename from tests/functional/analyze_and_parse/test_files/source_code_comments.cpp rename to analyzer/tests/functional/analyze_and_parse/test_files/source_code_comments.cpp diff --git a/tests/functional/analyze_and_parse/test_files/source_code_comments.output b/analyzer/tests/functional/analyze_and_parse/test_files/source_code_comments.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/source_code_comments.output rename to analyzer/tests/functional/analyze_and_parse/test_files/source_code_comments.output diff --git a/tests/functional/analyze_and_parse/test_files/tidy_check.cpp b/analyzer/tests/functional/analyze_and_parse/test_files/tidy_check.cpp similarity index 100% rename from tests/functional/analyze_and_parse/test_files/tidy_check.cpp rename to analyzer/tests/functional/analyze_and_parse/test_files/tidy_check.cpp diff --git a/tests/functional/analyze_and_parse/test_files/tidy_check.output b/analyzer/tests/functional/analyze_and_parse/test_files/tidy_check.output similarity index 100% rename from tests/functional/analyze_and_parse/test_files/tidy_check.output rename to analyzer/tests/functional/analyze_and_parse/test_files/tidy_check.output diff --git a/tests/functional/ctu/__init__.py b/analyzer/tests/functional/ctu/__init__.py similarity index 100% rename from tests/functional/ctu/__init__.py rename to analyzer/tests/functional/ctu/__init__.py diff --git a/tests/functional/ctu/test_ctu.py b/analyzer/tests/functional/ctu/test_ctu.py similarity index 100% rename from tests/functional/ctu/test_ctu.py rename to analyzer/tests/functional/ctu/test_ctu.py diff --git a/tests/functional/ctu/test_files/buildlog.json b/analyzer/tests/functional/ctu/test_files/buildlog.json similarity index 100% rename from tests/functional/ctu/test_files/buildlog.json rename to analyzer/tests/functional/ctu/test_files/buildlog.json diff --git a/tests/functional/ctu/test_files/lib.c b/analyzer/tests/functional/ctu/test_files/lib.c similarity index 100% rename from tests/functional/ctu/test_files/lib.c rename to analyzer/tests/functional/ctu/test_files/lib.c diff --git a/tests/functional/ctu/test_files/main.c b/analyzer/tests/functional/ctu/test_files/main.c similarity index 100% rename from tests/functional/ctu/test_files/main.c rename to analyzer/tests/functional/ctu/test_files/main.c diff --git a/tests/functional/ctu_failure/__init__.py b/analyzer/tests/functional/ctu_failure/__init__.py similarity index 100% rename from tests/functional/ctu_failure/__init__.py rename to analyzer/tests/functional/ctu_failure/__init__.py diff --git a/tests/functional/ctu_failure/test_ctu_failure.py b/analyzer/tests/functional/ctu_failure/test_ctu_failure.py similarity index 99% rename from tests/functional/ctu_failure/test_ctu_failure.py rename to analyzer/tests/functional/ctu_failure/test_ctu_failure.py index 7b8f127449..91804b6ee6 100644 --- a/tests/functional/ctu_failure/test_ctu_failure.py +++ b/analyzer/tests/functional/ctu_failure/test_ctu_failure.py @@ -15,12 +15,12 @@ import unittest import zipfile +from codechecker.analyze import host_check + from libtest import env from libtest import project from libtest.codechecker import call_command -from libcodechecker.analyze import host_check - NO_CTU_MESSAGE = "CTU is not supported" NO_DISPLAY_CTU_PROGRESS = "-analyzer-display-ctu-progress is not supported" diff --git a/tests/functional/host_check/__init__.py b/analyzer/tests/functional/host_check/__init__.py similarity index 100% rename from tests/functional/host_check/__init__.py rename to analyzer/tests/functional/host_check/__init__.py diff --git a/tests/functional/host_check/test_host_check.py b/analyzer/tests/functional/host_check/test_host_check.py similarity index 96% rename from tests/functional/host_check/test_host_check.py rename to analyzer/tests/functional/host_check/test_host_check.py index a9d72ece8c..f7c91531d5 100644 --- a/tests/functional/host_check/test_host_check.py +++ b/analyzer/tests/functional/host_check/test_host_check.py @@ -9,9 +9,10 @@ from __future__ import print_function from __future__ import division from __future__ import absolute_import + import unittest -import libcodechecker.analyze.host_check as hc +import codechecker.analyze.host_check as hc class Test_has_analyzer_feature(unittest.TestCase): diff --git a/analyzer/tests/libtest/__init__.py b/analyzer/tests/libtest/__init__.py new file mode 100644 index 0000000000..55bce2ecca --- /dev/null +++ b/analyzer/tests/libtest/__init__.py @@ -0,0 +1,5 @@ +# ----------------------------------------------------------------------------- +# The CodeChecker Infrastructure +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# ----------------------------------------------------------------------------- diff --git a/analyzer/tests/libtest/codechecker.py b/analyzer/tests/libtest/codechecker.py new file mode 100644 index 0000000000..f49977e0c0 --- /dev/null +++ b/analyzer/tests/libtest/codechecker.py @@ -0,0 +1,41 @@ +# ----------------------------------------------------------------------------- +# The CodeChecker Infrastructure +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# ----------------------------------------------------------------------------- +""" +Helper commands to run CodeChecker in the tests easier. +""" +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import + +import subprocess + + +def call_command(cmd, cwd, env): + """ + Execute a process in a test case. If the run is successful do not bloat + the test output, but in case of any failure dump stdout and stderr. + Returns the utf decoded (stdout, stderr) pair of strings. + """ + def show(out, err): + print("\nTEST execute stdout:\n") + print(out.decode("utf-8")) + print("\nTEST execute stderr:\n") + print(err.decode("utf-8")) + try: + proc = subprocess.Popen(cmd, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + cwd=cwd, env=env) + out, err = proc.communicate() + if proc.returncode != 0: + show(out, err) + print('Unsuccessful run: "' + ' '.join(cmd) + '"') + raise Exception("Unsuccessful run of command.") + return out.decode("utf-8"), err.decode("utf-8") + except OSError: + show(out, err) + print('Failed to run: "' + ' '.join(cmd) + '"') + raise diff --git a/analyzer/tests/libtest/env.py b/analyzer/tests/libtest/env.py new file mode 100644 index 0000000000..2316c78765 --- /dev/null +++ b/analyzer/tests/libtest/env.py @@ -0,0 +1,44 @@ +# ----------------------------------------------------------------------------- +# The CodeChecker Infrastructure +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# ----------------------------------------------------------------------------- +""" +Test environment setup and configuration helpers. +""" +from __future__ import absolute_import +from __future__ import print_function +from __future__ import division + +import os +import tempfile + +from functional import PKG_ROOT +from functional import REPO_ROOT + + +def codechecker_env(): + checker_env = os.environ.copy() + cc_bin = os.path.join(PKG_ROOT, 'bin') + checker_env['PATH'] = cc_bin + ":" + checker_env['PATH'] + return checker_env + + +def test_proj_root(): + return os.path.abspath(os.environ['TEST_PROJ']) + + +def codechecker_cmd(): + return os.path.join(PKG_ROOT, 'bin', 'CodeChecker') + + +def get_workspace(test_id='test'): + tmp_dir = os.path.join(REPO_ROOT, 'build') + base_dir = os.path.join(tmp_dir, 'workspace') + if not os.path.exists(base_dir): + os.makedirs(base_dir) + + if test_id: + return tempfile.mkdtemp(prefix=test_id+"-", dir=base_dir) + else: + return base_dir diff --git a/analyzer/tests/libtest/project.py b/analyzer/tests/libtest/project.py new file mode 100644 index 0000000000..6cc0546094 --- /dev/null +++ b/analyzer/tests/libtest/project.py @@ -0,0 +1,18 @@ +# ----------------------------------------------------------------------------- +# The CodeChecker Infrastructure +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# ----------------------------------------------------------------------------- +""" +Test project helpers. +""" +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import + +import os +from . import env + + +def path(test_project): + return os.path.join(env.test_proj_root(), test_project) diff --git a/analyzer/tests/unit/__init__.py b/analyzer/tests/unit/__init__.py new file mode 100644 index 0000000000..5b66bd56e8 --- /dev/null +++ b/analyzer/tests/unit/__init__.py @@ -0,0 +1,19 @@ +# ----------------------------------------------------------------------------- +# The CodeChecker Infrastructure +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# ----------------------------------------------------------------------------- +""" +Setup python modules for the unit tests. +""" +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import + +import os +import sys + +REPO_ROOT = os.path.abspath(os.environ['REPO_ROOT']) +PKG_ROOT = os.path.join(REPO_ROOT, 'build', 'CodeChecker') + +sys.path.append(REPO_ROOT) diff --git a/tests/unit/logparser_test_files/include.json b/analyzer/tests/unit/logparser_test_files/include.json similarity index 100% rename from tests/unit/logparser_test_files/include.json rename to analyzer/tests/unit/logparser_test_files/include.json diff --git a/tests/unit/logparser_test_files/intercept-new-space.json b/analyzer/tests/unit/logparser_test_files/intercept-new-space.json similarity index 100% rename from tests/unit/logparser_test_files/intercept-new-space.json rename to analyzer/tests/unit/logparser_test_files/intercept-new-space.json diff --git a/tests/unit/logparser_test_files/intercept-new.json b/analyzer/tests/unit/logparser_test_files/intercept-new.json similarity index 100% rename from tests/unit/logparser_test_files/intercept-new.json rename to analyzer/tests/unit/logparser_test_files/intercept-new.json diff --git a/tests/unit/logparser_test_files/intercept-old-space.json b/analyzer/tests/unit/logparser_test_files/intercept-old-space.json similarity index 100% rename from tests/unit/logparser_test_files/intercept-old-space.json rename to analyzer/tests/unit/logparser_test_files/intercept-old-space.json diff --git a/tests/unit/logparser_test_files/intercept-old.json b/analyzer/tests/unit/logparser_test_files/intercept-old.json similarity index 100% rename from tests/unit/logparser_test_files/intercept-old.json rename to analyzer/tests/unit/logparser_test_files/intercept-old.json diff --git a/tests/unit/logparser_test_files/ldlogger-new-space.json b/analyzer/tests/unit/logparser_test_files/ldlogger-new-space.json similarity index 100% rename from tests/unit/logparser_test_files/ldlogger-new-space.json rename to analyzer/tests/unit/logparser_test_files/ldlogger-new-space.json diff --git a/tests/unit/logparser_test_files/ldlogger-new.json b/analyzer/tests/unit/logparser_test_files/ldlogger-new.json similarity index 100% rename from tests/unit/logparser_test_files/ldlogger-new.json rename to analyzer/tests/unit/logparser_test_files/ldlogger-new.json diff --git a/tests/unit/logparser_test_files/ldlogger-old.json b/analyzer/tests/unit/logparser_test_files/ldlogger-old.json similarity index 100% rename from tests/unit/logparser_test_files/ldlogger-old.json rename to analyzer/tests/unit/logparser_test_files/ldlogger-old.json diff --git a/tests/unit/test_buildcmd_escaping.py b/analyzer/tests/unit/test_buildcmd_escaping.py similarity index 95% rename from tests/unit/test_buildcmd_escaping.py rename to analyzer/tests/unit/test_buildcmd_escaping.py index 00a112e444..2792097754 100644 --- a/tests/unit/test_buildcmd_escaping.py +++ b/analyzer/tests/unit/test_buildcmd_escaping.py @@ -9,21 +9,19 @@ from __future__ import division from __future__ import absolute_import -import json import os import shutil import tempfile import unittest -from contextlib import closing try: from StringIO import StringIO except ImportError: from io import BytesIO as StringIO -from libcodechecker.log import build_manager -from libcodechecker.log import log_parser -from libcodechecker.analyze.analyzers import analyzer_base +from codechecker.analyze.analyzers import analyzer_base +from codechecker.buildlog import build_manager +from codechecker.buildlog import log_parser class BuildCmdTestNose(unittest.TestCase): diff --git a/tests/unit/test_gcc_toolchain.py b/analyzer/tests/unit/test_gcc_toolchain.py similarity index 97% rename from tests/unit/test_gcc_toolchain.py rename to analyzer/tests/unit/test_gcc_toolchain.py index 7124ff99eb..7b9fcf29eb 100644 --- a/tests/unit/test_gcc_toolchain.py +++ b/analyzer/tests/unit/test_gcc_toolchain.py @@ -13,7 +13,7 @@ import shlex import unittest -from libcodechecker.analyze import gcc_toolchain +from codechecker.analyze import gcc_toolchain class GCCToolchainTest(unittest.TestCase): diff --git a/tests/unit/test_log_parser.py b/analyzer/tests/unit/test_log_parser.py similarity index 99% rename from tests/unit/test_log_parser.py rename to analyzer/tests/unit/test_log_parser.py index 07cef49521..e0160d9829 100644 --- a/tests/unit/test_log_parser.py +++ b/analyzer/tests/unit/test_log_parser.py @@ -11,9 +11,9 @@ import os import unittest -from StringIO import StringIO -from libcodechecker.log import log_parser +from codechecker.buildlog import log_parser + from libcodechecker.util import load_json_or_empty diff --git a/tests/unit/test_option_parser.py b/analyzer/tests/unit/test_option_parser.py similarity index 98% rename from tests/unit/test_option_parser.py rename to analyzer/tests/unit/test_option_parser.py index 2e64614d5b..4a2c297734 100644 --- a/tests/unit/test_option_parser.py +++ b/analyzer/tests/unit/test_option_parser.py @@ -11,8 +11,8 @@ import unittest -from libcodechecker.log import log_parser -from libcodechecker.log.build_action import BuildAction +from codechecker.buildlog import log_parser +from codechecker.buildlog.build_action import BuildAction class OptionParserTest(unittest.TestCase): diff --git a/tests/unit/test_statistics_collectors.py b/analyzer/tests/unit/test_statistics_collectors.py similarity index 99% rename from tests/unit/test_statistics_collectors.py rename to analyzer/tests/unit/test_statistics_collectors.py index 18657c68a2..09ad4a1b67 100644 --- a/tests/unit/test_statistics_collectors.py +++ b/analyzer/tests/unit/test_statistics_collectors.py @@ -11,7 +11,7 @@ import unittest -from libcodechecker.analyze import statistics_collector +from codechecker.analyze import statistics_collector class statistics_collectorsTest(unittest.TestCase): diff --git a/tests/unit/test_tidy_output_converter.py b/analyzer/tests/unit/test_tidy_output_converter.py similarity index 99% rename from tests/unit/test_tidy_output_converter.py rename to analyzer/tests/unit/test_tidy_output_converter.py index d4e75f5381..6cf90a65dc 100644 --- a/tests/unit/test_tidy_output_converter.py +++ b/analyzer/tests/unit/test_tidy_output_converter.py @@ -21,7 +21,7 @@ except ImportError: from io import BytesIO as StringIO -import libcodechecker.analyze.tidy_output_converter as tidy_out_conv +import codechecker.analyze.tidy_output_converter as tidy_out_conv OLD_PWD = None diff --git a/tests/unit/tidy_output_test_files/abs.out b/analyzer/tests/unit/tidy_output_test_files/abs.out similarity index 100% rename from tests/unit/tidy_output_test_files/abs.out rename to analyzer/tests/unit/tidy_output_test_files/abs.out diff --git a/tests/unit/tidy_output_test_files/empty.plist b/analyzer/tests/unit/tidy_output_test_files/empty.plist similarity index 100% rename from tests/unit/tidy_output_test_files/empty.plist rename to analyzer/tests/unit/tidy_output_test_files/empty.plist diff --git a/tests/unit/tidy_output_test_files/empty1.out b/analyzer/tests/unit/tidy_output_test_files/empty1.out similarity index 100% rename from tests/unit/tidy_output_test_files/empty1.out rename to analyzer/tests/unit/tidy_output_test_files/empty1.out diff --git a/tests/unit/tidy_output_test_files/empty2.out b/analyzer/tests/unit/tidy_output_test_files/empty2.out similarity index 100% rename from tests/unit/tidy_output_test_files/empty2.out rename to analyzer/tests/unit/tidy_output_test_files/empty2.out diff --git a/tests/unit/tidy_output_test_files/files/Makefile b/analyzer/tests/unit/tidy_output_test_files/files/Makefile similarity index 100% rename from tests/unit/tidy_output_test_files/files/Makefile rename to analyzer/tests/unit/tidy_output_test_files/files/Makefile diff --git a/tests/unit/tidy_output_test_files/files/test.cpp b/analyzer/tests/unit/tidy_output_test_files/files/test.cpp similarity index 100% rename from tests/unit/tidy_output_test_files/files/test.cpp rename to analyzer/tests/unit/tidy_output_test_files/files/test.cpp diff --git a/tests/unit/tidy_output_test_files/files/test2.cpp b/analyzer/tests/unit/tidy_output_test_files/files/test2.cpp similarity index 100% rename from tests/unit/tidy_output_test_files/files/test2.cpp rename to analyzer/tests/unit/tidy_output_test_files/files/test2.cpp diff --git a/tests/unit/tidy_output_test_files/files/test3.cpp b/analyzer/tests/unit/tidy_output_test_files/files/test3.cpp similarity index 100% rename from tests/unit/tidy_output_test_files/files/test3.cpp rename to analyzer/tests/unit/tidy_output_test_files/files/test3.cpp diff --git a/tests/unit/tidy_output_test_files/files/test3.hh b/analyzer/tests/unit/tidy_output_test_files/files/test3.hh similarity index 100% rename from tests/unit/tidy_output_test_files/files/test3.hh rename to analyzer/tests/unit/tidy_output_test_files/files/test3.hh diff --git a/tests/unit/tidy_output_test_files/files/test4.cpp b/analyzer/tests/unit/tidy_output_test_files/files/test4.cpp similarity index 100% rename from tests/unit/tidy_output_test_files/files/test4.cpp rename to analyzer/tests/unit/tidy_output_test_files/files/test4.cpp diff --git a/tests/unit/tidy_output_test_files/tidy1.out b/analyzer/tests/unit/tidy_output_test_files/tidy1.out similarity index 100% rename from tests/unit/tidy_output_test_files/tidy1.out rename to analyzer/tests/unit/tidy_output_test_files/tidy1.out diff --git a/tests/unit/tidy_output_test_files/tidy1.plist b/analyzer/tests/unit/tidy_output_test_files/tidy1.plist similarity index 100% rename from tests/unit/tidy_output_test_files/tidy1.plist rename to analyzer/tests/unit/tidy_output_test_files/tidy1.plist diff --git a/tests/unit/tidy_output_test_files/tidy1_v6.out b/analyzer/tests/unit/tidy_output_test_files/tidy1_v6.out similarity index 100% rename from tests/unit/tidy_output_test_files/tidy1_v6.out rename to analyzer/tests/unit/tidy_output_test_files/tidy1_v6.out diff --git a/tests/unit/tidy_output_test_files/tidy2.out b/analyzer/tests/unit/tidy_output_test_files/tidy2.out similarity index 100% rename from tests/unit/tidy_output_test_files/tidy2.out rename to analyzer/tests/unit/tidy_output_test_files/tidy2.out diff --git a/tests/unit/tidy_output_test_files/tidy2.plist b/analyzer/tests/unit/tidy_output_test_files/tidy2.plist similarity index 100% rename from tests/unit/tidy_output_test_files/tidy2.plist rename to analyzer/tests/unit/tidy_output_test_files/tidy2.plist diff --git a/tests/unit/tidy_output_test_files/tidy2_v6.out b/analyzer/tests/unit/tidy_output_test_files/tidy2_v6.out similarity index 100% rename from tests/unit/tidy_output_test_files/tidy2_v6.out rename to analyzer/tests/unit/tidy_output_test_files/tidy2_v6.out diff --git a/tests/unit/tidy_output_test_files/tidy3.out b/analyzer/tests/unit/tidy_output_test_files/tidy3.out similarity index 100% rename from tests/unit/tidy_output_test_files/tidy3.out rename to analyzer/tests/unit/tidy_output_test_files/tidy3.out diff --git a/tests/unit/tidy_output_test_files/tidy3.plist b/analyzer/tests/unit/tidy_output_test_files/tidy3.plist similarity index 100% rename from tests/unit/tidy_output_test_files/tidy3.plist rename to analyzer/tests/unit/tidy_output_test_files/tidy3.plist diff --git a/tests/unit/tidy_output_test_files/tidy4.out b/analyzer/tests/unit/tidy_output_test_files/tidy4.out similarity index 100% rename from tests/unit/tidy_output_test_files/tidy4.out rename to analyzer/tests/unit/tidy_output_test_files/tidy4.out diff --git a/tests/unit/tidy_output_test_files/tidy5.out b/analyzer/tests/unit/tidy_output_test_files/tidy5.out similarity index 100% rename from tests/unit/tidy_output_test_files/tidy5.out rename to analyzer/tests/unit/tidy_output_test_files/tidy5.out diff --git a/tests/unit/tidy_output_test_files/tidy5_v6.out b/analyzer/tests/unit/tidy_output_test_files/tidy5_v6.out similarity index 100% rename from tests/unit/tidy_output_test_files/tidy5_v6.out rename to analyzer/tests/unit/tidy_output_test_files/tidy5_v6.out diff --git a/tests/unit/tidy_output_test_files/tidy6.out b/analyzer/tests/unit/tidy_output_test_files/tidy6.out similarity index 100% rename from tests/unit/tidy_output_test_files/tidy6.out rename to analyzer/tests/unit/tidy_output_test_files/tidy6.out diff --git a/bin/CodeChecker.py b/bin/CodeChecker.py index 9ae4202bc4..7df1cf4ef0 100755 --- a/bin/CodeChecker.py +++ b/bin/CodeChecker.py @@ -17,8 +17,6 @@ import signal import sys -from shared.ttypes import RequestFailed - from libcodechecker import libhandlers @@ -99,12 +97,6 @@ def signal_handler(sig, frame): print("Interrupted by user...") sys.exit(1) - except RequestFailed as thrift_ex: - print("Server error.") - print("Error code: " + str(thrift_ex.errorCode)) - print("Error message: " + str(thrift_ex.message)) - sys.exit(1) - # Handle all exception, but print stacktrace. It is needed for atexit. # atexit does not work correctly when an unhandled exception occurred. # So in this case, the servers left running when the script exited. diff --git a/tests/add_new_func_test.py b/scripts/test/add_new_func_test.py similarity index 100% rename from tests/add_new_func_test.py rename to scripts/test/add_new_func_test.py diff --git a/tests/add_new_unit_test.py b/scripts/test/add_new_unit_test.py similarity index 100% rename from tests/add_new_unit_test.py rename to scripts/test/add_new_unit_test.py diff --git a/tests/check_clang.py b/scripts/test/check_clang.py similarity index 100% rename from tests/check_clang.py rename to scripts/test/check_clang.py diff --git a/tests/Makefile b/tests/Makefile index 824487ff28..dcaf054973 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -20,7 +20,7 @@ CLEAR_WORKSPACE_CMD = rm -rf $(BUILD_DIR)/workspace # Nose test runner configuration options. NOSECFG = --config .noserc -test: pycodestyle pylint test_unit test_functional test_build_logger test_tu_collector +test: pycodestyle pylint test_unit test_functional test_novenv: pycodestyle pylint test_unit_novenv test_functional_novenv @@ -76,11 +76,11 @@ test_functional: test_sqlite test_psql test_functional_novenv: test_sqlite_novenv test_psql_novenv test_sqlite: venv_dev - python tests/check_clang.py || exit 1; + python $(ROOT)/scripts/test/check_clang.py || exit 1; $(ACTIVATE_DEV_VENV) && $(CLEAR_WORKSPACE_CMD) && $(FUNCTIONAL_TEST_CMD) test_sqlite_novenv: - python tests/check_clang.py || exit 1; + python $(ROOT)/scripts/test/check_clang.py || exit 1; $(CLEAR_WORKSPACE_CMD) && $(FUNCTIONAL_TEST_CMD) test_psql: test_psql_psycopg2 test_psql_pg8000 @@ -88,7 +88,7 @@ test_psql: test_psql_psycopg2 test_psql_pg8000 test_psql_novenv: test_psql_psycopg2_novenv test_psql_pg8000_novenv test_psql_psycopg2: venv_dev - python tests/check_clang.py || exit 1; + python $(ROOT)/scripts/test/check_clang.py || exit 1; $(ACTIVATE_DEV_VENV) && \ $(DBUNAME) $(DBPORT) $(PSYCOPG2) $(DROP_DB_CMD) && \ $(DBUNAME) $(DBPORT) $(PSYCOPG2) $(MAKE_DB_CMD) && \ @@ -98,7 +98,7 @@ test_psql_psycopg2: venv_dev $(DBUNAME) $(DBPORT) $(PSYCOPG2) $(DROP_DB_CMD) test_psql_psycopg2_novenv: - python tests/check_clang.py || exit 1; + python $(ROOT)/scripts/test/check_clang.py || exit 1; $(DBUNAME) $(DBPORT) $(PSYCOPG2) $(DROP_DB_CMD) && \ $(DBUNAME) $(DBPORT) $(PSYCOPG2) $(MAKE_DB_CMD) && \ $(CLEAR_WORKSPACE_CMD) && \ @@ -107,7 +107,7 @@ test_psql_psycopg2_novenv: $(DBUNAME) $(DBPORT) $(PSYCOPG2) $(DROP_DB_CMD) test_psql_pg8000: venv_dev - python tests/check_clang.py || exit 1; + python $(ROOT)/scripts/test/check_clang.py || exit 1; $(ACTIVATE_DEV_VENV) && \ $(DBUNAME) $(DBPORT) $(PG8000) $(DROP_DB_CMD) && \ $(DBUNAME) $(DBPORT) $(PG8000) $(MAKE_DB_CMD) && \ @@ -117,7 +117,7 @@ test_psql_pg8000: venv_dev $(DBUNAME) $(DBPORT) $(PG8000) $(DROP_DB_CMD) test_psql_pg8000_novenv: - python tests/check_clang.py || exit 1; + python $(ROOT)/scripts/test/check_clang.py || exit 1; $(DBUNAME) $(DBPORT) $(PSYCOPG2) $(DROP_DB_CMD) && \ $(DBUNAME) $(DBPORT) $(PG8000) $(MAKE_DB_CMD) && \ $(CLEAR_WORKSPACE_CMD) && \ @@ -137,13 +137,3 @@ test_matrix_psql_psycopg2: pycodestyle test_unit test_psql_psycopg2 test_matrix_psql_pg8000: VENV_DEV_REQ_FILE = requirements_py/db_pg8000/requirements.txt test_matrix_psql_pg8000: pycodestyle test_unit test_psql_pg8000 - -clean_travis: - # Clean CodeChecker config files stored in the users home directory. - rm -rf ~/.codechecker* - -test_build_logger: - cd vendor/build-logger; make -f Makefile.manual test - -test_tu_collector: - cd vendor/tu_collector; $(REPO_ROOT) make test diff --git a/vendor/tu_collector/tests/tu_collector_test.py b/vendor/tu_collector/tests/tu_collector_test.py index da03dae982..9eb79dc12e 100644 --- a/vendor/tu_collector/tests/tu_collector_test.py +++ b/vendor/tu_collector/tests/tu_collector_test.py @@ -13,7 +13,6 @@ from __future__ import division from __future__ import absolute_import -import nose import os import subprocess import tempfile @@ -53,6 +52,8 @@ def test_file_existence(self): os.remove(zip_file_name) self.assertTrue( - any(map(lambda path: path.endswith('/main.cpp'), files))) + any(map(lambda path: path.endswith(os.path.join('/', 'main.cpp')), + files))) self.assertTrue( - any(map(lambda path: path.endswith('/vector'), files))) + any(map(lambda path: path.endswith(os.path.join('/', 'vector')), + files)))