Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs(prs): Clarify automatic PR comment text #87

Merged
merged 3 commits into from
Jan 3, 2022

Conversation

rpatterson
Copy link
Member

Clarify that usually contributors should get all other checks passing before running the
Plone Jenkins PR jobs and add a link to the Plone Jenkins docs. Also fix some typos and
do some other editing for brevity and clarity.

Fixes #84

Also includes capturing some cleanup and local development build and set up I did along
the way.

Just something I try to remember to do whenever I touch code.
Clarify that usually contributors should get all other checks passing before running the
Plone Jenkins PR jobs and add a link to the Plone Jenkins docs.  Also fix some typos and
do some other editing for brevity and clarity.

Fixes #84
I captured everything I did to try things out locally in the `./Makefile`.  I don't see
anything broken related to my PR automatic trigger bot comment changes, but there are, I
assume existing, errors and failures.  For reference, here's the output from running all
the testing and code analysis tools:

    $ make test
    + exit_status=0
    + ./bin/pytest
    ========================================= test session starts ==========================================
    platform linux -- Python 3.7.12, pytest-5.3.4, py-1.8.1, pluggy-0.13.1
    rootdir: /home/rpatterson/src/plone/buildout.coredev/src/mr.roboto, inifile: setup.cfg
    plugins: cov-2.8.1
    collected 107 items

    src/mr.roboto/src/mr/roboto/tests/test_add_to_checkouts.py ......                                [  5%]
    src/mr.roboto/src/mr/roboto/tests/test_buildout.py FE                                            [  6%]
    src/mr.roboto/src/mr/roboto/tests/test_changelog_entry.py .....                                  [ 11%]
    src/mr.roboto/src/mr/roboto/tests/test_comments.py ................                              [ 26%]
    src/mr.roboto/src/mr/roboto/tests/test_config.py .........                                       [ 34%]
    src/mr.roboto/src/mr/roboto/tests/test_contributor_agreement.py ........                         [ 42%]
    src/mr.roboto/src/mr/roboto/tests/test_pull_requests.py .......                                  [ 48%]
    src/mr.roboto/src/mr/roboto/tests/test_runcorejob.py ............                                [ 59%]
    src/mr.roboto/src/mr/roboto/tests/test_runhooks.py ........                                      [ 67%]
    src/mr.roboto/src/mr/roboto/tests/test_simple_views.py ...................                       [ 85%]
    src/mr.roboto/src/mr/roboto/tests/test_subscriber.py ...                                         [ 87%]
    src/mr.roboto/src/mr/roboto/tests/test_utils.py .......                                          [ 94%]
    src/mr.roboto/src/mr/roboto/tests/test_warn_pull_request_jobs.py ......                          [100%]

    ================================================ ERRORS ================================================
    ___________________ ERROR at teardown of BuildoutTest.test_get_sources_and_checkouts ___________________

    self = <mr.roboto.tests.test_buildout.BuildoutTest testMethod=test_get_sources_and_checkouts>

        def tearDown(self):
            shutil.rmtree(self.coredev_repo.working_tree_dir)
    >       os.remove(self.settings['sources_file'])
    E       FileNotFoundError: [Errno 2] No such file or directory: 'sources.pickle'

    src/mr.roboto/src/mr/roboto/tests/test_buildout.py:53: FileNotFoundError
    =============================================== FAILURES ===============================================
    _____________________________ BuildoutTest.test_get_sources_and_checkouts ______________________________

    self = <mr.roboto.tests.test_buildout.BuildoutTest testMethod=test_get_sources_and_checkouts>

        def test_get_sources_and_checkouts(self):
            self.roboto.get(
    >           f'/update-sources-and-checkouts?token={self.settings["api_key"]}'
            )

    src/mr.roboto/src/mr/roboto/tests/test_buildout.py:65:
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    eggs/WebTest-2.0.33-py3.7.egg/webtest/app.py:335: in get
        expect_errors=expect_errors)
    eggs/WebTest-2.0.33-py3.7.egg/webtest/app.py:628: in do_request
        res = req.get_response(app, catch_exc_info=True)
    eggs/WebOb-1.8.6-py3.7.egg/webob/request.py:1310: in send
        application, catch_exc_info=True)
    eggs/WebOb-1.8.6-py3.7.egg/webob/request.py:1278: in call_application
        app_iter = application(self.environ, start_response)
    eggs/WebTest-2.0.33-py3.7.egg/webtest/lint.py:201: in lint_app
        iterator = application(environ, start_response_wrapper)
    eggs/pyramid-1.10.4-py3.7.egg/pyramid/router.py:270: in __call__
        response = self.execution_policy(environ, self)
    eggs/pyramid-1.10.4-py3.7.egg/pyramid/router.py:279: in default_execution_policy
        return request.invoke_exception_view(reraise=True)
    eggs/pyramid-1.10.4-py3.7.egg/pyramid/view.py:771: in invoke_exception_view
        reraise_(*exc_info)
    eggs/pyramid-1.10.4-py3.7.egg/pyramid/compat.py:178: in reraise
        raise value.with_traceback(tb)
    eggs/pyramid-1.10.4-py3.7.egg/pyramid/router.py:277: in default_execution_policy
        return router.invoke_request(request)
    eggs/pyramid-1.10.4-py3.7.egg/pyramid/router.py:249: in invoke_request
        response = handle_request(request)
    eggs/pyramid-1.10.4-py3.7.egg/pyramid/tweens.py:43: in excview_tween
        response = _error_handler(request, exc)
    eggs/pyramid-1.10.4-py3.7.egg/pyramid/tweens.py:13: in _error_handler
        response = request.invoke_exception_view(exc_info)
    eggs/pyramid-1.10.4-py3.7.egg/pyramid/view.py:767: in invoke_exception_view
        request_iface=request_iface.combined,
    eggs/pyramid-1.10.4-py3.7.egg/pyramid/view.py:667: in _call_view
        response = view_callable(context, request)
    eggs/pyramid-1.10.4-py3.7.egg/pyramid/viewderivers.py:401: in viewresult_to_response
        result = view(context, request)
    eggs/pyramid-1.10.4-py3.7.egg/pyramid/tweens.py:41: in excview_tween
        response = handler(request)
    eggs/pyramid-1.10.4-py3.7.egg/pyramid/router.py:148: in handle_request
        registry, request, context, context_iface, view_name
    eggs/pyramid-1.10.4-py3.7.egg/pyramid/view.py:667: in _call_view
        response = view_callable(context, request)
    eggs/pyramid-1.10.4-py3.7.egg/pyramid/viewderivers.py:436: in rendered_view
        result = view(context, request)
    src/mr.roboto/src/mr/roboto/security.py:40: in wrapped
        return fn(context, request)
    src/mr.roboto/src/mr/roboto/views/home.py:128: in update_pickles
        get_sources_and_checkouts(request)
    src/mr.roboto/src/mr/roboto/buildout.py:146: in get_sources_and_checkouts
        for source in buildout.sources:
    src/mr.roboto/src/mr/roboto/buildout.py:81: in __iter__
        return self.data.__iter__()
    src/mr.roboto/src/mr/roboto/buildout.py:72: in data
        config["buildout"]["directory"] = os.getcwd()
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

    self = <backports.configparser.ConfigParser object at 0x7f0a801ed290>, key = 'buildout'

        def __getitem__(self, key):
            if key != self.default_section and not self.has_section(key):
    >           raise KeyError(key)
    E           KeyError: 'buildout'

    eggs/configparser-4.0.2-py3.7.egg/backports/configparser/__init__.py:1040: KeyError
    =========================================== warnings summary ===========================================
    eggs/pyramid-1.10.4-py3.7.egg/pyramid/path.py:4
      /home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/eggs/pyramid-1.10.4-py3.7.egg/pyramid/path.py:4: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
        import imp

    -- Docs: https://docs.pytest.org/en/latest/warnings.html
    ========================== 1 failed, 106 passed, 1 warning, 1 error in 2.53s ===========================
    + exit_status=1
    + ./bin/code-analysis --return-status-codes
    Check clean lines....................[ OK ] in 0.042s
    Flake8..........................[ FAILURE ] in 0.800s
    /home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/src/mr.roboto/src/mr/roboto/buildout.py:72:16: Q000 Remove bad quotes
    /home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/src/mr.roboto/src/mr/roboto/buildout.py:72:28: Q000 Remove bad quotes
    The command "bin/code-analysis" exited with 1 in 0.811s.
    + exit_status=1
    + ./bin/versioncheck
    Parsing buildout files:
    - /home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/buildout.cfg
      84 entries in versions section.
    parsing finished.

    Read tracking information from buildout extension:
    - /home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/.plone.versioncheck.tracked.json
    - age of gathered data: 0d 0h 16m 51.328s

    Report for humans

    attrs
        21.3.0 ... X
    beautifulsoup4
        4.8.2 .... A
    cachecontrol
        0.12.6 ... A
    certifi
        2019.11.28 A
    chameleon
        3.6.2 .... A
    chardet
        3.0.4 .... A
    check-manifest
        0.40 ..... A
    collective.recipe.omelette
        0.16 ..... A
    colorama
        0.4.3 .... A
    configparser
        4.0.2 .... A
    cornice
        4.0.1 .... A
    coverage
        5.0.3 .... A
    deprecated
        1.2.7 .... A
    flake8
        3.6.0 .... A
    flake8-blind-except
        0.1.1 .... A
    flake8-coding
        1.3.1 .... A
    flake8-debugger
        3.1.0 .... A
    flake8-deprecated
        1.3 ...... A
    flake8-pep3101
        1.2.1 .... A
    flake8-polyfill
        1.0.2 .... A
    flake8-print
        3.1.0 .... A
    flake8-quotes
        1.0.0 .... A
    flake8-string-format
        0.2.3 .... A
    flake8-todo
        0.7 ...... A
    gitdb2
        2.0.6 .... A
    gitpython
        3.0.5 .... A
    hupper
        1.9.1 .... A
    idna
        2.8 ...... A
    importlib-metadata
        1.4.0 .... A
    jinja2
        2.10.3 ... A
    lockfile
        0.12.2 ... A
    lxml
        4.4.2 .... A
    mako
        1.1.1 .... A
    markupsafe
        1.1.1 .... A
    mccabe
        0.6.1 .... A
    mock
        3.0.5 .... A
    more-itertools
        8.1.0 .... A
    mr.roboto
        2.0 ...... D
    msgpack
        0.6.2 .... A
    packaging
        20.1 ..... A
    paste
        3.2.6 .... A
    pastedeploy
        2.0.1 .... A
    pep8-naming
        0.7.0 .... A
    plaster
        1.0 ...... A
    plaster-pastedeploy
        0.7 ...... A
    plone.recipe.codeanalysis
        3.0.1 .... A
    plone.versioncheck
        1.7.0 .... A
    pluggy
        0.13.1 ... A
    py
        1.8.1 .... A
    pycodestyle
        2.4.0 .... A
    pyflakes
        2.0.0 .... A
    pygithub
        1.45 ..... A
    pygments
        2.5.2 .... A
    pyjwt
        1.7.1 .... A
    pyparsing
        2.4.6 .... A
    pyramid
        1.10.4 ... A
    pyramid-chameleon
        0.3 ...... A
    pyramid-debugtoolbar
        4.6 ...... A
    pyramid-mailer
        0.15.1 ... A
    pyramid-mako
        1.1.0 .... A
    pytest
        5.3.4 .... A
    pytest-cov
        2.8.1 .... A
    repoze.lru
        0.7 ...... A
    repoze.sendmail
        4.4.1 .... A
    requests
        2.22.0 ... A
    setuptools
        41.6.0 ... A
    simplejson
        3.17.0 ... A
    six
        1.14.0 ... A
    smmap2
        2.0.5 .... A
    soupsieve
        1.9.5 .... A
    testfixtures
        6.10.3 ... A
    toml
        0.10.2 ... X
    transaction
        3.0.0 .... A
    translationstring
        1.3 ...... A
    unidiff
        0.5.4 .... A
    urllib3
        1.25.8 ... A
    venusian
        3.0.0 .... A
    waitress
        1.4.2 .... A
    wcwidth
        0.1.7 .... A
    webob
        1.8.6 .... A
    webtest
        2.0.33 ... A
    wrapt
        1.11.2 ... A
    zc.buildout
        2.13.2 ... A
    zc.recipe.egg
        2.0.7 .... A
    zipp
        2.1.0 .... A
    zope.deprecation
        4.4.0 .... A
    zope.interface
        4.7.1 .... A
    + exit 1

