Odoo 17 Test Suite Using Docker
Check the quality with Pylint: from test_lint to test_pylint
- install_module test_lint,test_pylint
- exec_odoo --db_port 5432 --log-level=test --max-cron-threads=0 --load=base,web,to_base --stop-after-init --test-enable --test-tags=/test_lint,/test_pylint,/test_lint,/test_pylint,-:.test_pofiles_string_formatting
| Create Date | Level | Message |
|---|---|---|
| 05/12/2026 16:35:41 | INFO |
Using Docker Image Odoo 17 Ubuntu 22.04 Python 3.10:
FROM ubuntu:jammy ENV LANG C.UTF-8 USER root SHELL ["/bin/bash", "-c"] # Install debian packages RUN set -x ; \ apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends apt-transport-https build-essential ca-certificates curl ffmpeg file fonts-freefont-ttf fonts-noto-cjk gawk gnupg gsfonts libldap2-dev libjpeg9-dev libsasl2-dev libxslt1-dev lsb-release node-less ocrmypdf sed sudo unzip xfonts-75dpi zip zlib1g-dev git build-essential cython3 libffi-dev libev-dev \ && rm -rf /var/lib/apt/lists/* # Install Python3 packages RUN set -x ; \ apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends python3 python3-dbfread python3-dev python3-pip python3-setuptools python3-wheel python3-markdown python3-mock python3-phonenumbers python3-websocket python3-cffi libpq-dev \ && rm -rf /var/lib/apt/lists/* # Install wkhtml RUN curl -sSL https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb -o /tmp/wkhtmltox_0.12.6-1.focal_amd64.deb \ && curl -sSL http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb -o /tmp/libssl1.1_1.1.0g-2ubuntu4_amd64.deb \ && apt-get update \ && dpkg -i /tmp/libssl1.1_1.1.0g-2ubuntu4_amd64.deb \ && apt install -y -f --no-install-recommends /tmp/wkhtmltox_0.12.6-1.focal_amd64.deb \ && rm /tmp/libssl1.1_1.1.0g-2ubuntu4_amd64.deb /tmp/wkhtmltox_0.12.6-1.focal_amd64.deb # Install Odoo:Depends ADD https://raw.githubusercontent.com/brendangregg/FlameGraph/master/flamegraph.pl /usr/local/bin/flamegraph.pl RUN chmod +rx /usr/local/bin/flamegraph.pl ADD https://raw.githubusercontent.com/Viindoo/odoo/17.0/debian/control /tmp/control.txt RUN apt-get update \ && sed -n '/^Depends:/,/^[A-Z]/p' /tmp/control.txt \ | awk '/^ [a-z]/ { gsub(/,/,"") ; print $1 }' | sort -u \ | egrep -v 'postgresql-client' \ | sed 's/python-imaging/python-pil/'| sed 's/python-pypdf/python-pypdf2/' | sed 's/python3-lxml-html-clean/python3-lxml/' \ | DEBIAN_FRONTEND=noninteractive xargs apt-get install -y -qq \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* RUN python3 -m pip install --no-cache-dir setuptools wheel && \ python3 -m pip install coverage==7.4.4 flamegraph RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y postgresql-client-14 \ && rm -rf /var/lib/apt/lists/* # Install Google Chrome #RUN curl -sSL https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -o /tmp/chrome.deb \ # && apt-get update \ # && apt-get -y install --no-install-recommends /tmp/chrome.deb \ # && rm /tmp/chrome.deb # Install phantomjs RUN curl -sSL https://nightly.odoo.com/resources/phantomjs.tar.bz2 -o /tmp/phantomjs.tar.bz2 \ && tar xvfO /tmp/phantomjs.tar.bz2 phantomjs-2.1.1-linux-x86_64/bin/phantomjs > /usr/local/bin/phantomjs \ && chmod +x /usr/local/bin/phantomjs \ && rm -f /tmp/phantomjs.tar.bz2 ADD https://raw.githubusercontent.com/Viindoo/odoo/17.0/requirements.txt /root/requirements.txt RUN python3 -m pip install --no-cache-dir wheel setuptools && \ python3 -m pip install --upgrade --no-cache-dir -r /root/requirements.txt && \ python3 -m pip install --no-cache-dir ebaysdk==2.1.5 pdf417gen==0.7.1 RUN python3 -m pip install --no-cache-dir requests pyOpenSSL # Install debian packages RUN set -x ; \ apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends openssl iputils-ping openssh-client chromium-browser \ && rm -rf /var/lib/apt/lists/* RUN python3 -m pip install --no-cache-dir --upgrade websocket-client==1.2.3 flake8==4.0.1 RUN python3 -m pip uninstall pylint pylint-odoo isort Pygments -y RUN python3 -m pip install --no-cache-dir --upgrade pylint-odoo==9.0.5 RUN python3 -m pip install --no-cache-dir --upgrade Pygments==2.14.0 --no-deps RUN python3 -m pip install --no-cache-dir --upgrade odoo_test_helper # Install nodejs RUN curl -fsSLO --compressed "https://nodejs.org/dist/v18.20.0/node-v18.20.0-linux-x64.tar.xz" \ && tar -xJf "node-v18.20.0-linux-x64.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ && rm "node-v18.20.0-linux-x64.tar.xz" \ && ln -s /usr/local/bin/node /usr/local/bin/nodejs #RUN npm install -g rtlcss es-check eslint@8 RUN python3 -m pip install --no-cache-dir --upgrade setuptools==61 # để tương thích với python-pkcs11-0.7.0 # Install cloc package RUN set -x ; \ apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends cloc \ && rm -rf /var/lib/apt/lists/* RUN npm install -g rtlcss@3.4.0 es-check@6.0.0 eslint@8.57.1 prettier@2.7.1 eslint-config-prettier@8.5.0 eslint-plugin-prettier@4.2.1 --save-dev |
| 05/12/2026 16:35:41 | INFO |
Docker command:
cd /data/build; python3 -m pip install --user --progress-bar off -r Viindoo-tvtmaaddons-17.0/requirements.txt && python3 -m pip install --user --progress-bar off -r Viindoo-erponline-enterprise-17.0/requirements.txt && python3 Viindoo-odoo-17.0/odoo-bin --addons-path Viindoo-odoo-17.0/odoo/addons,Viindoo-odoo-17.0/addons,Viindoo-tvtmaaddons-17.0,Viindoo-erponline-enterprise-17.0,rb-49cd17b-221803 -d rb-49cd17b-221803-382254 --data-dir /data/build/datadir -i test_lint,test_pylint --db_port 5432 --log-level=test --max-cron-threads=0 --load=base,web,to_base --stop-after-init --test-enable --test-tags=/test_lint,/test_pylint,/test_lint,/test_pylint,-:.test_pofiles_string_formatting ; |
| 05/12/2026 16:35:41 | INFO |
Container rb-49cd17b-221803-382254 started !
|
| 05/12/2026 16:55:52 | INFO |
Container rb-49cd17b-221803-382254 stopped !
|
| 05/12/2026 16:55:52 | ERROR |
odoo.addons.test_pylint.tests.test_eslint: FAIL: TestESLint.test_eslint
Traceback (most recent call last):
File "/data/build/Viindoo-tvtmaaddons-17.0/test_pylint/tests/test_eslint.py", line 67, in test_eslint
self.assertEqual(process.returncode, 0, msg=f"""
AssertionError: 1 != 0 :
stdout:
/data/build/rb-49cd17b-221803/web_responsive/static/src/components/apps_menu/apps_menu.esm.js
23:59 error Replace `detail:·state` with `·detail:·state·` prettier/prettier
58:36 error Replace `open:·menuId·===·0` with `·open:·menuId·===·0·` prettier/prettier
138:36 error Delete `⏎···············` prettier/prettier
145:20 error Replace `href,·hash` with `·href,·hash·` prettier/prettier
149:46 error Replace `⏎····················"redirect_menuId",⏎····················this.router.current.hash.menu_id⏎················` with `"redirect_menuId",·this.router.current.hash.menu_id` prettier/prettier
/data/build/rb-49cd17b-221803/web_responsive/static/src/components/apps_menu/apps_menu_preferences.esm.js
20:31 error Replace `...action,·res_id:·this.user.userId},·{onClose` with `·...action,·res_id:·this.user.userId·},·{·onClose·` prettier/prettier
/data/build/rb-49cd17b-221803/web_responsive/static/src/views/form/form_renderer.esm.js
5:9 error Replace `patch` with `·patch·` prettier/prettier
6:9 error Replace `FormRenderer` with `·FormRenderer·` prettier/prettier
/data/build/rb-49cd17b-221803/web_responsive/static/tests/apps_menu_search_tests.esm.js
2:11 error 'QUnit' is already defined as a built-in global variable no-redeclare
7:9 error Replace `click,·getFixture,·mount,·patchWithCleanup` with `·click,·getFixture,·mount,·patchWithCleanup·` prettier/prettier
8:9 error Replace `Component,·xml` with `·Component,·xml·` prettier/prettier
9:9 error Replace `makeTestEnv` with `·makeTestEnv·` prettier/prettier
10:9 error Replace `actionService` with `·actionService·` prettier/prettier
11:9 error Replace `browser` with `·browser·` prettier/prettier
12:9 error Replace `menuService` with `·menuService·` prettier/prettier
13:9 error Replace `notificationService` with `·notificationService·` prettier/prettier
14:9 error Replace `NavBar` with `·NavBar·` prettier/prettier
15:9 error Replace `registry` with `·registry·` prettier/prettier
16:9 error Replace `hotkeyService` with `·hotkeyService·` prettier/prettier
17:9 error Replace `uiService` with `·uiService·` prettier/prettier
24:5 warning Variable 'baseConfig' should be initialized on declaration init-declarations
25:5 warning Variable 'target' should be initialized on declaration init-declarations
40:20 error Replace `id:·"root",·children:·[1,·2],·name:·"root",·appID:·"root"` with `·id:·"root",·children:·[1,·2],·name:·"root",·appID:·"root"·` prettier/prettier
41:17 error Replace `id:·1,·children:·[],·name:·"App0",·appID:·1,·xmlid:·"menu_1"` with `·id:·1,·children:·[],·name:·"App0",·appID:·1,·xmlid:·"menu_1"·` prettier/prettier
42:17 error Replace `id:·2,·children:·[],·name:·"App1",·appID:·2,·xmlid:·"menu_2"` with `·id:·2,·children:·[],·name:·"App1",·appID:·2,·xmlid:·"menu_2"·` prettier/prettier
44:29 error Replace `menus` with `·menus·` prettier/prettier
45:23 error Replace `serverData` with `·serverData·` prettier/prettier
51:34 error Replace `env` with `·env·` prettier/prettier
/data/build/rb-49cd17b-221803/web_responsive/static/tests/apps_menu_tests.esm.js
2:11 error 'QUnit' is already defined as a built-in global variable no-redeclare
7:9 error Replace `⏎····click,⏎····getFixture,⏎····mount,⏎····nextTick,⏎····patchWithCleanup,⏎` with `·click,·getFixture,·mount,·nextTick,·patchWithCleanup·` prettier/prettier
14:9 error Replace `Component,·xml` with `·Component,·xml·` prettier/prettier
15:9 error Replace `makeTestEnv` with `·makeTestEnv·` prettier/prettier
16:9 error Replace `actionService` with `·actionService·` prettier/prettier
17:9 error Replace `browser` with `·browser·` prettier/prettier
18:9 error Replace `menuService` with `·menuService·` prettier/prettier
19:9 error Replace `notificationService` with `·notificationService·` prettier/prettier
20:9 error Replace `NavBar` with `·NavBar·` prettier/prettier
21:9 error Replace `registry` with `·registry·` prettier/prettier
22:9 error Replace `hotkeyService` with `·hotkeyService·` prettier/prettier
23:9 error Replace `uiService` with `·uiService·` prettier/prettier
30:5 warning Variable 'baseConfig' should be initialized on declaration init-declarations
31:5 warning Variable 'target' should be initialized on declaration init-declarations
46:20 error Replace `id:·"root",·children:·[1,·2],·name:·"root",·appID:·"root"` with `·id:·"root",·children:·[1,·2],·name:·"root",·appID:·"root"·` prettier/prettier
47:17 error Replace `id:·1,·children:·[],·name:·"App0",·appID:·1,·xmlid:·"menu_1"` with `·id:·1,·children:·[],·name:·"App0",·appID:·1,·xmlid:·"menu_1"·` prettier/prettier
48:17 error Replace `id:·2,·children:·[],·name:·"App1",·appID:·2,·xmlid:·"menu_2"` with `·id:·2,·children:·[],·name:·"App1",·appID:·2,·xmlid:·"menu_2"·` prettier/prettier
50:29 error Replace `menus` with `·menus·` prettier/prettier
51:23 error Replace `serverData` with `·serverData·` prettier/prettier
57:34 error Replace `env` with `·env·` prettier/prettier
67:34 error Replace `env` with `·env·` prettier/prettier
78:34 error Replace `env` with `·env·` prettier/prettier
/data/build/rb-49cd17b-221803/web_responsive/static/tests/test_patch.js
10:16 error Replace `stepUtils` with `·stepUtils·` prettier/prettier
11:16 error Replace `patch` with `·patch·` prettier/prettier
✖ 52 problems (48 errors, 4 warnings)
46 errors and 0 warnings potentially fixable with the `--fix` option.
Perhaps you might benefit from installing the tooling found at:
https://github.com/odoo/odoo/wiki/Javascript-coding-guidelines#use-a-linter
stderr:
|
| 05/12/2026 16:55:52 | ERROR |
odoo.modules.loading: Module test_pylint: 1 failures, 0 errors of 7 tests
|
| 05/12/2026 16:55:52 | ERROR |
odoo.modules.loading: At least one test failed when loading the modules.
|
| 05/12/2026 16:55:52 | ERROR |
odoo.tests.result: 1 failed, 0 error(s) of 24 tests when loading database 'rb-49cd17b-221803-382254'
|
| 05/12/2026 16:55:52 | INFO |
Cleaning all resource
|
| 05/12/2026 16:55:52 | INFO |
Cleanup finished
|