LISA is developed and maintained by Microsoft, to empower Linux validation.
Перейти к файлу
Chi Song 998ee75011 add cat command to output sys files 2020-10-03 07:11:02 +08:00
.github Update to Poetry version 1.1.0b4 2020-09-23 17:36:41 -07:00
examples remove deprecated assert 2020-09-22 09:34:15 +08:00
lisa add cat command to output sys files 2020-10-03 07:11:02 +08:00
.flake8 Enable cyclomatic complexity checking 2020-09-23 17:36:41 -07:00
.gitattributes limit eol of files to LF, and fix platform bug 2020-08-26 14:10:23 +08:00
.gitignore add support for code coverage 2020-09-17 07:32:15 +08:00
CODE_OF_CONDUCT.md Adopt the Microsoft Open Source Code of Conduct (#921) 2020-07-22 10:56:05 -07:00
CONTRIBUTING.md Update getting started instructions 2020-09-02 18:03:13 -07:00
LICENSE-2.0.txt LISAv2 merged changes 2019-04-11 10:53:17 -07:00
Makefile Use Makefile to centralize build/test commands 2020-09-23 17:36:41 -07:00
README.md Update to Poetry version 1.1.0b4 2020-09-23 17:36:41 -07:00
poetry.lock Explicitly update developer tool packages 2020-09-23 17:36:41 -07:00
pyproject.toml Explicitly update developer tool packages 2020-09-23 17:36:41 -07:00

README.md

Linux Integration Services Automation 3.0 (LISAv3)

CI Workflow for LISAv3 Code style: black GitHub license

LISA is a Linux test automation framework with built-in test cases to verify the quality of Linux distributions on multiple platforms (such as Azure, On-prem HyperV, and Linux bare metal).

This version (v3) is a brand new implementation in Python 3, supports running on Windows and Linux distros.

Getting Started

Install Python 3

Install Python 3.8 from Linux distributions package repositories, or python.org. We also need gcc and the libpython headers for the usjon package.

On Ubuntu 18.04 and 20.04:

sudo apt install git python3.8 libpython3.8-dev python3-distutils python3-apt gcc

NOTE: If you are using WSL, installing Poetry on both Windows and Linux may cause both platforms versions of Poetry to be on your path, as Windows binaries are mapped into WSLs PATH. This means that the Linux poetry binary must appear in your PATH before the Windows version, or this error will appear:

/usr/bin/env: python\r: No such file or directory

Install Poetry

This is a temporary workaround! The currently released version of Poetry (1.0.10) cannot handle the azure-identity package, so we need to install the preview version (1.1.0b4).

On Linux (or WSL):

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3 - --preview --version 1.1.0b4
source $HOME/.poetry/env

On Windows (in PowerShell):

(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python - --preview --version 1.1.0b4
# the path can be added to system, so it applies to every terminal.
$env:PATH += ";$env:USERPROFILE\.poetry\bin"

If you already have Poetry installed, you can update it like:

poetry self update --preview 1.1.0b4

Install Python packages

Then use Poetry to install LISAv3's Python package dependencies:

git clone -b main https://github.com/LIS/LISAv2.git
cd LISAv2
poetry install

To obtain the path of the Poetry virtual environment setup for LISA (where the isolated Python installation and packages are located), run:

poetry env list --full-path

Run LISAv3

Run LISAv3 using Poetrys environment:

poetry run python lisa/main.py

Make

We now also have a GNU Makefile that automates some tasks. Try:

# Install Python packages
make setup

# Run LISAv3
make run

# Run unit tests
make test

# Run syntactic, semantic, formatting and type checkers
make check

# Generate coverage report (slow, reruns LISAv3 and tests)
make coverage

# Print current Python virtualenv
make venv

Editor Setup

Install and enable ShellCheck to find bash errors locally.

Visual Studio Code

First, click the Python version in the bottom left, then enter the path emitted by the command above. This will point Code to the Poetry virtual environment.

Make sure below settings are in root level of .vscode/settings.json

{
    "python.analysis.typeCheckingMode": "strict",
    "python.formatting.provider": "black",
    "python.linting.enabled": true,
    "python.linting.flake8Enabled": true,
    "python.linting.mypyEnabled": true,
    "python.linting.pylintEnabled": false,
    "editor.formatOnSave": true,
    "python.linting.mypyArgs": [
        "--strict",
        "--namespace-packages",
        "--show-column-numbers",
    ],
    "python.sortImports.path": "isort",
    "python.analysis.useLibraryCodeForTypes": false,
    "python.analysis.autoImportCompletions": false,
    "files.eol": "\n",
}

Emacs

Use the pyvenv package:

(use-package pyvenv
  :ensure t
  :hook (python-mode . pyvenv-tracking-mode))

Then run M-x add-dir-local-variable RET python-mode RET pyvenv-activate RET <path/to/virtualenv> where the value is the path given by the command above. This will create a .dir-locals.el file which looks like this:

;;; Directory Local Variables
;;; For more information see (info "(emacs) Directory Variables")

((python-mode . ((pyvenv-activate . "~/.cache/pypoetry/virtualenvs/lisa-s7Q404Ij-py3.8"))))