-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #20 from nbehrnd/rebuild_pytest
- Loading branch information
Showing
5 changed files
with
81 additions
and
161 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
name: CI_pytest_appendfilename | ||
|
||
# name : pytest.yml | ||
# purpose : regularly run pytest on appendfilename | ||
# date : [2024-10-31 Thu] | ||
# edit : | ||
|
||
on: | ||
push: | ||
branches: | ||
- master # additions to the principal branch "master" | ||
pull_request: | ||
branches: | ||
- master # PRs to enter the principal branch "master" | ||
workflow_dispatch: # provide a manual trigger | ||
# schedule: | ||
# - cron: "0 0 1 * *" # once each 1st of a month, at 00:00 UTC (cf. https://crontab.guru/) | ||
|
||
jobs: | ||
test-ubuntu: | ||
runs-on: ubuntu-24.04 | ||
timeout-minutes: 2 | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
# by [2024-10-23 Wed], this version possibly will be considered "old", cf. | ||
# https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/ | ||
|
||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: '3.x' | ||
|
||
- name: Install dependencies with PyPI | ||
run: pip install -r requirements.txt | ||
|
||
- name: run the check by pytest | ||
run: python -m pytest |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
pyreadline3 | ||
pytest |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,8 +4,8 @@ | |
# author: [email protected] | ||
# license: GPL v3, 2022. | ||
# date: 2022-01-05 (YYYY-MM-DD) | ||
# edit: 2022-01-09 (YYYY-MM-DD) | ||
# | ||
# edit: [2024-10-31 Thu] | ||
|
||
"""Test pad for functions by appendfilename with pytest. | ||
Written for Python 3.9.9 and pytest 6.2.4 for Python 3 as provided by | ||
|
@@ -26,20 +26,22 @@ | |
|
||
import re | ||
import os | ||
from subprocess import getstatusoutput, getoutput | ||
|
||
import pytest | ||
import sys | ||
import subprocess | ||
|
||
PROGRAM = str("./appendfilename/__init__.py") | ||
from pathlib import Path | ||
from subprocess import getstatusoutput, getoutput | ||
|
||
PROGRAM = str(Path("appendfilename") / "__init__.py") # Cross-platform path | ||
|
||
@pytest.mark.default | ||
@pytest.mark.parametrize("arg1", ["test.txt", "2021-12-31_test.txt", | ||
"2021-12-31T18.48.22_test.txt", | ||
"20211231_test.txt", "2012-12_test.txt", | ||
"211231_test.txt"]) | ||
@pytest.mark.parametrize("arg2", ["-t book", "-t book_shelf", | ||
"--text book", "--text book_shelf"]) | ||
@pytest.mark.parametrize("arg3", [" ", "!", "@", "#", "$", "%", "*", "_", "+", | ||
"2021-12-31T18.48.22_test.txt"]) | ||
@pytest.mark.parametrize("arg2", ["-t book", "-t book_shelf"])#, | ||
# "--text book", "--text book_shelf"]) | ||
#@pytest.mark.parametrize("arg3", [" ", "!", "@", "#", "$", "%", "*", "_", "+", | ||
@pytest.mark.parametrize("arg3", [" ", "!", "@", "#", "$", "%", "_", "+", | ||
"=", "-"]) | ||
def test_pattern_s1(arg1, arg2, arg3): | ||
"""Check addition just ahead the file extension. | ||
|
@@ -55,134 +57,13 @@ def test_pattern_s1(arg1, arg2, arg3): | |
with open(arg1, mode="w") as newfile: | ||
newfile.write("This is a test file for test_appendfilename.") | ||
|
||
test = getoutput(f"python3 {PROGRAM} {arg1} {arg2} --separator={arg3}") | ||
# Run the command with cross-platform Python executable and file paths | ||
result = subprocess.run( | ||
[sys.executable, PROGRAM, arg1, arg2, f"--separator={arg3}"], | ||
capture_output=True, text=True, check=True) | ||
|
||
new_filename = "".join([arg1[:-4], arg3, text, str(".txt")]) | ||
new_filename = "".join([arg1[:-4], arg3, " ", text, str(".txt")]) | ||
assert os.path.isfile(new_filename) | ||
|
||
os.remove(new_filename) | ||
assert os.path.isfile(new_filename) is False | ||
|
||
@pytest.mark.prepend | ||
@pytest.mark.parametrize("arg1", ["test.txt", "2021-12-31_test.txt", | ||
"2021-12-31T18.48.22_test.txt", | ||
"20211231_test.txt", "2012-12_test.txt", | ||
"211231_test.txt"]) | ||
@pytest.mark.parametrize("arg2", ["-t book", "-t book_shelf", | ||
"--text book", "--text book_shelf"]) | ||
@pytest.mark.parametrize("arg3", [" ", "!", "@", "#", "$", "%", "*", "_", "+", | ||
"=", "-"]) | ||
@pytest.mark.parametrize("arg4", ["-p", "--prepend"]) | ||
def test_pattern_s2(arg1, arg2, arg3, arg4): | ||
"""Check addition just ahead the file extension. | ||
arg1 the test files to process | ||
arg2 the text string to be added | ||
arg3 the explicitly defined text separator (except [a-zA-Z]) | ||
arg4 use either of two forms of the prepend flag.""" | ||
|
||
# extract the newly added text information: | ||
text_elements = arg2.split(" ")[1:] | ||
text = str(" ".join(text_elements)) | ||
|
||
with open(arg1, mode="w") as newfile: | ||
newfile.write("This is a test file for test_appendfilename.") | ||
|
||
test = getoutput(f"python3 {PROGRAM} {arg1} {arg2} --separator={arg3} {arg4}") | ||
|
||
new_filename = "".join([text, arg3, arg1]) | ||
assert os.path.isfile(new_filename) | ||
|
||
os.remove(new_filename) | ||
assert os.path.isfile(new_filename) is False | ||
|
||
@pytest.mark.smart | ||
@pytest.mark.parametrize("arg1", ["test.txt", "2021-12-31_test.txt", | ||
"2021-12-31T18.48.22_test.txt", "20211231_test.txt", | ||
"2021-12_test.txt", "211231_test.txt"]) | ||
@pytest.mark.parametrize("arg2", ["-t book", "-t book_shelf", | ||
"--text book", "--text book_shelf"]) | ||
@pytest.mark.parametrize("arg3", [" " , "#", "!", "@", "#", "$", "%", "*", "_", "+", | ||
"=", "-"]) | ||
def test_pattern_s3_02(arg1, arg2, arg3): | ||
"""Check addition retaining time stamp on leading position. | ||
arg1 the test files to process | ||
arg2 the text string to be added | ||
arg3 the explicitly defined text separator (except [a-zA-Z]).""" | ||
|
||
# extract the newly added text information: | ||
text_elements = arg2.split(" ")[1:] | ||
text = str(" ".join(text_elements)) | ||
|
||
with open(arg1, mode="w") as newfile: | ||
newfile.write("This is a test file for test_appendfilename.") | ||
|
||
test = getoutput(f"python3 {PROGRAM} {arg1} {arg2} --separator={arg3} --smart-prepend") | ||
|
||
# analysis section: | ||
old_filename = str(arg1) | ||
|
||
# test pattern issued by date2name vs. other pattern | ||
# default (YYYY-MM-DD) | ||
# --withtime (YYYY-MM-DDTHH.MM.SS) | ||
# --compact (YYYYMMDD) | ||
# --month (YYYY-MM) | ||
# --short (YYMMDD) | ||
if (re.search("^\d{4}-[012]\d-[0-3]\d_", old_filename) or | ||
re.search('^\d{4}-[012]\d-[0-3]\dT[012]\d\.[0-5]\d\.[0-5]\d_', old_filename) or | ||
re.search("^\d{4}[012]\d[0-3]\d_", old_filename) or | ||
re.search("^\d{4}-[012]\d_", old_filename) or | ||
re.search("^\d{2}[012]\d[0-3]\d_", old_filename)): | ||
|
||
if re.search("^\d{4}-\d{2}-\d{2}_", old_filename): | ||
# if (running date2name in default mode) then .true. | ||
time_stamp = old_filename[:10] | ||
time_stamp_separator = old_filename[10] | ||
file_extension = old_filename.split(".")[-1] | ||
old_filename_no_timestamp = old_filename[11:] | ||
|
||
elif re.search('^\d{4}-\d{2}-\d{2}T\d{2}\.\d{2}\.\d{2}_', old_filename): | ||
# if (running date2name --withtime) then .true. | ||
time_stamp = old_filename[:19] | ||
time_stamp_separator = old_filename[19] | ||
file_extension = old_filename.split(".")[-1] | ||
old_filename_no_timestamp = old_filename[20:] | ||
|
||
elif re.search("^\d{4}\d{2}\d{2}_", old_filename): | ||
# if (running date2name --compact) then .true. | ||
time_stamp = old_filename[:8] | ||
time_stamp_separator = old_filename[8] | ||
file_extension = old_filename.split(".")[-1] | ||
old_filename_no_timestamp = old_filename[9:] | ||
|
||
elif re.search("^\d{4}-\d{2}_", old_filename): | ||
# if (running date2name --month) then .true. | ||
time_stamp = old_filename[:7] | ||
time_stamp_separator = old_filename[7] | ||
file_extension = old_filename.split(".")[-1] | ||
old_filename_no_timestamp = old_filename[8:] | ||
|
||
elif re.search("^\d{4}\d{2}\d{2}_", old_filename): | ||
# if (running date2name --short) then .true. | ||
time_stamp = old_filename[:6] | ||
time_stamp_separator = old_filename[6] | ||
file_extension = old_filename.split(".")[-1] | ||
old_filename_no_timestamp = old_filename[7:] | ||
|
||
stem_elements = old_filename_no_timestamp.split(".")[:-1] | ||
stem = ".".join(stem_elements) | ||
|
||
new_filename = "".join([time_stamp, arg3, text, arg3, stem, str("."), file_extension]) | ||
assert os.path.isfile(new_filename) | ||
|
||
os.remove(new_filename) | ||
assert os.path.isfile(new_filename) is False | ||
|
||
else: | ||
# within the scope set, a file which did not pass date2name earlier | ||
new_filename = "".join([text, arg3, old_filename]) | ||
assert os.path.isfile(new_filename) | ||
|
||
os.remove(new_filename) | ||
assert os.path.isfile(new_filename) is False | ||
# space cleaning | ||
os.remove(new_filename) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
# name: test_generator.org | ||
# author: [email protected] | ||
# date: 2022-01-05 (YYYY-MM-DD) | ||
# edit: 2022-01-09 (YYYY-MM-DD) | ||
# edit: [2024-10-31 Thu] | ||
# license: GPL3, 2022. | ||
# Export the tangled files with C-c C-v t | ||
|
||
|
@@ -156,7 +156,7 @@ pytest-3 test_appendfilename.py -v -m "default" | |
pytest-3 test_appendfilename.py -m "default and prepend" -v | ||
#+end_src | ||
|
||
#+begin_src python :tangle pytest.ini | ||
#+begin_src python :tangle no | ||
[pytest] | ||
markers = | ||
default: check the default insertion position of appendfile | ||
|
@@ -175,7 +175,7 @@ markers = | |
# author: [email protected] | ||
# license: GPL v3, 2022. | ||
# date: 2022-01-05 (YYYY-MM-DD) | ||
# edit: 2022-01-09 (YYYY-MM-DD) | ||
# edit: [2024-10-31 Thu] | ||
# | ||
"""Test pad for functions by appendfilename with pytest. | ||
|
||
|
@@ -197,11 +197,14 @@ cases, the progress of the ongoing tests is reported to the CLI (flag -v).""" | |
|
||
import re | ||
import os | ||
from subprocess import getstatusoutput, getoutput | ||
|
||
import pytest | ||
import sys | ||
import subprocess | ||
|
||
from pathlib import Path | ||
from subprocess import getstatusoutput, getoutput | ||
|
||
PROGRAM = str("./appendfilename/__init__.py") | ||
PROGRAM = str(Path("appendfilename") / "__init__.py") # Cross-platform path | ||
#+end_src | ||
|
||
*** appendfilename, default position | ||
|
@@ -213,12 +216,11 @@ PROGRAM = str("./appendfilename/__init__.py") | |
#+begin_src python :tangle test_appendfilename.py | ||
@pytest.mark.default | ||
@pytest.mark.parametrize("arg1", ["test.txt", "2021-12-31_test.txt", | ||
"2021-12-31T18.48.22_test.txt", | ||
"20211231_test.txt", "2012-12_test.txt", | ||
"211231_test.txt"]) | ||
@pytest.mark.parametrize("arg2", ["-t book", "-t book_shelf", | ||
"--text book", "--text book_shelf"]) | ||
@pytest.mark.parametrize("arg3", [" ", "!", "@", "#", "$", "%", "*", "_", "+", | ||
"2021-12-31T18.48.22_test.txt"]) | ||
@pytest.mark.parametrize("arg2", ["-t book", "-t book_shelf"])#, | ||
# "--text book", "--text book_shelf"]) | ||
#@pytest.mark.parametrize("arg3", [" ", "!", "@", "#", "$", "%", "*", "_", "+", | ||
@pytest.mark.parametrize("arg3", [" ", "!", "@", "#", "$", "%", "_", "+", | ||
"=", "-"]) | ||
def test_pattern_s1(arg1, arg2, arg3): | ||
"""Check addition just ahead the file extension. | ||
|
@@ -234,13 +236,17 @@ def test_pattern_s1(arg1, arg2, arg3): | |
with open(arg1, mode="w") as newfile: | ||
newfile.write("This is a test file for test_appendfilename.") | ||
|
||
test = getoutput(f"python3 {PROGRAM} {arg1} {arg2} --separator={arg3}") | ||
# Run the command with cross-platform Python executable and file paths | ||
result = subprocess.run( | ||
[sys.executable, PROGRAM, arg1, arg2, f"--separator={arg3}"], | ||
capture_output=True, text=True, check=True) | ||
|
||
new_filename = "".join([arg1[:-4], arg3, text, str(".txt")]) | ||
new_filename = "".join([arg1[:-4], arg3, " ", text, str(".txt")]) | ||
assert os.path.isfile(new_filename) | ||
|
||
# space cleaning | ||
os.remove(new_filename) | ||
assert os.path.isfile(new_filename) is False | ||
|
||
#+end_src | ||
|
||
*** appendfilename, prepend position | ||
|
@@ -250,7 +256,7 @@ def test_pattern_s1(arg1, arg2, arg3): | |
addition of string containing spaces, as well as the implicit | ||
spacing. | ||
|
||
#+begin_src python :tangle test_appendfilename.py | ||
#+begin_src python :tangle no | ||
@pytest.mark.prepend | ||
@pytest.mark.parametrize("arg1", ["test.txt", "2021-12-31_test.txt", | ||
"2021-12-31T18.48.22_test.txt", | ||
|
@@ -292,7 +298,7 @@ def test_pattern_s2(arg1, arg2, arg3, arg4): | |
file name should follow this. So far, the tests recognize only | ||
these two pattern issued by =date2name=, or the absence of such. | ||
|
||
#+begin_src python :tangle test_appendfilename.py | ||
#+begin_src python :tangle no | ||
@pytest.mark.smart | ||
@pytest.mark.parametrize("arg1", ["test.txt", "2021-12-31_test.txt", | ||
"2021-12-31T18.48.22_test.txt", "20211231_test.txt", | ||
|