For reference, here's the output from running the development server:

    $ make run
    + ./bin/pserve development.ini --reload
    Starting monitor for PID 3263123.
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/eggs/hupper-1.9.1-py3.7.egg/hupper/ipc.py", line 320, in spawn_main
        func(**kwargs)
      File "/home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/eggs/hupper-1.9.1-py3.7.egg/hupper/worker.py", line 265, in worker_main
        func(*spec_args, **spec_kwargs)
      File "/home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/eggs/pyramid-1.10.4-py3.7.egg/pyramid/scripts/pserve.py", line 34, in main
        return command.run()
      File "/home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/eggs/pyramid-1.10.4-py3.7.egg/pyramid/scripts/pserve.py", line 275, in run
        app = loader.get_wsgi_app(app_name, config_vars)
      File "/home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/eggs/plaster_pastedeploy-0.7-py3.7.egg/plaster_pastedeploy/__init__.py", line 129, in get_wsgi_app
        global_conf=defaults,
      File "/home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/eggs/PasteDeploy-2.0.1-py3.7.egg/paste/deploy/loadwsgi.py", line 253, in loadapp
        return loadobj(APP, uri, name=name, **kw)
      File "/home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/eggs/PasteDeploy-2.0.1-py3.7.egg/paste/deploy/loadwsgi.py", line 278, in loadobj
        return context.create()
      File "/home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/eggs/PasteDeploy-2.0.1-py3.7.egg/paste/deploy/loadwsgi.py", line 715, in create
        return self.object_type.invoke(self)
      File "/home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/eggs/PasteDeploy-2.0.1-py3.7.egg/paste/deploy/loadwsgi.py", line 150, in invoke
        **context.local_conf)
      File "/home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/eggs/PasteDeploy-2.0.1-py3.7.egg/paste/deploy/util.py", line 55, in fix_call
        val = callable(*args, **kw)
      File "/home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/eggs/Paste-3.2.6-py3.7.egg/paste/urlmap.py", line 31, in urlmap_factory
        app = loader.get_app(app_name, global_conf=global_conf)
      File "/home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/eggs/PasteDeploy-2.0.1-py3.7.egg/paste/deploy/loadwsgi.py", line 356, in get_app
        name=name, global_conf=global_conf).create()
      File "/home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/eggs/PasteDeploy-2.0.1-py3.7.egg/paste/deploy/loadwsgi.py", line 715, in create
        return self.object_type.invoke(self)
      File "/home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/eggs/PasteDeploy-2.0.1-py3.7.egg/paste/deploy/loadwsgi.py", line 152, in invoke
        return fix_call(context.object, context.global_conf, **context.local_conf)
      File "/home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/eggs/PasteDeploy-2.0.1-py3.7.egg/paste/deploy/util.py", line 55, in fix_call
        val = callable(*args, **kw)
      File "/home/rpatterson/src/plone/buildout.coredev/src/mr.roboto/src/mr.roboto/src/mr/roboto/__init__.py", line 37, in main
        settings['py_versions']
    KeyError: 'py_versions'
    Press ENTER or change a file to reload.
Copy link
Member

@mauritsvanrees mauritsvanrees left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have no opinion on the Makefile, but the new comment is good for me.

@rpatterson
Copy link
Member Author

Thanks for the review, @mauritsvanrees. LMK if there's anything more I can do to get this merged. CC: @gforcada

@gforcada
Copy link
Member

gforcada commented Jan 3, 2022

Hey @rpatterson thanks for the PR! I LGTM though, the Makefile feels too much/unneeded for my taste, but oh well, we can always remove at a later point.

@gforcada gforcada merged commit 70e08fc into master Jan 3, 2022
@gforcada gforcada deleted the docs-clarify-pr-trigger-comment branch January 3, 2022 11:19
@gforcada
Copy link
Member

gforcada commented Jan 3, 2022

Deployed! 🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Clarify to run jobs after repo-local CI checks have passed
3 participants