URL: https://github.com/freeipa/freeipa/pull/439 Author: MartinBasti Title: #439: [WIP] [Py3] testing both py2/py3 in travis Action: synchronized
To pull the PR as Git branch: git remote add ghfreeipa https://github.com/freeipa/freeipa git fetch ghfreeipa pull/439/head:pr439 git checkout pr439
From 182650cef909592963e9f30423d2f3a7c045bd07 Mon Sep 17 00:00:00 2001 From: Martin Basti <mba...@redhat.com> Date: Tue, 7 Feb 2017 14:56:39 +0100 Subject: [PATCH 1/3] Build: allow to build only py2 rpms for fedora This is more or less for testing purposes of py2/py3 compatibility --- BUILD.txt | 5 +++++ Makefile.am | 4 ++-- freeipa.spec.in | 4 ++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/BUILD.txt b/BUILD.txt index 620adc3..9b5ff1d 100644 --- a/BUILD.txt +++ b/BUILD.txt @@ -30,6 +30,11 @@ It may be possible to do a simple make install but this has not been well-tested. Additional work is done in pre/post install scripts in the ipa spec file. +To build only python2 packages on fedora following steps are required: +$ autoreconf -i +$ ./configure +$ make rpms RPMBUILD_OPTS="--define 'with_python3 0'" + Developing plugins ------------------ diff --git a/Makefile.am b/Makefile.am index 9bfc899..0ad50e4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -106,7 +106,7 @@ rpms: $(VERSION_UPDATE_TARGET) $(MAKE) _rpms-body _rpms-body: _rpms-prep - rpmbuild --define "_topdir $(RPMBUILD)" -ba $(top_builddir)/$(PACKAGE).spec + rpmbuild --define "_topdir $(RPMBUILD)" -ba $(top_builddir)/$(PACKAGE).spec $(RPMBUILD_OPTS) cp $(RPMBUILD)/RPMS/*/*$$(cat $(top_builddir)/.version)*.rpm $(top_builddir)/dist/rpms/ cp $(RPMBUILD)/SRPMS/*$$(cat $(top_builddir)/.version)*.src.rpm $(top_builddir)/dist/srpms/ rm -f rm -f $(top_builddir)/.version @@ -115,7 +115,7 @@ srpms: $(VERSION_UPDATE_TARGET) $(MAKE) _srpms-body _srpms-body: _rpms-prep - rpmbuild --define "_topdir $(RPMBUILD)" -bs $(top_builddir)/$(PACKAGE).spec + rpmbuild --define "_topdir $(RPMBUILD)" -bs $(top_builddir)/$(PACKAGE).spec $(RPMBUILD_OPTS) cp $(RPMBUILD)/SRPMS/*$$(cat $(top_builddir)/.version)*.src.rpm $(top_builddir)/dist/srpms/ rm -f rm -f $(top_builddir)/.version diff --git a/freeipa.spec.in b/freeipa.spec.in index 27a979c..7e77b32 100644 --- a/freeipa.spec.in +++ b/freeipa.spec.in @@ -2,11 +2,15 @@ # subpackages %{!?ONLY_CLIENT:%global ONLY_CLIENT 0} +%if 0%{?with_python3:1} +# with_python3 already defined +%else %if 0%{?rhel} %global with_python3 0 %else %global with_python3 1 %endif +%endif # lint is not executed during rpmbuild # %%global with_lint 1 From aeef677b29279341d85994c9b969d0a0ba9c8743 Mon Sep 17 00:00:00 2001 From: Martin Basti <mba...@redhat.com> Date: Tue, 7 Feb 2017 17:23:54 +0100 Subject: [PATCH 2/3] Travis: build only py2 packages for py2 testing We will testing both py2 and py3 packages, first step is use only py2 builds for testing py2 packages --- .travis.yml | 2 ++ .travis_run_task.sh | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6301974..402c3ee 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,8 +15,10 @@ env: matrix: - TASK_TO_RUN="lint" - TASK_TO_RUN="run-tests" + PYTHON=/usr/bin/python2 TESTS_TO_RUN="test_xmlrpc/test_[a-k]*.py" - TASK_TO_RUN="run-tests" + PYTHON=/usr/bin/python2 TESTS_TO_RUN="test_cmdline test_install test_ipalib diff --git a/.travis_run_task.sh b/.travis_run_task.sh index 7d050b0..43fcaae 100755 --- a/.travis_run_task.sh +++ b/.travis_run_task.sh @@ -4,10 +4,17 @@ # # NOTE: this script is intended to run in Travis CI only -PYTHON="/usr/bin/python${TRAVIS_PYTHON_VERSION}" test_set="" developer_mode_opt="--developer-mode" +if [[ $PYTHON == "/usr/bin/python2" ]] +then +env_opt="RPMBUILD_OPTS=--define 'with_python3 0'" +else +env_opt="RPMBUILD_OPTS=" +fi + + function truncate_log_to_test_failures() { # chop off everything in the CI_RESULTS_LOG preceding pytest error output # if there are pytest errors in the log @@ -43,6 +50,7 @@ ipa-docker-test-runner -l $CI_RESULTS_LOG \ -c $TEST_RUNNER_CONFIG \ $developer_mode_opt \ --container-environment "PYTHON=$PYTHON" \ + --container-environment $env_opt \ --container-image $TEST_RUNNER_IMAGE \ --git-repo $TRAVIS_BUILD_DIR \ $TASK_TO_RUN $test_set From 3d24d7075b72e1ccc4953cb920888ef29b047ed1 Mon Sep 17 00:00:00 2001 From: Martin Basti <mba...@redhat.com> Date: Tue, 7 Feb 2017 18:29:08 +0100 Subject: [PATCH 3/3] Travis: enable temporal Py3 testing This testconfig is temporal until all plugins are migrated into py3. After that this temporal config file will be removed and used only the previous one again --- .test_runner_config_py3_temp.yaml | 154 ++++++++++++++++++++++++++++++++++++++ .travis.yml | 17 ++++- 2 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 .test_runner_config_py3_temp.yaml diff --git a/.test_runner_config_py3_temp.yaml b/.test_runner_config_py3_temp.yaml new file mode 100644 index 0000000..0e974ae --- /dev/null +++ b/.test_runner_config_py3_temp.yaml @@ -0,0 +1,154 @@ +# +# Copyright (C) 2017 FreeIPA Contributors see COPYING for license +# + +# Configuration file for the test runner used in Travis CI +# This config file is temporal and will be used only for migration period +# from py2 to fully supported py3 + +container: + detach: true + hostname: master.ipa.test + working_dir: /freeipa +host: + binds: + - /sys/fs/cgroup:/sys/fs/cgroup:ro + - /dev/urandom:/dev/random:ro + privileged: true + security_opt: + - label:disable + tmpfs: + - /tmp + - /run +server: + domain: ipa.test + password: Secret123 + realm: IPA.TEST +steps: + build: + - make V=0 ${make_target} + builddep: + - rm -rf /var/cache/dnf/* + - "dnf makecache fast || :" + - dnf builddep -y ${builddep_opts} --spec freeipa.spec.in --best --allowerasing + cleanup: + - chown -R ${uid}:${gid} ${container_working_dir} + configure: + - ./autogen.sh + install_packages: + - dnf install -y ${container_working_dir}/dist/rpms/*.rpm --best --allowerasing + - dnf install -y python3-mod_wsgi --best --allowerasing # Py3 temporary + install_server: + - ipa-server-install -U --domain ${server_domain} --realm ${server_realm} -p ${server_password} + -a ${server_password} --setup-dns --auto-forwarders + - ipa-kra-install -p ${server_password} + lint: + - PYTHON=/usr/bin/python2 make V=0 lint + - PYTHON=/usr/bin/python3 make V=0 pylint + prepare_tests: + - echo ${server_password} | kinit admin && ipa ping + - cp -r /etc/ipa/* ~/.ipa/ + - echo ${server_password} > ~/.ipa/.dmpw + - echo 'wait_for_dns=5' >> ~/.ipa/default.conf + run_tests: + - ipa-run-tests-3 ${tests_ignore} -k-test_dns_soa ${tests_verbose} ${path} +tests: + verbose: true + ignore: + - test_integration + - test_webui + - test_ipapython/test_keyring.py + # temporary ignore Py3 failing tests + - test_xmlrpc/test_add_remove_cert_cmd.py + - test_xmlrpc/test_attr.py + - test_xmlrpc/test_automember_plugin.py + - test_xmlrpc/test_automount_plugin.py + - test_xmlrpc/test_baseldap_plugin.py + - test_xmlrpc/test_batch_plugin.py + - test_xmlrpc/test_ca_plugin.py + - test_xmlrpc/test_caacl_plugin.py + - test_xmlrpc/test_caacl_profile_enforcement.py + - test_xmlrpc/test_cert_plugin.py + - test_xmlrpc/test_certprofile_plugin.py + - test_xmlrpc/test_config_plugin.py + - test_xmlrpc/test_delegation_plugin.py + - test_xmlrpc/test_dns_plugin.py + - test_xmlrpc/test_dns_realmdomains_integration.py + - test_xmlrpc/test_external_members.py + - test_xmlrpc/test_group_plugin.py + - test_xmlrpc/test_hbac_plugin.py + - test_xmlrpc/test_hbacsvcgroup_plugin.py + - test_xmlrpc/test_hbactest_plugin.py + - test_xmlrpc/test_host_plugin.py + - test_xmlrpc/test_hostgroup_plugin.py + - test_xmlrpc/test_idviews_plugin.py + - test_xmlrpc/test_kerberos_principal_aliases.py + - test_xmlrpc/test_krbtpolicy.py + - test_xmlrpc/test_location_plugin.py + - test_xmlrpc/test_nesting.py + - test_xmlrpc/test_netgroup_plugin.py + - test_xmlrpc/test_old_permission_plugin.py + - test_xmlrpc/test_passwd_plugin.py + - test_xmlrpc/test_permission_plugin.py + - test_xmlrpc/test_ping_plugin.py + - test_xmlrpc/test_privilege_plugin.py + - test_xmlrpc/test_pwpolicy_plugin.py + - test_xmlrpc/test_radiusproxy_plugin.py + - test_xmlrpc/test_range_plugin.py + - test_xmlrpc/test_realmdomains_plugin.py + - test_xmlrpc/test_replace.py + - test_xmlrpc/test_role_plugin.py + - test_xmlrpc/test_selfservice_plugin.py + - test_xmlrpc/test_selinuxusermap_plugin.py + - test_xmlrpc/test_service_plugin.py + - test_xmlrpc/test_servicedelegation_plugin.py + - test_xmlrpc/test_stageuser_plugin.py + - test_xmlrpc/test_sudocmd_plugin.py + - test_xmlrpc/test_sudocmdgroup_plugin.py + - test_xmlrpc/test_sudorule_plugin.py + - test_xmlrpc/test_trust_plugin.py + - test_xmlrpc/test_user_plugin.py + - test_xmlrpc/test_vault_plugin.py + - test_cmdline/cmdline.py + - test_cmdline/test_cli.py + - test_cmdline/test_help.py + - test_cmdline/test_ipagetkeytab.py + - test_install/test_updates.py + - test_ipaclient/test_csrgen.py + - test_ipalib/test_aci.py + - test_ipalib/test_backend.py + - test_ipalib/test_base.py + - test_ipalib/test_capabilities.py + - test_ipalib/test_cli.py + - test_ipalib/test_config.py + - test_ipalib/test_crud.py + - test_ipalib/test_errors.py + - test_ipalib/test_frontend.py + - test_ipalib/test_messages.py + - test_ipalib/test_output.py + - test_ipalib/test_parameters.py + - test_ipalib/test_plugable.py + - test_ipalib/test_rpc.py + - test_ipalib/test_text.py + - test_ipalib/test_x509.py + - test_ipapython/test_cookie.py + - test_ipapython/test_dn.py + - test_ipapython/test_ipautil.py + - test_ipapython/test_ipavalidate.py + - test_ipapython/test_kerberos.py + - test_ipapython/test_ssh.py + - test_ipaserver/httptest.py + - test_ipaserver/test_changepw.py + - test_ipaserver/test_dnssec.py + - test_ipaserver/test_install/test_adtrustinstance.py + - test_ipaserver/test_install/test_service.py + - test_ipaserver/test_ipap11helper.py + - test_ipaserver/test_kadmin.py + - test_ipaserver/test_ldap.py + - test_ipaserver/test_otptoken_import.py + - test_ipaserver/test_rpcserver.py + - test_ipaserver/test_secrets.py + - test_ipaserver/test_serverroles.py + - test_ipaserver/test_topology_plugin.py + - test_ipaserver/test_version_comparison.py + - test_pkcs10/test_pkcs10.py diff --git a/.travis.yml b/.travis.yml index 402c3ee..e88c2af 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,16 +8,17 @@ cache: pip env: global: - TEST_RUNNER_IMAGE="martbab/freeipa-fedora-test-runner:master-latest" - TEST_RUNNER_CONFIG=".test_runner_config.yaml" PEP8_ERROR_LOG="pep8_errors.log" CI_RESULTS_LOG="ci_results_${TRAVIS_BRANCH}.log" CI_BACKLOG_SIZE=5000 matrix: - TASK_TO_RUN="lint" - TASK_TO_RUN="run-tests" + TEST_RUNNER_CONFIG=".test_runner_config.yaml" PYTHON=/usr/bin/python2 TESTS_TO_RUN="test_xmlrpc/test_[a-k]*.py" - TASK_TO_RUN="run-tests" + TEST_RUNNER_CONFIG=".test_runner_config.yaml" PYTHON=/usr/bin/python2 TESTS_TO_RUN="test_cmdline test_install @@ -26,6 +27,20 @@ env: test_ipaserver test_pkcs10 test_xmlrpc/test_[l-z]*.py" + - TASK_TO_RUN="run-tests" + TEST_RUNNER_CONFIG=".test_runner_config_py3_temp.yaml" + PYTHON=/usr/bin/python3 + TESTS_TO_RUN="test_xmlrpc/test_[a-k]*.py" + - TASK_TO_RUN="run-tests" + TEST_RUNNER_CONFIG=".test_runner_config_py3_temp.yaml" + PYTHON=/usr/bin/python3 + TESTS_TO_RUN="test_cmdline + test_install + test_ipalib + test_ipapython + test_ipaserver + test_pkcs10 + test_xmlrpc/test_[l-z]*.py" install: - pip install pep8 - >
-- Manage your subscription for the Freeipa-devel mailing list: https://www.redhat.com/mailman/listinfo/freeipa-devel Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code