LISA is developed and maintained by Microsoft, to empower Linux validation.
Перейти к файлу
Chi Song 13d9be733f
Add unittest for lisarunner, and bug fixes (#1019)
* Add ut for lisarunner, and bug fixes

1. add ut for lisa runner
2. fix bugs found by ut.
3. remove some unused code.
4. improve testability.
5. move EnvironmentSpace from shema to env, because it's confused in
  schema folder. As it's not a schema.
6. other minor fixes.
2020-09-18 11:31:02 +08:00
.github add support for code coverage 2020-09-17 07:32:15 +08:00
examples update example runbooks 2020-09-17 07:32:15 +08:00
lisa Add unittest for lisarunner, and bug fixes (#1019) 2020-09-18 11:31:02 +08:00
.flake8 Configure black, flake8, and isort to work together 2020-08-05 14:08:49 -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
README.md bug fixes and refactoring 2020-09-17 07:32:15 +08:00
poetry.lock add support for code coverage 2020-09-17 07:32:15 +08:00
pyproject.toml add support for code coverage 2020-09-17 07:32:15 +08: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.0b2).

On Linux (or WSL):

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3 - --preview --version 1.1.0b2
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.0a2
# the path can be added to system, so it applies to every terminal.
$env:PATH += ";$env:USERPROFILE\.poetry\bin"

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

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"))))