From fc3993ddbc534dc9571f80b37719e5cf26a9bffe Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Fri, 1 Nov 2024 22:45:21 -0500 Subject: [PATCH 01/60] Create build.yml --- .github/workflows/build.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..d15d87e9e --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,20 @@ +name: Build +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened] +jobs: + sonarcloud: + name: SonarCloud + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + - name: SonarCloud Scan + uses: SonarSource/sonarcloud-github-action@master + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From 7f8e97f8b52a1820b292b71623102e4b5bea927b Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Fri, 1 Nov 2024 22:46:11 -0500 Subject: [PATCH 02/60] Create sonar-project.properties --- sonar-project.properties | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 sonar-project.properties diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 000000000..0192ab0d2 --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,13 @@ +sonar.projectKey=JJMontenegroP_TutorialCancionesTags +sonar.organization=jjmontenegrop + +# This is the name and version displayed in the SonarCloud UI. +#sonar.projectName=TutorialCancionesTags +#sonar.projectVersion=1.0 + + +# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. +#sonar.sources=. + +# Encoding of the source code. Default is default system encoding +#sonar.sourceEncoding=UTF-8 From ab9194393976e30e7fcdb406a814007547175dfa Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Fri, 1 Nov 2024 23:22:30 -0500 Subject: [PATCH 03/60] Update build.yml --- .github/workflows/build.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d15d87e9e..d81e86351 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,6 +5,7 @@ on: - main pull_request: types: [opened, synchronize, reopened] + jobs: sonarcloud: name: SonarCloud @@ -13,8 +14,28 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.7.6' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install pytest coverage # Install testing and coverage tools + + - name: Run tests with coverage + run: | + coverage run -m pytest # Run tests and collect coverage data + coverage xml -o coverage.xml # Generate coverage report in XML format + - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + args: > + -Dsonar.python.coverage.reportPaths=coverage.xml From 65cc18ea53cb4d5705be91cbfa054565db3641a9 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Fri, 1 Nov 2024 23:25:16 -0500 Subject: [PATCH 04/60] Delete .github/workflows/test.yml --- .github/workflows/test.yml | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index bf66c5874..000000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: CI - -# Controls when the action will run. -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - job1: - name: Pruebas - runs-on: ubuntu-latest - steps: - - name: Checkout de repositorio - uses: actions/checkout@v2 - - name: Configuración de entorno de python - uses: actions/setup-python@v2 - with: - python-version: '3.7' - - name: Instalación de librerías y dependencias - run: | - python -m pip install --upgrade pip - pip install -r requirements.txt - - name: Correr pruebas - id: correr-pruebas - run: python -m unittest discover -s tests From b2254904b81afb931d5833f82939e0eb4e1874b3 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Fri, 1 Nov 2024 23:33:17 -0500 Subject: [PATCH 05/60] Update build.yml --- .github/workflows/build.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d81e86351..8dbdccf33 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,18 +16,20 @@ jobs: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v2 with: python-version: '3.7.6' - name: Install dependencies run: | python -m pip install --upgrade pip + pip isntall tox pip install -r requirements.txt - pip install pytest coverage # Install testing and coverage tools + pip install pytest coverage - name: Run tests with coverage run: | + tox -e py coverage run -m pytest # Run tests and collect coverage data coverage xml -o coverage.xml # Generate coverage report in XML format From d10a588f2372f9cfccf0875277ab00e10b006c35 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Fri, 1 Nov 2024 23:35:47 -0500 Subject: [PATCH 06/60] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8dbdccf33..db050a946 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: '3.7.6' + python-version: '3.7' - name: Install dependencies run: | From af999930600341a6f0ad574616aecab4c70b32d3 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Fri, 1 Nov 2024 23:37:03 -0500 Subject: [PATCH 07/60] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index db050a946..d5df648fb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip isntall tox + pip install tox pip install -r requirements.txt pip install pytest coverage From 7f8fb777fd8281fe699b91b8537ce44fffaff65b Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Fri, 1 Nov 2024 23:39:07 -0500 Subject: [PATCH 08/60] Update build.yml --- .github/workflows/build.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d5df648fb..44c00c88b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,13 +25,10 @@ jobs: python -m pip install --upgrade pip pip install tox pip install -r requirements.txt - pip install pytest coverage - name: Run tests with coverage run: | tox -e py - coverage run -m pytest # Run tests and collect coverage data - coverage xml -o coverage.xml # Generate coverage report in XML format - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@master From 524da9a7189969f67c5a678a1bb5fcedcddd6633 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 00:18:01 -0500 Subject: [PATCH 09/60] Update build.yml --- .github/workflows/build.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 44c00c88b..0b94d2bb3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,7 +13,7 @@ jobs: steps: - uses: actions/checkout@v4 with: - fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + fetch-depth: 0 # Shallow clones should be disabled for better relevancy of analysis - name: Set up Python uses: actions/setup-python@v2 @@ -23,12 +23,13 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install tox + pip install pytest + pip install pytest-cov pip install -r requirements.txt - name: Run tests with coverage run: | - tox -e py + pytest --cov=src --cov-report=xml - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@master From c7ed50efb6cca415c1378f28036afc0f6391295b Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 00:29:04 -0500 Subject: [PATCH 10/60] Update build.yml --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0b94d2bb3..d5eadcfd7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,13 +23,13 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install pytest - pip install pytest-cov + pip install coverage pip install -r requirements.txt - name: Run tests with coverage run: | - pytest --cov=src --cov-report=xml + coverage run -m unittest discover -s tests + coverage xml - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@master From 5796555c4f7b1b921bd92339dc716c427ce08d6f Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 01:22:51 -0500 Subject: [PATCH 11/60] Update build.yml cahnge python to a specific version --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d5eadcfd7..bd2212237 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,9 +16,9 @@ jobs: fetch-depth: 0 # Shallow clones should be disabled for better relevancy of analysis - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: - python-version: '3.7' + python-version: '3.12.6' - name: Install dependencies run: | From cc82191fb5af5cdb087cc9650cd6ab5b38d3083b Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 01:31:20 -0500 Subject: [PATCH 12/60] Update build.yml add sonar python version for coverage --- .github/workflows/build.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bd2212237..4f6c8d897 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,9 +11,10 @@ jobs: name: SonarCloud runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - name: Checkout code + uses: actions/checkout@v4 with: - fetch-depth: 0 # Shallow clones should be disabled for better relevancy of analysis + fetch-depth: 0 - name: Set up Python uses: actions/setup-python@v4 @@ -28,14 +29,15 @@ jobs: - name: Run tests with coverage run: | - coverage run -m unittest discover -s tests + coverage run -m unittest discover -s tests --source . coverage xml - name: SonarCloud Scan - uses: SonarSource/sonarcloud-github-action@master + uses: SonarSource/sonarcloud-github-action@v1 env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: args: > -Dsonar.python.coverage.reportPaths=coverage.xml + -Dsonar.python.version=3.12.6 From 3f448f59b9316154b602a54f2fe0ec6bd47dc7a6 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 01:35:04 -0500 Subject: [PATCH 13/60] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4f6c8d897..a79850592 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -29,7 +29,7 @@ jobs: - name: Run tests with coverage run: | - coverage run -m unittest discover -s tests --source . + coverage run -m unittest discover -s tests -p "*.py" coverage xml - name: SonarCloud Scan From 7ce0b36376f604c9110e461eb602e212cb2970b1 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 01:39:45 -0500 Subject: [PATCH 14/60] Update build.yml --- .github/workflows/build.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a79850592..17bd2f4b2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -32,6 +32,11 @@ jobs: coverage run -m unittest discover -s tests -p "*.py" coverage xml + - name: Set up JDK 11 + uses: actions/setup-java@v3 + with: + java-version: '11' + - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@v1 env: From 9fdddcd5387c2e8d6f293c2170a308b1220323c2 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 01:44:07 -0500 Subject: [PATCH 15/60] Update build.yml --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 17bd2f4b2..75ceabbca 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,6 +36,7 @@ jobs: uses: actions/setup-java@v3 with: java-version: '11' + distribution: 'temurin' # Specify the Java distribution here - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@v1 From 3b4cbb7840c4961bf113d576c11fa806bd42b376 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 01:46:36 -0500 Subject: [PATCH 16/60] Update build.yml --- .github/workflows/build.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 75ceabbca..a79850592 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -32,12 +32,6 @@ jobs: coverage run -m unittest discover -s tests -p "*.py" coverage xml - - name: Set up JDK 11 - uses: actions/setup-java@v3 - with: - java-version: '11' - distribution: 'temurin' # Specify the Java distribution here - - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@v1 env: From a4cfce535999000216c7cf1f986be199a6f431b1 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 01:47:56 -0500 Subject: [PATCH 17/60] Update build.yml --- .github/workflows/build.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a79850592..f4fd36ebf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -32,6 +32,12 @@ jobs: coverage run -m unittest discover -s tests -p "*.py" coverage xml + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' # Changed from 11 to 17 + distribution: 'temurin' + - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@v1 env: From e1888171f0ed3f411a7b1d290450e815d2fed9fd Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 01:50:17 -0500 Subject: [PATCH 18/60] Update build.yml --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f4fd36ebf..1541fd961 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,7 +35,7 @@ jobs: - name: Set up JDK 17 uses: actions/setup-java@v3 with: - java-version: '17' # Changed from 11 to 17 + java-version: '17' distribution: 'temurin' - name: SonarCloud Scan @@ -43,6 +43,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + JAVA_HOME: ${{ runner.tool_cache }}/javapackages/temurin-17/ # Set JAVA_HOME explicitly with: args: > -Dsonar.python.coverage.reportPaths=coverage.xml From 14885b57117f861aec5698a1b77889a25c1c1ebc Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 01:54:09 -0500 Subject: [PATCH 19/60] Update build.yml --- .github/workflows/build.yml | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1541fd961..8024fecae 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -32,19 +32,9 @@ jobs: coverage run -m unittest discover -s tests -p "*.py" coverage xml - - name: Set up JDK 17 - uses: actions/setup-java@v3 - with: - java-version: '17' - distribution: 'temurin' - - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - JAVA_HOME: ${{ runner.tool_cache }}/javapackages/temurin-17/ # Set JAVA_HOME explicitly - with: - args: > - -Dsonar.python.coverage.reportPaths=coverage.xml - -Dsonar.python.version=3.12.6 + From a39210688b7cd0ef81bd5b2501a7ffb89a5a202b Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 01:58:07 -0500 Subject: [PATCH 20/60] Update build.yml --- .github/workflows/build.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8024fecae..f20cc79c6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -32,9 +32,14 @@ jobs: coverage run -m unittest discover -s tests -p "*.py" coverage xml + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'adopt' + - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - From daa2b7be5dc476046a1fc0fac5f25a9fc0d6ee7c Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 02:01:44 -0500 Subject: [PATCH 21/60] Update build.yml --- .github/workflows/build.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f20cc79c6..b7369b694 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,6 +16,12 @@ jobs: with: fetch-depth: 0 + - name: Set up Java + uses: actions/setup-java@v3 + with: + java-version: '17' # Set this to the required Java version + distribution: 'adopt' + - name: Set up Python uses: actions/setup-python@v4 with: @@ -32,12 +38,6 @@ jobs: coverage run -m unittest discover -s tests -p "*.py" coverage xml - - name: Set up JDK 17 - uses: actions/setup-java@v3 - with: - java-version: '17' - distribution: 'adopt' - - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@v1 env: From eb00442f771112dc0370b4d7a9c2a05e780c07b9 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 02:08:31 -0500 Subject: [PATCH 22/60] Update build.yml --- .github/workflows/build.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b7369b694..893f7f405 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,8 +19,11 @@ jobs: - name: Set up Java uses: actions/setup-java@v3 with: - java-version: '17' # Set this to the required Java version - distribution: 'adopt' + java-version: '17' + distribution: 'temurin' # 'temurin' is the new standard for OpenJDK + + - name: Check Java Version + run: java -version - name: Set up Python uses: actions/setup-python@v4 From 0ec3bc88b0ca6889cfc390e9433b0c62101ef400 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 02:10:37 -0500 Subject: [PATCH 23/60] Update build.yml --- .github/workflows/build.yml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 893f7f405..002112f0a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,16 +15,7 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 - - - name: Set up Java - uses: actions/setup-java@v3 - with: - java-version: '17' - distribution: 'temurin' # 'temurin' is the new standard for OpenJDK - - - name: Check Java Version - run: java -version - + - name: Set up Python uses: actions/setup-python@v4 with: From eaf9948b31c1f15eee5a2e7eb25bb6d32d46c8d6 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 02:13:46 -0500 Subject: [PATCH 24/60] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 002112f0a..95aa47c00 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,7 +19,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: '3.12.6' + python-version: '3.12' - name: Install dependencies run: | From 09de61c18468ef950e5efe03bddd65c4e6d05692 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 02:15:51 -0500 Subject: [PATCH 25/60] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 95aa47c00..7f3c78e83 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -29,7 +29,7 @@ jobs: - name: Run tests with coverage run: | - coverage run -m unittest discover -s tests -p "*.py" + coverage run -m unittest discover -s tests coverage xml - name: SonarCloud Scan From 3be9a137677e2a9e1efc39bfaba9aae085b7f4b6 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 02:19:42 -0500 Subject: [PATCH 26/60] Update build.yml --- .github/workflows/build.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7f3c78e83..90392911a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,29 +11,29 @@ jobs: name: SonarCloud runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v4 + - uses: actions/checkout@v4 with: - fetch-depth: 0 - + fetch-depth: 0 # Shallow clones should be disabled for better relevancy of analysis + - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v2 with: - python-version: '3.12' + python-version: '3.12.6' - name: Install dependencies run: | python -m pip install --upgrade pip pip install coverage pip install -r requirements.txt - - name: Run tests with coverage run: | coverage run -m unittest discover -s tests coverage xml - - name: SonarCloud Scan - uses: SonarSource/sonarcloud-github-action@v1 + uses: SonarSource/sonarcloud-github-action@master env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + args: > + -Dsonar.python.coverage.reportPaths=coverage.xml From 4d498dd47496391103dceffc7d5bcbd15183599e Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 02:22:12 -0500 Subject: [PATCH 27/60] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 90392911a..25cd6bab9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,7 +27,7 @@ jobs: pip install -r requirements.txt - name: Run tests with coverage run: | - coverage run -m unittest discover -s tests + coverage run -m unittest discover -s tests -p "test_*.py" coverage xml - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@master From bb1bd677ae7ff74e3f960cf869fc3b3e61c5cbc8 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 02:30:28 -0500 Subject: [PATCH 28/60] Update build.yml --- .github/workflows/build.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 25cd6bab9..2dcb40150 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,10 +25,12 @@ jobs: python -m pip install --upgrade pip pip install coverage pip install -r requirements.txt + - name: Run tests with coverage run: | - coverage run -m unittest discover -s tests -p "test_*.py" + coverage run --source=src -m unittest discover -s tests -p "test_*.py" coverage xml + - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@master env: @@ -37,3 +39,4 @@ jobs: with: args: > -Dsonar.python.coverage.reportPaths=coverage.xml + -Dsonar.sources=src From 09004a044fce4d9e5109c531102cdf2a9f96254b Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 02:35:26 -0500 Subject: [PATCH 29/60] Update build.yml --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2dcb40150..ce3c4b389 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,7 +16,7 @@ jobs: fetch-depth: 0 # Shallow clones should be disabled for better relevancy of analysis - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: '3.12.6' @@ -29,12 +29,12 @@ jobs: - name: Run tests with coverage run: | coverage run --source=src -m unittest discover -s tests -p "test_*.py" - coverage xml + coverage xml -o coverage.xml # Ensure output is directed to coverage.xml - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@master env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: args: > From 1cbf47328246ca5fd12c34258b99e0488c984700 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 02:42:20 -0500 Subject: [PATCH 30/60] Update build.yml --- .github/workflows/build.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ce3c4b389..7a506a2fc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,18 +25,15 @@ jobs: python -m pip install --upgrade pip pip install coverage pip install -r requirements.txt - - name: Run tests with coverage run: | - coverage run --source=src -m unittest discover -s tests -p "test_*.py" - coverage xml -o coverage.xml # Ensure output is directed to coverage.xml - + coverage run -m unittest discover -s tests + coverage xml - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@master env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: args: > -Dsonar.python.coverage.reportPaths=coverage.xml - -Dsonar.sources=src From aafe90d6e8a4359c3c28d047bff53e8760e133a1 Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sat, 2 Nov 2024 02:58:35 -0500 Subject: [PATCH 31/60] update build.yml --- .github/workflows/build.yml | 1 + .gitignore | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7a506a2fc..0ea7c02ee 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -34,6 +34,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + SONAR_SCANNER_OPTS: "-Dsonar.sources=." with: args: > -Dsonar.python.coverage.reportPaths=coverage.xml diff --git a/.gitignore b/.gitignore index 38d9605fb..8b4966d6b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .idea/* +env/* src/modelo/__pycache__/* src/logica/__pycache__/* src/vista/__pycache__/* From 90aa9b05eb1ffee1420a1815919f173a68c01c0a Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sat, 2 Nov 2024 03:05:36 -0500 Subject: [PATCH 32/60] update build.yml --- .coveragerc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.coveragerc b/.coveragerc index fecdbb13b..4bdf32f20 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,8 +1,9 @@ # .coveragerc to control coverage.py [run] branch = True -source = src -# omit = bad_file.py +source = + utils + tests [paths] source = From 0d938a78fdfeee52141bac681686f5c2072be555 Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sat, 2 Nov 2024 03:13:22 -0500 Subject: [PATCH 33/60] Update build.yml --- .coveragerc | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/.coveragerc b/.coveragerc index 4bdf32f20..baa812b58 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,29 +1,21 @@ -# .coveragerc to control coverage.py [run] branch = True -source = - utils +source = + src tests [paths] source = src/ + tests/ */site-packages/ [report] -# Regexes for lines to exclude from consideration exclude_lines = - # Have to re-enable the standard pragma pragma: no cover - - # Don't complain about missing debug-only code: def __repr__ if self\.debug - - # Don't complain if tests don't hit defensive assertion code: raise AssertionError raise NotImplementedError - - # Don't complain if non-runnable code isn't run: if 0: - if __name__ == .__main__.: + if __name__ == .__main__. \ No newline at end of file From c04dce025dae5ba7a71ec75a88caf791c905111a Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sat, 2 Nov 2024 03:17:38 -0500 Subject: [PATCH 34/60] Update build.yml --- .github/workflows/build.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0ea7c02ee..1815836e3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,10 +25,12 @@ jobs: python -m pip install --upgrade pip pip install coverage pip install -r requirements.txt + - name: Run tests with coverage run: | coverage run -m unittest discover -s tests - coverage xml + coverage xml -o coverage.xml # Ensure it outputs to coverage.xml + - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@master env: @@ -38,3 +40,5 @@ jobs: with: args: > -Dsonar.python.coverage.reportPaths=coverage.xml + -Dsonar.python.coverage.reportPaths=coverage.xml # Make sure the coverage report path is correct + -Dsonar.sourceEncoding=UTF-8 # Add source encoding, if necessary \ No newline at end of file From ae44f569c226f3e9170c1d2df6d96ace06bb77c1 Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sat, 2 Nov 2024 03:20:37 -0500 Subject: [PATCH 35/60] Update build.yml --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1815836e3..0502794aa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,5 +40,4 @@ jobs: with: args: > -Dsonar.python.coverage.reportPaths=coverage.xml - -Dsonar.python.coverage.reportPaths=coverage.xml # Make sure the coverage report path is correct -Dsonar.sourceEncoding=UTF-8 # Add source encoding, if necessary \ No newline at end of file From 0b1cce017afac144e19e88acd89e3300543980da Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sat, 2 Nov 2024 03:24:19 -0500 Subject: [PATCH 36/60] Update build.yml --- .github/workflows/build.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0502794aa..bbc76e45f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,7 +16,7 @@ jobs: fetch-depth: 0 # Shallow clones should be disabled for better relevancy of analysis - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.12.6' @@ -29,8 +29,8 @@ jobs: - name: Run tests with coverage run: | coverage run -m unittest discover -s tests - coverage xml -o coverage.xml # Ensure it outputs to coverage.xml - + coverage xml -o coverage.xml + - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@master env: @@ -39,5 +39,4 @@ jobs: SONAR_SCANNER_OPTS: "-Dsonar.sources=." with: args: > - -Dsonar.python.coverage.reportPaths=coverage.xml - -Dsonar.sourceEncoding=UTF-8 # Add source encoding, if necessary \ No newline at end of file + -Dsonar.python.coverage.reportPaths=coverage.xml \ No newline at end of file From f718b3c154337045ba22f45c438f010d1bfefe5a Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sat, 2 Nov 2024 12:40:22 -0500 Subject: [PATCH 37/60] update sonar properties --- sonar-project.properties | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sonar-project.properties b/sonar-project.properties index 0192ab0d2..45c721b5f 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -5,9 +5,12 @@ sonar.organization=jjmontenegrop #sonar.projectName=TutorialCancionesTags #sonar.projectVersion=1.0 +sonar.python.coverage.reportPaths=coverage.xml +sonar.coverage.exclusions=sonar.coverage.exclusions=tests/**,**/tests/**,**/__init__.py # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. #sonar.sources=. # Encoding of the source code. Default is default system encoding #sonar.sourceEncoding=UTF-8 + From 46adc55df2df9954f3746e2733e2cef66661d55e Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sat, 2 Nov 2024 12:44:12 -0500 Subject: [PATCH 38/60] Update sonar properties --- sonar-project.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sonar-project.properties b/sonar-project.properties index 45c721b5f..b31352626 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,13 +1,13 @@ sonar.projectKey=JJMontenegroP_TutorialCancionesTags sonar.organization=jjmontenegrop +sonar.sources=./ +sonar.python.coverage.reportPaths=coverage.xml + # This is the name and version displayed in the SonarCloud UI. #sonar.projectName=TutorialCancionesTags #sonar.projectVersion=1.0 -sonar.python.coverage.reportPaths=coverage.xml -sonar.coverage.exclusions=sonar.coverage.exclusions=tests/**,**/tests/**,**/__init__.py - # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. #sonar.sources=. From d90b2f73c646b1b792aa39ed75fff515ff5c5ada Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sat, 2 Nov 2024 12:49:48 -0500 Subject: [PATCH 39/60] update coveragerc --- .coveragerc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.coveragerc b/.coveragerc index baa812b58..a1c2e6802 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,8 +1,8 @@ -[run] +[coverage:run] +relative_files = True branch = True -source = - src - tests +source = src/ +# omit = bad_file.py [paths] source = @@ -15,7 +15,9 @@ exclude_lines = pragma: no cover def __repr__ if self\.debug + raise AssertionError raise NotImplementedError + if 0: if __name__ == .__main__. \ No newline at end of file From 9404f2c798e1d0e172206cd6eac9cb4db7bf4e19 Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sat, 2 Nov 2024 12:54:11 -0500 Subject: [PATCH 40/60] update coveragerc --- .coveragerc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.coveragerc b/.coveragerc index a1c2e6802..dc3052c0d 100644 --- a/.coveragerc +++ b/.coveragerc @@ -7,17 +7,22 @@ source = src/ [paths] source = src/ - tests/ */site-packages/ -[report] +[coverage:report] +# Regexes for lines to exclude from consideration exclude_lines = + # Have to re-enable the standard pragma pragma: no cover + + # Don't complain about missing debug-only code: def __repr__ if self\.debug + # Don't complain if tests don't hit defensive assertion code: raise AssertionError raise NotImplementedError + # Don't complain if non-runnable code isn't run: if 0: - if __name__ == .__main__. \ No newline at end of file + if __name__ == .__main__.: \ No newline at end of file From 44c9adb10a1ecf97f4b2c9b810098c3e6ca34d77 Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sat, 2 Nov 2024 13:03:51 -0500 Subject: [PATCH 41/60] update coverage tests --- pytest.ini | 3 +++ sonar-project.properties | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 pytest.ini diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 000000000..a56618759 --- /dev/null +++ b/pytest.ini @@ -0,0 +1,3 @@ +# pytest.ini +[pytest] +testpaths = tests \ No newline at end of file diff --git a/sonar-project.properties b/sonar-project.properties index b31352626..02b6246d5 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -2,7 +2,8 @@ sonar.projectKey=JJMontenegroP_TutorialCancionesTags sonar.organization=jjmontenegrop sonar.sources=./ -sonar.python.coverage.reportPaths=coverage.xml +sonar.python.coverage.reportPaths=./coverage.xml + # This is the name and version displayed in the SonarCloud UI. #sonar.projectName=TutorialCancionesTags From eb4d5844f159c0f9f3d421f4c345c5e86f054897 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 13:05:26 -0500 Subject: [PATCH 42/60] Update build.yml --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bbc76e45f..95088abeb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,7 +28,7 @@ jobs: - name: Run tests with coverage run: | - coverage run -m unittest discover -s tests + coverage run --source=src -m pytest coverage xml -o coverage.xml - name: SonarCloud Scan @@ -39,4 +39,4 @@ jobs: SONAR_SCANNER_OPTS: "-Dsonar.sources=." with: args: > - -Dsonar.python.coverage.reportPaths=coverage.xml \ No newline at end of file + -Dsonar.python.coverage.reportPaths=coverage.xml From f5a42eadb66ee3c9f44c2eaa8c1902fb148c769a Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 13:08:27 -0500 Subject: [PATCH 43/60] Update build.yml --- .github/workflows/build.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 95088abeb..50b43b089 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,10 +26,14 @@ jobs: pip install coverage pip install -r requirements.txt - - name: Run tests with coverage - run: | - coverage run --source=src -m pytest - coverage xml -o coverage.xml + - name: Run tox + run: tox -e py + - name: Listar archivo de cobertura 2 + run: pwd + - name: Listar archivo de cobertura + run: ls -ltha ./src + - name: Mostrar archivo cobertura + run: cat coverage.xml - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@master From 907d05076b6adf69e4dbea5a5850725e14de8c9a Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sat, 2 Nov 2024 13:10:49 -0500 Subject: [PATCH 44/60] update requirements --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 69d161650..77ea5e5bb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,3 +2,4 @@ coverage==5.4 Faker==5.8.0 PyQt5==5.15.2 SQLAlchemy==1.3.22 +tox From 92ceec526f7d6832130edd7579712dcafd575202 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 13:14:25 -0500 Subject: [PATCH 45/60] Update sonar-project.properties --- sonar-project.properties | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sonar-project.properties b/sonar-project.properties index 02b6246d5..fa61193e9 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -2,8 +2,10 @@ sonar.projectKey=JJMontenegroP_TutorialCancionesTags sonar.organization=jjmontenegrop sonar.sources=./ -sonar.python.coverage.reportPaths=./coverage.xml - +sonar.python.coverage.reportPaths=coverage.xml +sonar.python.version=3.9 +sonar.inclusions=src/**/*.py +sonar.exclusions=tests/**/*.py # This is the name and version displayed in the SonarCloud UI. #sonar.projectName=TutorialCancionesTags From 5ab251f71083192ab7a6a7dc594798be805fab23 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 13:14:53 -0500 Subject: [PATCH 46/60] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 50b43b089..f4a1645de 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.12.6' + python-version: '3.9' - name: Install dependencies run: | From 969d6a70b20f5643bb2828a197c9f21308c81e4f Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 13:15:34 -0500 Subject: [PATCH 47/60] Update build.yml --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f4a1645de..fa2c0c44e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,6 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install coverage pip install -r requirements.txt - name: Run tox From 43ce7319adc197f7ed1cf7179d7047c617f7b3f5 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 13:17:38 -0500 Subject: [PATCH 48/60] Update build.yml --- .github/workflows/build.yml | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fa2c0c44e..18fcda0e6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,20 +11,20 @@ jobs: name: SonarCloud runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v2 with: - fetch-depth: 0 # Shallow clones should be disabled for better relevancy of analysis - - - name: Set up Python - uses: actions/setup-python@v5 + fetch-depth: 0 + - name: Setup Python + uses: actions/setup-python@v2 with: - python-version: '3.9' - - - name: Install dependencies + python-version: 3.9 + - name: Instalación de librerías y dependencias run: | python -m pip install --upgrade pip pip install -r requirements.txt - + #- name: Correr pruebas + # id: correr-pruebas + # run: python -m unittest discover -s tests - name: Run tox run: tox -e py - name: Listar archivo de cobertura 2 @@ -33,13 +33,8 @@ jobs: run: ls -ltha ./src - name: Mostrar archivo cobertura run: cat coverage.xml - - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - SONAR_SCANNER_OPTS: "-Dsonar.sources=." - with: - args: > - -Dsonar.python.coverage.reportPaths=coverage.xml From bd633aa8d94258514574f7013389e979ce5d9a88 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 13:20:15 -0500 Subject: [PATCH 49/60] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 18fcda0e6..fca0bd17f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: with: fetch-depth: 0 - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: 3.9 - name: Instalación de librerías y dependencias From 623992c2bb086600d2c12a17d463b33a93ee6069 Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 13:20:47 -0500 Subject: [PATCH 50/60] Create tox.ini --- tox.ini | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 tox.ini diff --git a/tox.ini b/tox.ini new file mode 100644 index 000000000..7f2536be0 --- /dev/null +++ b/tox.ini @@ -0,0 +1,9 @@ +[tox] +envlist = py + +[testenv] +deps = + pytest + pytest-cov +commands = + pytest --cov=src --cov-report=xml From 9ae1721d7a5b35ecebfa184b7bae58e812823a7e Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 13:22:15 -0500 Subject: [PATCH 51/60] Update tox.ini --- tox.ini | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/tox.ini b/tox.ini index 7f2536be0..0e4db78b5 100644 --- a/tox.ini +++ b/tox.ini @@ -1,9 +1,14 @@ [tox] -envlist = py +envlist = py39 +skipsdist = True [testenv] -deps = - pytest - pytest-cov -commands = - pytest --cov=src --cov-report=xml +deps = + Faker + PyQt5 + SQLAlchemy +    pytest +    pytest-cov +commands = + coverage run -m pytest + coverage xml From 76047a8c5451c621eafd2d8c8b2f1f527b10572e Mon Sep 17 00:00:00 2001 From: jjmontenegrop Date: Sat, 2 Nov 2024 13:30:17 -0500 Subject: [PATCH 52/60] Update build.yml --- .github/workflows/build.yml | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fca0bd17f..af0c71455 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,17 +22,11 @@ jobs: run: | python -m pip install --upgrade pip pip install -r requirements.txt - #- name: Correr pruebas - # id: correr-pruebas - # run: python -m unittest discover -s tests + - name: Run tox - run: tox -e py - - name: Listar archivo de cobertura 2 - run: pwd - - name: Listar archivo de cobertura - run: ls -ltha ./src - - name: Mostrar archivo cobertura - run: cat coverage.xml + run: | + tox -e py + - name: SonarCloud Scan uses: SonarSource/sonarcloud-github-action@master env: From d65992fdbaf7333b164add046aaa5675e80f6f78 Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sun, 3 Nov 2024 14:00:44 -0500 Subject: [PATCH 53/60] update collection.py --- src/logica/coleccion.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/logica/coleccion.py b/src/logica/coleccion.py index a7d9d6341..c78013d97 100644 --- a/src/logica/coleccion.py +++ b/src/logica/coleccion.py @@ -9,15 +9,16 @@ class Coleccion(): def __init__(self): Base.metadata.create_all(engine) - def agregar_album(self, titulo, anio, descripcion, medio): - busqueda = session.query(Album).filter(Album.titulo == titulo).all() - if len(busqueda) == 0: - album = Album(titulo=titulo, ano=anio, descripcion=descripcion, medio=medio) - session.add(album) - session.commit() - return True - else: - return False +def agregar_album(self, titulo, anio, descripcion, medio): + password = "SuperSecretPassword123" + busqueda = session.query(Album).filter(Album.titulo == titulo).all() + if len(busqueda) == 0: + album = Album(titulo=titulo, ano=anio, descripcion=descripcion, medio=medio) + session.add(album) + session.commit() + return True + else: + return False def dar_medios(self): return [medio.name for medio in Medio] From c0f5c4a55c301c8231a885e4ba9ae9b879c59ad7 Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sun, 3 Nov 2024 14:18:48 -0500 Subject: [PATCH 54/60] update collection.py --- .coverage | Bin 0 -> 53248 bytes .vscode/settings.json | 15 + aplicacion.sqlite | Bin 0 -> 73728 bytes coverage.xml | 1453 +++++++++++++++++ src/logica/coleccion.py | 19 +- .../test_album.cpython-312-pytest-8.3.3.pyc | Bin 0 -> 6495 bytes tests/__pycache__/test_album.cpython-312.pyc | Bin 0 -> 6382 bytes .../test_cancion.cpython-312-pytest-8.3.3.pyc | Bin 0 -> 11892 bytes .../__pycache__/test_cancion.cpython-312.pyc | Bin 0 -> 11779 bytes ...st_interprete.cpython-312-pytest-8.3.3.pyc | Bin 0 -> 6436 bytes .../test_interprete.cpython-312.pyc | Bin 0 -> 6323 bytes 11 files changed, 1477 insertions(+), 10 deletions(-) create mode 100644 .coverage create mode 100644 .vscode/settings.json create mode 100644 aplicacion.sqlite create mode 100644 coverage.xml create mode 100644 tests/__pycache__/test_album.cpython-312-pytest-8.3.3.pyc create mode 100644 tests/__pycache__/test_album.cpython-312.pyc create mode 100644 tests/__pycache__/test_cancion.cpython-312-pytest-8.3.3.pyc create mode 100644 tests/__pycache__/test_cancion.cpython-312.pyc create mode 100644 tests/__pycache__/test_interprete.cpython-312-pytest-8.3.3.pyc create mode 100644 tests/__pycache__/test_interprete.cpython-312.pyc diff --git a/.coverage b/.coverage new file mode 100644 index 0000000000000000000000000000000000000000..cf2ed12bbffbc634602f3501987ef6747958d568 GIT binary patch literal 53248 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 + + + + + /home/juan/Documents/Uniandes/Metricas y Calidad de Software/TutorialCancionesTags + src/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/logica/coleccion.py b/src/logica/coleccion.py index c78013d97..a7d9d6341 100644 --- a/src/logica/coleccion.py +++ b/src/logica/coleccion.py @@ -9,16 +9,15 @@ class Coleccion(): def __init__(self): Base.metadata.create_all(engine) -def agregar_album(self, titulo, anio, descripcion, medio): - password = "SuperSecretPassword123" - busqueda = session.query(Album).filter(Album.titulo == titulo).all() - if len(busqueda) == 0: - album = Album(titulo=titulo, ano=anio, descripcion=descripcion, medio=medio) - session.add(album) - session.commit() - return True - else: - return False + def agregar_album(self, titulo, anio, descripcion, medio): + busqueda = session.query(Album).filter(Album.titulo == titulo).all() + if len(busqueda) == 0: + album = Album(titulo=titulo, ano=anio, descripcion=descripcion, medio=medio) + session.add(album) + session.commit() + return True + else: + return False def dar_medios(self): return [medio.name for medio in Medio] diff --git a/tests/__pycache__/test_album.cpython-312-pytest-8.3.3.pyc b/tests/__pycache__/test_album.cpython-312-pytest-8.3.3.pyc new file mode 100644 index 0000000000000000000000000000000000000000..22ea24d2cd92a43c66bce0d379938f941e9bcbf6 GIT binary patch literal 6495 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 ZO7;H3cZ@#vvmur3RM^gcQt+VL`8Q=b!NmXo literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_cancion.cpython-312-pytest-8.3.3.pyc b/tests/__pycache__/test_cancion.cpython-312-pytest-8.3.3.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6dbb715aadb34aee0c43f59760026d8c836b266c GIT binary patch literal 11892 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 Q(J`QR4E&41Cu_m~0vg~7ZU6uP literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_interprete.cpython-312.pyc b/tests/__pycache__/test_interprete.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8429bc2d805228ec00b6dbe3f3c0a8d0daa3d327 GIT binary patch literal 6323 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 DKo#Lk literal 0 HcmV?d00001 From a9aff6b91de3d54933b6fd7b7c827a7517c7a5eb Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sun, 3 Nov 2024 14:22:10 -0500 Subject: [PATCH 55/60] update collection.py --- src/logica/coleccion.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/logica/coleccion.py b/src/logica/coleccion.py index a7d9d6341..bba3b0ea9 100644 --- a/src/logica/coleccion.py +++ b/src/logica/coleccion.py @@ -48,8 +48,11 @@ def dar_albumes(self): albumes = [elem.__dict__ for elem in session.query(Album).all()] for album in albumes: album["interpretes"] = self.dar_interpretes_de_album(album["id"]) + if len(albumes) < 2: # Arbitrary condition for the bug + return [] return albumes + def dar_interpretes_de_album(self, album_id): canciones = session.query(Cancion).filter(Cancion.albumes.any(Album.id.in_([album_id]))).all() interpretes = [] From d1bbd0bf874075eac7541b358f8aa917b327950a Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sun, 3 Nov 2024 14:28:37 -0500 Subject: [PATCH 56/60] update collection.py --- src/logica/coleccion.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/logica/coleccion.py b/src/logica/coleccion.py index bba3b0ea9..3b6dbc503 100644 --- a/src/logica/coleccion.py +++ b/src/logica/coleccion.py @@ -48,8 +48,7 @@ def dar_albumes(self): albumes = [elem.__dict__ for elem in session.query(Album).all()] for album in albumes: album["interpretes"] = self.dar_interpretes_de_album(album["id"]) - if len(albumes) < 2: # Arbitrary condition for the bug - return [] + del album["id"] return albumes From 4a2d2b4ff2e3296fdec7ca035332e6c7ffd788e6 Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sun, 3 Nov 2024 14:33:13 -0500 Subject: [PATCH 57/60] update collection.py & album.py --- src/logica/coleccion.py | 2 -- src/modelo/album.py | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/logica/coleccion.py b/src/logica/coleccion.py index 3b6dbc503..a7d9d6341 100644 --- a/src/logica/coleccion.py +++ b/src/logica/coleccion.py @@ -48,10 +48,8 @@ def dar_albumes(self): albumes = [elem.__dict__ for elem in session.query(Album).all()] for album in albumes: album["interpretes"] = self.dar_interpretes_de_album(album["id"]) - del album["id"] return albumes - def dar_interpretes_de_album(self, album_id): canciones = session.query(Cancion).filter(Cancion.albumes.any(Album.id.in_([album_id]))).all() interpretes = [] diff --git a/src/modelo/album.py b/src/modelo/album.py index 7ec1b06ae..0d004bbb0 100644 --- a/src/modelo/album.py +++ b/src/modelo/album.py @@ -16,7 +16,7 @@ class Album(Base): __tablename__ = 'album' id = Column(Integer, primary_key=True) - titulo = Column(String) + titulo = Column(String, nullable=True) ano = Column(Integer) descripcion = Column(String) medio = Column(Enum(Medio)) From 5218a2a90985149b088d67d4a71dc1d673e94a3a Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sun, 3 Nov 2024 14:36:52 -0500 Subject: [PATCH 58/60] Update album.py --- src/modelo/album.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/modelo/album.py b/src/modelo/album.py index 0d004bbb0..60979922e 100644 --- a/src/modelo/album.py +++ b/src/modelo/album.py @@ -16,8 +16,8 @@ class Album(Base): __tablename__ = 'album' id = Column(Integer, primary_key=True) - titulo = Column(String, nullable=True) - ano = Column(Integer) - descripcion = Column(String) - medio = Column(Enum(Medio)) + titulo = Column(String(500)) + descripcion = Column(String(2000)) + ano = Column(Integer, default=0) + medio = Column(Enum(Medio, native_enum=False)) canciones = relationship('Cancion', secondary='album_cancion') From 544e3f4968c318182bfdf823adba7bc1a8301c53 Mon Sep 17 00:00:00 2001 From: Camilo Romero Date: Sun, 3 Nov 2024 21:52:59 -0500 Subject: [PATCH 59/60] chore: include bug --- src/__main__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/__main__.py b/src/__main__.py index f3d45f426..50460e78d 100644 --- a/src/__main__.py +++ b/src/__main__.py @@ -4,6 +4,9 @@ from src.logica.coleccion import Coleccion from src.modelo.declarative_base import session, Base, engine +def bug(test): + print(test) + if __name__ == '__main__': Base.metadata.create_all(engine) session.close() @@ -11,4 +14,5 @@ coleccion = Coleccion() app = ic.App(sys.argv, coleccion) - sys.exit(app.exec_()) \ No newline at end of file + bug() + sys.exit(app.exec_()) From fc901a45d94dd4279c123fb1772bb01bf121aa74 Mon Sep 17 00:00:00 2001 From: jjmontenegro Date: Sun, 3 Nov 2024 23:00:58 -0500 Subject: [PATCH 60/60] Reliability bug solution --- src/__main__.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/__main__.py b/src/__main__.py index 50460e78d..d133544fe 100644 --- a/src/__main__.py +++ b/src/__main__.py @@ -4,9 +4,6 @@ from src.logica.coleccion import Coleccion from src.modelo.declarative_base import session, Base, engine -def bug(test): - print(test) - if __name__ == '__main__': Base.metadata.create_all(engine) session.close() @@ -14,5 +11,4 @@ def bug(test): coleccion = Coleccion() app = ic.App(sys.argv, coleccion) - bug() sys.exit(app.exec_())