Skip to content

Commit

Permalink
Merge pull request #11755 from Honny1/thin-ds-tests
Browse files Browse the repository at this point in the history
Thin DS tests
  • Loading branch information
Mab879 authored Mar 27, 2024
2 parents 73b3a34 + 0d53550 commit 49e0f95
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
29 changes: 29 additions & 0 deletions .github/workflows/gate_thin_ds.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Gate Thin DS
on:
merge_group:
branches: [ 'master' ]
push:
branches: ['*', '!stabilization*', '!stable*', 'master' ]
pull_request:
branches: [ 'master', 'stabilization*' ]
concurrency:
group: ${{ github.workflow }}-fedora-${{ github.event.number || github.run_id }}
cancel-in-progress: true
jobs:
build-and-test-thin-ds:
name: Build, Test on Fedora Latest (Container)
runs-on: ubuntu-latest
container:
image: fedora:latest
steps:
- name: Install Deps
run: dnf install -y cmake make openscap-utils python3-pyyaml bats ansible python3-pip ShellCheck git gcc gcc-c++ python3-devel python3-lxml python3-pytest
- name: Checkout
uses: actions/checkout@v4
- name: Install deps python
# pytest-xdist is used for parallel execution of thin ds test
run: pip install pcre2 pytest-xdist -r requirements.txt -r test-requirements.txt
- name: Build
run: ./build_product rhel9 --thin
- name: Test
run: python3 -m pytest -n auto tests/test_thin_ds.py
33 changes: 33 additions & 0 deletions tests/test_thin_ds.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/usr/bin/env python3

# Usage (Execute in root project directory): python3 -m pytest -n auto tests/test_thin_ds.py

import pytest

from lxml import etree

from pathlib import Path


THIN_DS_PATHS = []
for path in Path("./build/thin_ds").glob("*.xml"):
THIN_DS_PATHS.append(path)


@pytest.mark.parametrize("path", THIN_DS_PATHS)
def test_thin_ds(path):
root = etree.parse(path)

rules = root.findall(".//{http://checklists.nist.gov/xccdf/1.2}Rule")
assert len(rules) == 1

rule_id = rules[0].get("id", "NoID").removeprefix("xccdf_org.ssgproject.content_rule_")
assert rule_id in str(path)

profiles = root.findall(".//{http://checklists.nist.gov/xccdf/1.2}Profile")
assert len(profiles) == 1

profile_id = (
profiles[0].get("id", "NoID").removeprefix("xccdf_org.ssgproject.content_profile_")
)
assert profile_id in str(path)

0 comments on commit 49e0f95

Please sign in to comment.