diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..01cf23c61e3b1d37380181c64d70be431a76e83b --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,80 @@ +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 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..8ded3f54529032647a521ff240f19c7fae9890f3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,8 @@ +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 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..e26df1ea32e903b469640de42e1c63a488d57eaa --- /dev/null +++ b/requirements.txt @@ -0,0 +1,10 @@ +# 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 diff --git a/test_mymodule.py b/test_mymodule.py new file mode 100644 index 0000000000000000000000000000000000000000..926819ded0fcda7ffac6d3dc547fa0c6003be3e1 --- /dev/null +++ b/test_mymodule.py @@ -0,0 +1,53 @@ +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