开发人员设置
在本指南中,我们描述了如何在其中设置开发人员环境可以轻松浏览源代码、进行修改、编写和执行单元测验。
为此,我们将使用虚拟环境其中所有软件遗产包将是以“开发”模式安装,这将允许您导航源代码,破解它,并在本地运行单元测试。
要测试修改的效果,可以安装您自己的本地软件遗产实例使用Docker。
安装所需的依赖项
软件遗产需要一些依赖项,这些依赖项通常由您的包管理器。关于基于Debian/U的发行版:
sudo apt安装lsb发布wget apt传输https
sudo wget公司https://www.postgresql.org/media/keys/ACCC4CF8.asc-O/etc/apt/trusted.gpg.d/postgresql.asc
echo“debhttps://apt.postgresql.org/pub/repos/apt/$(lsb_release-cs)-pgdg-main“|sudo-tee-a/etc/apt/sources.list.d/pgdg.list
sudo wget公司https://downloads.apache.org/cassandra/KEYS网站-O/etc/apt/trusted.gpg.d/cassandra.asc
echo“debhttps://debian.cassandra.apache.org网站41x main“|sudo T恤-a/etc/apt/sources.list.d/cassandra.list
sudo apt更新
sudo apt安装\
构建基本pkg-config lzip rsync\
python3 python3-ip python3-venv虚拟包装器\
libpython3-dev libsystemd-dev libsvn-dev libffi-dev librdkafka-dev\
fuse3 libfuse3-dev libcmph-dev libleveldb-dev\
git myrepos公司\
graphviz plantuml inkscape\
postgresql libpq-dev卡桑德拉
这将安装基本的系统实用程序、Python库依赖项、开发工具,文档工具和我们的主要数据库管理系统。
Cassandra和PostgreSQL将在需要时通过测试启动,因此您可以不需要全局启动它们(这样可以节省一些RAM):
sudo systemctl disable--现在是cassandra postgresql
如果你打算在软件遗产Web应用程序,您还将需要有节点 >= 18
在您的开发环境中。如果您的基于Debian的分发版本较低,您可以使用以下命令安装节点18:
sudo wget公司https://deb.nodesource.com/gpgkey/nodesource.gpg.key-O/etc/apt/trusted.gpg.d/nodesource.asc
echo“debhttps://deb.nodesource.com/node_18.x$(lsb_release-cs)main“|sudo tee-a/etc/apt/sources.list.d/nodsource.list
sudo apt更新
sudo apt安装节点
也与Web应用程序开发有关,软件遗产使用纱线
程序包管理器检索前端依赖项和开发工具。建议安装其使用以下命令的最新经典版本:
sudo wget公司https://dl.yarnpkg.com/debian/pubkey.gpg-O/etc/apt/trusted.gpg.d/yarn.asc
echo“debhttps://dl.yarnpkg.com/debian网站/stable main“|sudo tee/etc/apt/sources.list.d/yarn.list
sudo apt更新
sudo-apt-install纱线
如果你打算继续软件遗产存档搜索功能,Elasticsearch还必须出现在您的开发环境中。按照以下步骤进行安装:
sudo wget公司https://artifacts.elastic.co/GPG-KEY-elasticsearch网站-O/etc/apt/trusted.gpg.d/elasticesearch.asc
echo“debhttps://artifacts.elastic.co/包装/7.x/aptstable main“| sudo tee-a/etc/apt/sources.list.d/elasticesearch.list
sudo apt更新
sudo apt安装弹性搜索
如果您打算构建完整的软件遗产文档postgresql-autodoc
实用程序必须也要安装,请遵循以下步骤说明书这样做。
检查源代码
克隆软件遗产环境存储库:
~$git克隆https://gitlab.softwareheritage.org/swh/devel/swh-environment.git
[...]
~$cd swh-环境
~/swh-环境$
创建虚拟机:
~/swh-environment$source/usr/share/virtualenvwrapper/virtualenvwrappers.sh
~/swh-environment$mkvirtualenv-p/usr/bin/python3-a$PWD swh
[...]
(瑞士法郎) ~/swh-环境$
签出所有swh包源存储库:
(瑞士法郎) ~/swh-environment$pip安装预提交
(瑞士法郎) ~/swh-environment$/bin/更新
使用与我们的毒杀容器使用的mypy版本相同的版本:
(瑞士法郎) ~/swh-environment$pip安装mypy==1.8.0
将来,您可以通过以下方式重新激活创建的virtualenv:
安装所有swh包(在开发模式下,具有测试依赖项):
(瑞士法郎) ~/swh-environment$bin/install
注释
如果您遇到以下问题pip(点阵)依赖项解析,请尝试箱子/安装 --use-derecated=遗留解析程序
(旗帜将被传递到pip(点阵) 安装
). 也可以在中全局设置相同的标志~/.config/pip/pip.conf
:
[安装]
use-derecated=遗留解析程序
执行单元测试
单元测试正在使用pytest测试框架,可以直接执行或通过毒性。这两种测试执行环境之间的主要区别是:
例如,为运行单元测试swh-装载机-git包裹:
(瑞士法郎) ~/swh-environment$cd swh-loader-git
(瑞士法郎) ~/swh-environment/swh-loader-git$pytest
=================================
平台linux——Python 3.5.3、pytest-3.8.2、py-1.6.0、pluggy-0.7.1
假设配置文件“default”->database=DirectoryBasedExampleDatabase(“/home/ddouard/src/swh-environment/swh-loader-git/.hypothesis/examples”)
rootdir:/home/ddouard/src/swh-environment/swh-loader-git,inifile:pytest.ini
插件:requests-mock-1.5.2,postgresql-1.3.4,env-0.6.2,django-3.4.7,cov-2.6.0,pylama-7.6.5,virtusis-3.76.0,芹菜-4.2.1
收集了25个项目
swh/loader/git/tests/test_converters.py。。。。。。。。[ 32%]
swh/loader/git/tests/test_from_disk.py。。。。。[ 52%]
swh/loader/git/tests/test_loader.py。。。。。。[ 76%]
swh/loader/git/tests/test_tasks.py。。。[ 88%]
swh/loader/git/tests/test_utils.py。。。[100%]
====~=======:====2===>====1====0.==警告摘要=============================
[...]
=================通过25次,6.66秒内发出12次警告==================
使用tox运行相同的测试,加上代码linting和静态分析:
(瑞士法郎) ~/swh-environment/swh-loader-git$tox
GLOB sdist-make:~/swh-environment/swh-loader-git/setup.py
flake8创建:~/swh-environment/swh-loader-git/.tox/flake8
flake8安装深度:flake9
安装的flake8:入口点==0.3,flake8==3.7.7,mccabe==0.6.1,pycodestyle==2.5.0,pyflakes==2.1.1,swh.loader.git==0.0.48.post3
flake8运行测试-pre:PYTHONHASHSEED='2028963506'
flake8运行测试:命令[0]| ~/swh-environment/swh-loader-git/.tox/flake8/bin/python-m flake9
py3创建:~/swh-environment/swh-loader-git/.tox/py3
py3安装程序:。[测试],pytest-cov
py3安装:~/swh-environment/swh-loader-git/.tox/.tmp/package/1/swh.loader.git-0.0.48.post3.zip
py3已安装:aiohttp==3.5.4,amqp==2.4.2,arrow==0.13.1,async-timeout==3.0.1,atomicwrites==1.3.0,attrs==19.1.0,billard==3.5.0.5,芹菜==4.2.1,certificate==2018.11.29,chardet==3.0.4,Click==7.0,coverage==4.5.2,decorator===4.3.2,dulwich==0.19.11,elasticsearch==6.3.1,Flask==1.0.2,idna==2.8,idna-ssl==1.1.0,its danger==1.1.0,Jinja2==2.10,kombu==4.4.0,MarkupSafe==1.1.1,more-itertools==6.0.0,msgpack-python==0.5.6,multidict==4.5.2,pathlib2==2.3.3,pluggy==0.9.0,psutil==5.6.0,psycopg2==2.7.7,py==1.8.0,pytest==3.10.1,pytest-cov==2.6.1,python-ateutil==2.8.0,pytz==2018.9,PyYAML=3.13,requests==2.21.0,retrying=1.3.3,six=1.12.0,swh.core=0.0.55,swh.loader.core==0.0.39,swh.loader.git==0.0.48.post3,swh.model==0.0.30,swh.objstorage==0.0.3,swh.scheduler==0.0.49,swh.storage==0.0.129,systemd-python==234,typeing-extensions==3.7.2,urllib3==1.24.1,vcversioner==2.16.0.0,vine==1.2.0,Werkzeug==0.14.1,yarl=1.3.0
py3运行测试-pre:PYTHONHASHSEED='2028963506'
py3运行测试:命令[0]| pytest--cov=swh--cov-branch
=================================
平台linux--Python 3.5.3、pytest-3.10.1、py-1.8.0、pluggy-0.9.0
rootdir:~/swh-environment/swh-loader-git,inifile:pytest.ini
插件:cov-2.61,celery-4.2.1
收集了25个项目
swh/loader/git/tests/test_converters.py。。。。。。。。[ 32%]
swh/loader/git/tests/test_from_disk.py。。。。。[ 52%]
swh/loader/git/tests/test_loader.py。。。。。。[ 76%]
swh/loader/git/tests/test_tasks.py。。。[ 88%]
swh/loader/git/tests/test_utils.py。。。[100%]
-----------覆盖范围:linux平台、python 3.5.3-final-0-----------
姓名Stmts Miss Branch BrPart封面
---------------------------------------------------------------------------
swh/__init__.py 1 0 0 0 100%
swh/loader/__init__.py 1 0 0 100%
swh/loader/git/__init__.py 0 0 0 0 100%
swh/loader/git/converters.py 102 10 44 7 86%
swh/loader/git/from_disk.py 157 44 50 6 67%
swh/loader/git/loader.py 271 59 114 17 75%
swh/loader/git/tasks.py 14 0 0 0 100%
swh/loader/git/tests/__init__.py 1 0 0 100%
swh/loader/git/tests/conftest.py 4 0 0 100%
swh/loader/git/tests/test_converters.py 94 0 6 0 100%
swh/loader/git/tests/test_from_disk.py 100 4 0 0 96%
swh/loader/git/tests/test_loader.py 12 0 0 0 100%
swh/loader/git/tests/test_tasks.py 26 0 0 100%
swh/loader/git/tests/test_utils.py 14 0 2 0 100%
swh/loader/git/utils.py 25 8 8 1 61%
---------------------------------------------------------------------------
总计822 125 224 31 80%
====~=======:====2===>====1====0.==警告摘要=============================
.tox/py3/lib/python3/site-packages/psycopg2/__init__.py:144
~/swh-environment/swh-loader-git/.tox/py3/lib/python3/site-packages/psycopg2/__init__.py:144:用户警告:psycopg 2轮包将从2.8版重命名;为了继续从二进制文件安装,请使用“pip安装psycopg2-binary”。有关详细信息,请参见:<http://initd.org/psycopg/docs/install.html#binary-install-from-pypi>。
""")
--文件:https://docs.pytest.org/en/latest/warnings.html
========================
_________________________________摘要__________________________________
flake 8:命令成功
py3:命令成功
祝贺您:)
请注意,某些swh包需要正确配置postgresql服务器执行测试。在这种情况下,您需要使用pifpaf格式,这将生成postgresql的临时实例,以封装对pytest的调用。例如,在swh-core包中运行pytest:
(瑞士法郎) ~/swh-environment$cd swh-core
(swh)~/swh环境/swh核心$pifpaf运行postgresql--pytest
=================================
平台linux--Python 3.5.3、pytest-3.8.2、py-1.6.0、pluggy-0.7.1
假设配置文件“default”->database=DirectoryBasedExampleDatabase(“/home/ddouard/src/swh-environment/swh-core/.hyposis/examples”)
rootdir:/home/ddouard/src/swh-environment/swh-core,inifile:pytest.ini
插件:requests-mock-1.5.2,postgresql-1.3.4,env-0.6.2,django-3.4.7,cov-2.6.0,pylama-7.6.5,virtusis-3.76.0,芹菜-4.2.1
收集了79个项目
swh/core/tests/test_api.py。。[ 2%]
swh/core/tests/test_config.py。。。。。。。。。。。。。。[ 20%]
swh/core/tests/test_db.py。。。。[ 25%]
swh/core/tests/test_logger.py。[ 26%]
swh/core/tests/test_serializers.py。。。。。[ 32%]
swh/core/tests/test_statsd.py。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。[ 81%]
........ [ 91%]
swh/core/tests/test_utils.py。。。。。。。[100%]
==========================79分在6.59秒内通过=========================
设置数据库(可选)
如果要手动运行某些包,可能需要设置其数据库。
每个需要一个数据库的子项目的不同数据库(如存储
或调度程序
)应该通过瑞士法郎 数据库 创造
或瑞士法郎 数据库 初始化
命令。有关更多信息,请参阅他们的帮助。
发送您的更改
完成所需更改后,您可以将其发送到我们的锻造。请参阅上的指南如何提交补丁.