appmap 3.0.0__tar.gz → 3.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {appmap-3.0.0 → appmap-3.0.1}/PKG-INFO +1 -1
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/configuration.py +9 -1
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/env.py +4 -1
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_runner.py +31 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/command/runner.py +12 -2
- {appmap-3.0.0 → appmap-3.0.1}/pyproject.toml +1 -1
- {appmap-3.0.0 → appmap-3.0.1}/.gitignore +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/LICENSE +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/README.md +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/django.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/event.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/fastapi.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/flask.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/generation.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/importer.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/instrument.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/labels.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/metadata.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/noappmap.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/py_version_check.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/recorder.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/recording.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/remote_recording.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/singleton.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/appmap_test_base.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/bin/server_runner +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/conftest.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/appmap-all-paths-malformed.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/appmap-broken.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/appmap-class.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/appmap-empty-path.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/appmap-exclude-fn.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/appmap-func.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/appmap-malformed-path.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/appmap-no-pyyaml.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/appmap.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/appmap_testing/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/appmap_testing/django_simplelazyobject.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/config/src/package/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/config/test/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/config/test/foo.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/config-exclude/.hide/hidden_mod/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/config-exclude/node_modules/node_mod/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/config-exclude/src/package/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/config-exclude/test/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/config-exclude/venv/venv_mod/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/config-up/appmap.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/config-up/project/p1/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/config-up/project/p2/sub1/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/django/appmap.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/django/djangoapp/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/django/djangoapp/djangoapp.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/django/djangoapp/hello_world.html +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/django/djangoapp/middleware.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/django/djangoapp/settings.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/django/djangoapp/settings_dev.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/django/djangoapp/urls.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/django/init/sitecustomize.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/django/manage.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/django/pytest.ini +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/django/test/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/django/test/test_app.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/django/test/test_request.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/django/test/test_unittest_setup.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/example_class.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/expected.appmap.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/fastapi/appmap.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/fastapi/fastapiapp/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/fastapi/fastapiapp/main.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/fastapi/init/sitecustomize.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/fastapi/test_app.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/flask/appmap.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/flask/flaskapp.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/flask/init/sitecustomize.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/flask/templates/test.html +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/flask/test_app.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/flask-instrumented/appmap.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/flask-instrumented/flaskapp.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/flask-instrumented/init/sitecustomize.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/flask-instrumented/test_app.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/package1/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/package1/package2/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/package1/package2/__main__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/package1/package2/mod1.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/params.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/properties_class.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest/appmap-no-test-cases.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest/appmap.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest/expected/pytest-numpy1-no-test-cases.appmap.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest/expected/pytest-numpy1.appmap.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest/expected/pytest-numpy2-no-test-cases.appmap.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest/expected/pytest-numpy2.appmap.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest/expected/status_errored.metadata.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest/expected/status_failed.metadata.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest/expected/status_xfailed.metadata.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest/expected/status_xsucceeded.metadata.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest/simple.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest/tests/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest/tests/test_noappmap.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest/tests/test_simple.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest-instrumented/appmap.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest-instrumented/init/sitecustomize.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest-instrumented/test_instrumented.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/remote.appmap.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/trial/.gitignore +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/trial/appmap-no-test-cases.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/trial/appmap.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/trial/expected/pytest-no-test-cases.appmap.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/trial/expected/pytest.appmap.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/trial/init/sitecustomize.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/trial/test/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/trial/test/test_deferred.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/appmap-no-test-cases.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/appmap.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/expected/pytest.appmap.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/expected/status_errored.metadata.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/expected/status_failed.metadata.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/expected/status_xfailed.metadata.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/expected/status_xsucceeded.metadata.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/expected/unittest-no-test-cases.appmap.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/expected/unittest.appmap.json +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/init/sitecustomize.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/simple/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/simple/test_noappmap.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/simple/test_simple.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/helpers.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/normalize.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_command.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_configuration.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_describe_value.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_django.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_django_simplelazyobject.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_env.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_events.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_fastapi.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_flask.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_generation.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_http.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_importer.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_labels.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_metadata.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_params.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_properties.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_recording.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_sqlalchemy.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_test_frameworks.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/test_util.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/test/web_framework.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/testing_framework.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/trace_logger.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/unittest.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/utils.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/web_framework.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/wrapt/LICENSE +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/wrapt/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/wrapt/arguments.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/wrapt/decorators.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/wrapt/importer.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/_appmap/wrapt/wrappers.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/command/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/command/appmap_agent_init.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/command/appmap_agent_status.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/command/appmap_agent_validate.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/django.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/fastapi.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/flask.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/http.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/labeling/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/labeling/crypto.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/labeling/django.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/labeling/flask.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/labeling/formats.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/labeling/http.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/labeling/jobs.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/labeling/jwt.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/labeling/logger.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/labeling/random.yml +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/pytest.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/sqlalchemy.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/unittest.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap/uvicorn.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/appmap.pth +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/vendor/_appmap/wrapt/LICENSE +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/vendor/_appmap/wrapt/__init__.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/vendor/_appmap/wrapt/arguments.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/vendor/_appmap/wrapt/decorators.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/vendor/_appmap/wrapt/importer.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/vendor/_appmap/wrapt/wrappers.py +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/vendor/patches/wrapt.patch +0 -0
- {appmap-3.0.0 → appmap-3.0.1}/vendor/vendor.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: appmap
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.1
|
|
4
4
|
Summary: Create AppMap files by recording a Python application.
|
|
5
5
|
Project-URL: Homepage, https://github.com/applandinc/appmap-python
|
|
6
6
|
Author-email: Alan Potter <alan@app.land>, Viraj Kanwade <viraj.kanwade@forgeahead.io>, Rafał Rzepecki <rafal@app.land>
|
|
@@ -508,5 +508,13 @@ if _startup_messages_shown is None:
|
|
|
508
508
|
logger.info("file: %s", c._file if c.file_present else "[no appmap.yml]")
|
|
509
509
|
logger.info("config: %r", c)
|
|
510
510
|
logger.debug("package_functions: %s", c.package_functions)
|
|
511
|
-
|
|
511
|
+
# Only log AppMap's own settings, never the full environment: arbitrary
|
|
512
|
+
# environment variables (API keys, credentials, tokens, etc.) must never
|
|
513
|
+
# end up in application logs.
|
|
514
|
+
appmap_env = {
|
|
515
|
+
k: v
|
|
516
|
+
for k, v in os.environ.items()
|
|
517
|
+
if k in ("APPMAP", "_APPMAP") or k.startswith(("APPMAP_", "_APPMAP_"))
|
|
518
|
+
}
|
|
519
|
+
logger.info("env: %r", appmap_env)
|
|
512
520
|
os.environ["_APPMAP_MESSAGES_SHOWN"] = "true"
|
|
@@ -168,7 +168,10 @@ class Env(metaclass=SingletonMeta):
|
|
|
168
168
|
trace_logger.install()
|
|
169
169
|
|
|
170
170
|
log_level = self.get("APPMAP_LOG_LEVEL", "warn").upper()
|
|
171
|
-
|
|
171
|
+
# No log file unless the user opts in: it can contain data (e.g.
|
|
172
|
+
# rendered parameter values) that shouldn't be written to disk or
|
|
173
|
+
# committed to source control by default.
|
|
174
|
+
disable_log = os.environ.get("APPMAP_DISABLE_LOG_FILE", "true").upper() != "FALSE"
|
|
172
175
|
log_config = self.get("APPMAP_LOG_CONFIG")
|
|
173
176
|
config_dict = {
|
|
174
177
|
"version": 1,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import os
|
|
1
2
|
import re
|
|
2
3
|
|
|
3
4
|
import pytest
|
|
@@ -37,6 +38,20 @@ def test_runner_multi_recording_type(script_runner, flag, expected):
|
|
|
37
38
|
assert len(re.findall("(?m)^APPMAP_RECORD_PYTEST=true$", result.stdout)) == expected
|
|
38
39
|
|
|
39
40
|
|
|
41
|
+
@pytest.mark.parametrize(
|
|
42
|
+
"flags,expected",
|
|
43
|
+
[
|
|
44
|
+
([], "true"),
|
|
45
|
+
(["--no-enable-log"], "true"),
|
|
46
|
+
(["--enable-log"], "false"),
|
|
47
|
+
],
|
|
48
|
+
)
|
|
49
|
+
def test_runner_log_file_disabled_by_default(script_runner, flags, expected):
|
|
50
|
+
result = script_runner.run(["appmap-python", *flags, "--record", "process"])
|
|
51
|
+
assert result.returncode == 0
|
|
52
|
+
assert re.search(f"(?m)^APPMAP_DISABLE_LOG_FILE={expected}$", result.stdout) is not None
|
|
53
|
+
|
|
54
|
+
|
|
40
55
|
@pytest.mark.script_launch_mode("subprocess")
|
|
41
56
|
class TestEnv:
|
|
42
57
|
def test_appmap_present(self, script_runner):
|
|
@@ -50,3 +65,19 @@ class TestEnv:
|
|
|
50
65
|
)
|
|
51
66
|
assert result.returncode == 0
|
|
52
67
|
assert re.match(r"true", result.stdout) is not None
|
|
68
|
+
|
|
69
|
+
def test_internal_state_not_leaked_to_child(self, script_runner):
|
|
70
|
+
# appmap-python is itself instrumented at interpreter startup (via
|
|
71
|
+
# appmap.pth), which can set internal, process-scoped _APPMAP*
|
|
72
|
+
# markers using whatever it inherited, before this script has
|
|
73
|
+
# computed the environment the child command should actually run
|
|
74
|
+
# with. Simulate that by pre-setting one such marker (the
|
|
75
|
+
# once-per-process "startup messages already shown" guard) and
|
|
76
|
+
# confirm it doesn't leak into the child's environment, which would
|
|
77
|
+
# otherwise silently suppress the child's own startup logging.
|
|
78
|
+
env = {**os.environ, "_APPMAP_MESSAGES_SHOWN": "true"}
|
|
79
|
+
result = script_runner.run(
|
|
80
|
+
["appmap-python", "printenv", "_APPMAP_MESSAGES_SHOWN"], env=env
|
|
81
|
+
)
|
|
82
|
+
assert result.returncode != 0
|
|
83
|
+
assert result.stdout == ""
|
|
@@ -122,7 +122,7 @@ def run():
|
|
|
122
122
|
envvars[f"APPMAP_RECORD_{disabled.upper()}"] = "false"
|
|
123
123
|
|
|
124
124
|
envvars["APPMAP_DISABLE_LOG_FILE"] = (
|
|
125
|
-
"
|
|
125
|
+
"false" if parsed_args.get("enable_log", False) else "true"
|
|
126
126
|
)
|
|
127
127
|
|
|
128
128
|
if len(cmd) == 0:
|
|
@@ -130,7 +130,17 @@ def run():
|
|
|
130
130
|
print(f"{k}={v}")
|
|
131
131
|
sys.exit(0)
|
|
132
132
|
|
|
133
|
-
|
|
133
|
+
# appmap-python is itself instrumented on interpreter startup (via
|
|
134
|
+
# appmap.pth), before this point, using whatever environment it inherited
|
|
135
|
+
# rather than the envvars computed above. That incidental self-init can
|
|
136
|
+
# set internal, process-scoped state under _APPMAP*-prefixed names (e.g.
|
|
137
|
+
# the once-per-process "startup messages already shown" guard); left in
|
|
138
|
+
# place, it would carry over into the child's environment and suppress
|
|
139
|
+
# or corrupt the child's own startup behavior. Drop all of it and let
|
|
140
|
+
# envvars below re-set whatever the child actually needs.
|
|
141
|
+
child_env = {k: v for k, v in os.environ.items() if not k.startswith("_APPMAP")}
|
|
142
|
+
child_env.update(envvars)
|
|
143
|
+
os.execvpe(cmd[0], cmd, child_env)
|
|
134
144
|
|
|
135
145
|
|
|
136
146
|
if __name__ == "__main__":
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/config-exclude/node_modules/node_mod/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest/expected/status_errored.metadata.json
RENAMED
|
File without changes
|
|
File without changes
|
{appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest/expected/status_xfailed.metadata.json
RENAMED
|
File without changes
|
{appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/pytest/expected/status_xsucceeded.metadata.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/trial/expected/pytest-no-test-cases.appmap.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/expected/status_errored.metadata.json
RENAMED
|
File without changes
|
{appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/expected/status_failed.metadata.json
RENAMED
|
File without changes
|
{appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/expected/status_xfailed.metadata.json
RENAMED
|
File without changes
|
{appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/expected/status_xsucceeded.metadata.json
RENAMED
|
File without changes
|
{appmap-3.0.0 → appmap-3.0.1}/_appmap/test/data/unittest/expected/unittest-no-test-cases.appmap.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|