Draft: test pipeline

Merge request reports

Loading

.gitlab-ci.yml

0 → 100644
+80 −0
Changes for .gitlab-ci.yml: 80 added lines, 0 removed lines.
Original line number Diff line number Diff line
stages:
  - build
  - test

variables:
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: ""
  GIT_CLEAN_FLAGS: -ffdx

build_image:
  stage: build
  image: docker:25.0.3
  services:
    - docker:25.0.3-dind
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
      changes:
        - Dockerfile
        - requirements.txt
    - if: '$CI_COMMIT_BRANCH == "develop"'
      changes:
        - Dockerfile
        - requirements.txt
    - when: never
  variables:
    GIT_STRATEGY: clone
    GIT_CLEAN_FLAGS: -ffdx

  before_script:
    - echo "CI_REGISTRY = $CI_REGISTRY"
    - echo "CI_PROJECT_PATH = $CI_PROJECT_PATH"
    - export IMAGE_NAME="$CI_REGISTRY/$(echo $CI_PROJECT_PATH | tr '[:upper:]' '[:lower:]')"
    - echo "IMAGE_NAME = $IMAGE_NAME"

  script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY

    - docker pull $IMAGE_NAME:cache || true

    - docker build --cache-from=$IMAGE_NAME:cache -t $IMAGE_NAME:$CI_COMMIT_SHA -t $IMAGE_NAME:cache .

    - docker push $IMAGE_NAME:$CI_COMMIT_SHA
    - docker push $IMAGE_NAME:cache
    
    - echo "IMAGE_TAG=$CI_COMMIT_SHA" > build.env
    - echo "IMAGE_NAME=$IMAGE_NAME" >> build.env
    - cat build.env

  artifacts:
    expire_in: 3 months
    reports:
      dotenv: build.env

test_documentation:
  stage: test
  image: docker:25.0.3
  services:
    - docker:25.0.3-dind
  needs: 
    - job: build_image
      artifacts: true
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
    - if: '$CI_COMMIT_BRANCH == "develop"'
    - when: never
  variables:
    GIT_STRATEGY: clone
    GIT_CLEAN_FLAGS: -ffdx
  before_script:
    - echo "IMAGE_NAME from artifact = $IMAGE_NAME"
    - echo "IMAGE_TAG from artifact = $IMAGE_TAG"
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
    - docker pull $IMAGE_NAME:$IMAGE_TAG
  script:
    - echo "Running tests in container..."
    - docker run --rm -v $CI_PROJECT_DIR:/workspace -w /workspace $IMAGE_NAME:$IMAGE_TAG python -m unittest test_mymodule
  
  after_script:
    - rm -rf __pycache__ || true
    - find . -type d -name __pycache__ -exec rm -rf {} + || true
 No newline at end of file

Dockerfile

0 → 100644
+8 −0
Changes for Dockerfile: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
FROM python:3.12

WORKDIR /app
COPY requirements.txt .

RUN pip install --no-cache-dir -r requirements.txt

CMD ["python", "-m", "unittest", "discover", "-s", "./doc/tests", "-t", "./doc"]
 No newline at end of file

requirements.txt

0 → 100644
+10 −0
Changes for requirements.txt: 10 added lines, 0 removed lines.
Original line number Diff line number Diff line
# python3.11 project
robotframework==6.1.1
robotframework-jsonlibrary==0.5
robotframework-requests==0.9.6
deepdiff==6.7.1
prettydiff==0.1.0
robotframework-httpctrl==0.3.1
robotframework-tidy==4.11.0
paho-mqtt==1.6.1
robotframework-mqttlibrary==0.7.1.post3

test_mymodule.py

0 → 100644
+53 −0
Changes for test_mymodule.py: 53 added lines, 0 removed lines.
Original line number Diff line number Diff line
import unittest


class TestMyModule(unittest.TestCase):
    
    def setUp(self):
        """Set up test fixtures before each test method"""
        pass
    
    def tearDown(self):
        """Clean up after each test method"""
        pass
    
    def test_addition(self):
        """Test basic addition"""
        result = 2 + 2
        self.assertEqual(result, 4)
    
    def test_subtraction(self):
        """Test basic subtraction"""
        result = 5 - 3
        self.assertEqual(result, 2)
    
    def test_multiplication(self):
        """Test basic multiplication"""
        result = 3 * 4
        self.assertEqual(result, 12)
    
    def test_division(self):
        """Test basic division"""
        result = 10 / 2
        self.assertEqual(result, 5)
    
    def test_string_concatenation(self):
        """Test string concatenation"""
        result = "Hello" + " " + "World"
        self.assertEqual(result, "Hello World")
    
    def test_list_operations(self):
        """Test list operations"""
        my_list = [1, 2, 3]
        my_list.append(4)
        self.assertEqual(len(my_list), 4)
        self.assertIn(4, my_list)
    
    def test_exception_handling(self):
        """Test exception is raised"""
        with self.assertRaises(ZeroDivisionError):
            result = 1 / 0


if __name__ == '__main__':
    unittest.main()
 No newline at end of file
Loading