mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-11-12 10:10:55 +01:00
Running one directory (EADS) had already produced four bugs, so all of them
were run. 11 failed. Every one was real -- either in the coursework or in the
harness I had just written -- and the split was roughly even.
Coursework bugs:
- 15 .tex files use Polish ogonek characters with no fontenc, so pdflatex
dies with "Command \k unavailable in encoding OT1". Fixed where it was
actually needed, not blanket-applied.
- BSS had \documentclass{article}[12pt] -- options after the class name,
where they are not options at all.
- SDM's beamer deck had a stray } on an \item, which took out the frame.
- EOOP/Various/currency included "currency2.hpp"; the file is currency.hpp.
- ECRYPT_PROJECT had the SAME stdlib-shadowing bug as ECOTE: a package named
code/. Renamed to sieve/, and its 99 tests now run. With ECOTE's 26 that
is 125 tests that could not execute at all before today.
Harness bugs, which the run is what exposed:
- COURSE_ENTRY pointed at directories for PORR and ECRYPT_PROJECT, so python
looked for __main__.py and reported the wrong problem.
- main.py was auto-picked via find's first result. EARIN has six labs and
six main.py files, so that ran an arbitrary lab and called it the course.
Now only auto-picked when exactly one exists.
- Only the first requirements.txt was installed, which is why EARIN still
died on gymnasium after a venv was created for it. All of them now.
- The notebook probe accepted jupyter being on PATH. This machine's jupyter
is a pipx shim whose interpreter is gone, so "runnable" was a lie; it now
invokes jupyter --version and PBAD/twm_4 report blocked, honestly.
- Nothing ran a course's tests. Where a suite exists it is now the check,
which matters most for ECRYPT_PROJECT, whose program prompts on stdin and
cannot be run headlessly at all.
- Which directory pytest runs from is course-specific and unguessable, so
stubs pass --test-dir: ECOTE needs program/ for imports, ECRYPT_PROJECT
needs sieve/ because its fixtures open a CSV by relative path.
gates/known-incomplete.txt records the one file that genuinely cannot build:
EOOP/Various/set/set.cpp includes set.hpp, which `git log --all` shows has
never existed here. The course supplied it and only the .cpp was submitted.
That is a factual record with a stated check, not a lint allowlist -- and
fabricating the header would be inventing coursework.
Status is now 36 runnable / 5 no-code / 3 blocked.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0172dj34FDpao6wsix8ZuCzE
42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
import pandas as pd
|
|
import pytest
|
|
|
|
from .project import sieve_of_eratosthenes
|
|
|
|
|
|
def pytest_addoption(parser):
|
|
parser.addoption(
|
|
"--primes",
|
|
action="store",
|
|
default='100',
|
|
help="Upper bound for primes to test."
|
|
)
|
|
parser.addoption(
|
|
"--composites",
|
|
action="store",
|
|
default='100',
|
|
help="Upper bound for composites to test."
|
|
)
|
|
|
|
|
|
def pytest_configure(config):
|
|
pytest.primes = int(config.getoption("--primes"))
|
|
pytest.composites = int(config.getoption("--composites"))
|
|
|
|
|
|
def pytest_generate_tests(metafunc):
|
|
df_prime = pd.read_csv("P-100000.csv", header=None)
|
|
df_prime = df_prime[df_prime.iloc[:, 1] < pytest.primes]
|
|
primes = set(df_prime.iloc[:, 1])
|
|
df_composite = pd.read_csv("C-100000.csv", header=None, delimiter="=")
|
|
# interpret first oclumns as numbers
|
|
df_composite = df_composite[df_composite.iloc[:, 0] < pytest.composites]
|
|
composites = set(df_composite.iloc[:, 0])
|
|
if metafunc.function.__name__ == 'test_positives':
|
|
metafunc.parametrize('prime', primes)
|
|
metafunc.parametrize('primes_obtained', [sieve_of_eratosthenes(max(primes) + 1),])
|
|
|
|
if metafunc.function.__name__ == 'test_composites':
|
|
metafunc.parametrize('composite', composites)
|
|
metafunc.parametrize('primes_obtained', [sieve_of_eratosthenes(max(composites) + 1),])
|