Skip to content
  • ohemorange's avatar
    Refactor certbot/ and certbot/tests/ to use the same structure as the other packages (#7544) · 4abd81e2
    ohemorange authored
    Summary of changes in this PR:
    - Refactor files involved in the `certbot` module to be of a similar structure to every other package; that is, inside a directory inside the main repo root (see below).
    - Make repo root README symlink to `certbot` README.
    - Pull tests outside of the distributed module.
    - Make `certbot/tests` not be a module so that `certbot` isn't added to Python's path for module discovery.
    - Remove `--pyargs` from test calls, and make sure to call tests from repo root since without `--pyargs`, `pytest` takes directory names rather than package names as arguments.
    - Replace mentions of `.` with `certbot` when referring to packages to install, usually editably.
    - Clean up some unused code around executing tests in a different directory.
    - Create public shim around main and make that the entry point.
    
    New directory structure summary:
    ```
    repo root ("certbot", probably, but for clarity all files I mention are relative to here)
    ├── certbot
    │   ├── setup.py
    │   ├── certbot
    │   │   ├── __init__.py
    │   │   ├── achallenges.py
    │   │   ├── _internal
    │   │   │   ├── __init__.py
    │   │   │   ├── account.py
    │   │   │   ├── ...
    │   │   ├── ...
    │   ├── tests
    │   │   ├── account_test.py
    │   │   ├── display
    │   │   │   ├── __init__.py
    │   │   │   ├── ...
    │   │   ├── ... # note no __init__.py at this level
    │   ├── ...
    ├── acme
    │   ├── ...
    ├── certbot-apache
    │   ├── ...
    ├── ...
    ```
    
    * refactor certbot/ and certbot/tests/ to use the same structure as the other packages
    
    * git grep -lE "\-e(\s+)\." | xargs sed -i -E "s/\-e(\s+)\./-e certbot/g"
    
    * git grep -lE "\.\[dev\]" | xargs sed -i -E "s/\.\[dev\]/certbot[dev]/g"
    
    * git grep -lE "\.\[dev3\]" | xargs sed -i -E "s/\.\[dev3\]/certbot[dev3]/g"
    
    * Remove replacement of certbot into . in install_and_test.py
    
    * copy license back out to main folder
    
    * remove linter_plugin.py and CONTRIBUTING.md from certbot/MANIFEST.in because these files are not under certbot/
    
    * Move README back into main folder, and make the version inside certbot/ a symlink
    
    * symlink certbot READMEs the other way around
    
    * move testdata into the public api certbot zone
    
    * update source_paths in tox.ini to certbot/certbot to find the right subfolder for tests
    
    * certbot version has been bumped down a directory level
    
    * make certbot tests directory not a package and import sibling as module
    
    * Remove unused script cruft
    
    * change . to certbot in test_sdists
    
    * remove outdated comment referencing a command that doesn't work
    
    * Install instructions should reference an existing file
    
    * update file paths in Dockerfile
    
    * some package named in tox.ini were manually specified, change those to certbot
    
    * new directory format doesn't work easily with pyargs according to http://doc.pytest.org/en/latest/goodpractices.html#tests-as-part-of-application-code
    
    
    
    * remove other instance of pyargs
    
    * fix up some references in _release.sh by searching for ' . ' and manual check
    
    * another stray . in tox.ini
    
    * fix paths in tools/_release.sh
    
    * Remove final --pyargs call, and now-unnecessary call to modules instead of local files, since that's fixed by certbot's code being one layer deeper
    
    * Create public shim around main and make that the entry point
    
    * without pyargs, tests cannot be run from an empty directory
    
    * Remove cruft for running certbot directly from main
    
    * Have main shim take real arg
    
    * add docs/api file for main, and fix up main comment
    
    * Update certbot/docs/install.rst
    
    Co-Authored-By: default avatarBrad Warren <bmw@users.noreply.github.com>
    
    * Fix comments in readthedocs requirements files to refer to current package
    
    * Update .[docs] reference in contributing.rst
    
    * Move plugins tests to certbot tests directory
    
    * add certbot tests to MANIFEST.in so packagers can run python setup.py test
    
    * move examples directory inside certbot/
    
    * Move CHANGELOG into certbot, and create a top-level symlink
    
    * Remove unused sys and logging from main shim
    
    * nginx http01 test no longer relies on certbot plugins common test
    4abd81e2