nebius/SWE-rebench-V2-PRs huggingface dataset:
Repository: parroty/excoveralls
Pull request #124 (2017-12-16 16:10:10)

Add branch name to travis


Patch:
diff --git a/lib/excoveralls/travis.ex b/lib/excoveralls/travis.ex
index 0ad74f8..8f2ec6f 100644
--- a/lib/excoveralls/travis.ex
+++ b/lib/excoveralls/travis.ex
@@ -18,14 +18,16 @@ defmodule ExCoveralls.Travis do
       service_job_id: get_job_id(),
       service_name: "travis-pro",
       repo_token: get_repo_token(),
-      source_files: stats
+      source_files: stats,
+      git: generate_git_info()
     ])
   end
   def generate_json(stats, _options) do
     JSX.encode!([
       service_job_id: get_job_id(),
       service_name: "travis-ci",
-      source_files: stats
+      source_files: stats,
+      git: generate_git_info()
     ])
   end
 
@@ -36,4 +38,14 @@ defmodule ExCoveralls.Travis do
   defp get_repo_token do
     System.get_env("COVERALLS_REPO_TOKEN")
   end
+
+  defp get_branch do
+    System.get_env("TRAVIS_BRANCH")
+  end
+
+  defp generate_git_info do
+    [
+      branch: get_branch()
+    ]
+  end
 end


Test patch:
diff --git a/test/travis_test.exs b/test/travis_test.exs
index 39907ba..8207294 100644
--- a/test/travis_test.exs
+++ b/test/travis_test.exs
@@ -21,6 +21,15 @@ defmodule ExCoveralls.TravisTest do
     assert(json =~ ~r/source_files/)
   end
 
+  test "generate from env vars" do
+    System.put_env("TRAVIS_BRANCH", "branch")
+    {:ok, payload} = JSX.decode(Travis.generate_json(@source_info))
+    %{"git" =>
+      %{"branch" => branch}
+    } = payload
+    assert(branch == "branch")
+  end
+
   test "submits as `travis-ci` by default" do
     parsed = Travis.generate_json(@source_info) |> JSX.decode!
     assert(%{ "service_name" => "travis-ci" } = parsed)
Repository: parroty/excoveralls
Pull request #173 (2019-02-21 08:14:58)

Do not fail due to timeout from poster
Small fix for #112 
Might make more sense with an option to control this, but I figured this should be a good default for most cases.


Patch:
diff --git a/lib/excoveralls/poster.ex b/lib/excoveralls/poster.ex
index b60208b..f88ba4c 100644
--- a/lib/excoveralls/poster.ex
+++ b/lib/excoveralls/poster.ex
@@ -51,6 +51,9 @@ defmodule ExCoveralls.Poster do
            body
          })."}
 
+      {:error, :timeout} ->
+        {:ok, "Unable to upload the report to '#{endpoint}' due to a timeout. Not failing the build."}
+
       {:error, reason} ->
         {:error, "Failed to upload the report to '#{endpoint}' (reason: #{reason})."}
     end


Test patch:
diff --git a/test/poster_test.exs b/test/poster_test.exs
index 34c16e8..7e10e54 100644
--- a/test/poster_test.exs
+++ b/test/poster_test.exs
@@ -14,4 +14,10 @@ defmodule PosterTest do
       ExCoveralls.Poster.execute("json")
     end
   end
+
+  test_with_mock "post json timeout", :hackney, [request: fn(_, _, _, _, _) -> {:error, :timeout} end] do
+    assert capture_io(fn ->
+      assert ExCoveralls.Poster.execute("json") == :ok
+    end) =~ ~r/timeout/
+  end
 end
Repository: parroty/excoveralls
Pull request #221 (2020-05-12 16:55:48)

Fix build failure due to `:connect_timeout` from poster
Updated the poster to accept either `:timeout` or `:connect_timeout` as a timeout issue (and therefore don't fail the build) and its corresponding test to also mock that case.


Patch:
diff --git a/lib/excoveralls/poster.ex b/lib/excoveralls/poster.ex
index f88ba4c..c6e6d4e 100644
--- a/lib/excoveralls/poster.ex
+++ b/lib/excoveralls/poster.ex
@@ -51,7 +51,7 @@ defmodule ExCoveralls.Poster do
            body
          })."}
 
-      {:error, :timeout} ->
+      {:error, reason}  when reason in [:timeout, :connect_timeout] ->
         {:ok, "Unable to upload the report to '#{endpoint}' due to a timeout. Not failing the build."}
 
       {:error, reason} ->


Test patch:
diff --git a/test/poster_test.exs b/test/poster_test.exs
index 7e10e54..a5e0791 100644
--- a/test/poster_test.exs
+++ b/test/poster_test.exs
@@ -15,7 +15,8 @@ defmodule PosterTest do
     end
   end
 
-  test_with_mock "post json timeout", :hackney, [request: fn(_, _, _, _, _) -> {:error, :timeout} end] do
+  test_with_mock "post json timeout", :hackney, [request: fn(_, _, _, _, _) -> {:error, :timeout} end,
+                                                 request: fn(_, _, _, _, _) -> {:error, :connect_timeout} end] do
     assert capture_io(fn ->
       assert ExCoveralls.Poster.execute("json") == :ok
     end) =~ ~r/timeout/
Repository: scoutapp/scout_apm_python
Pull request #113 (2018-08-16 18:12:45)

Fix RemoteIp class looking for the wrong keys in the header array
The header dictionary created by WSGI has keys with a prefix of `HTTP_`

But not for REMOTE_ADDR. Since that's not a user-provided value, and
instead generated by the server - it's not a header, but an extra bit of
data that lives with the headers

dlanderson: 👍 

Patch:
diff --git a/src/scout_apm/core/remote_ip.py b/src/scout_apm/core/remote_ip.py
index 3c6ed58..b2428ec 100644
--- a/src/scout_apm/core/remote_ip.py
+++ b/src/scout_apm/core/remote_ip.py
@@ -21,8 +21,8 @@ class RemoteIp:
         remote_addr = cls.ips_from(headers.get("REMOTE_ADDR"))
 
         # Could be a CSV list and/or repeated headers that were concatenated.
-        forwarded_ips = cls.ips_from(headers.get("X-FORWARDED-FOR"))
-        client_ips = cls.ips_from(headers.get("CLIENT_IP"))
+        forwarded_ips = cls.ips_from(headers.get("HTTP_X_FORWARDED_FOR"))
+        client_ips = cls.ips_from(headers.get("HTTP_CLIENT_IP"))
 
         # We assume these things about the IP headers:
         #
@@ -31,7 +31,8 @@ class RemoteIp:
         #   - Client-Ip is propagated from the outermost proxy, or is blank
         #   - REMOTE_ADDR will be the IP that made the request to this server
         #
-        # X-Forwarded-For and Client-Ip shouldn't be set at the same time
+        # X-Forwarded-For and Client-Ip shouldn't be set at the same time, but
+        # if they are, use the one in Forwarded
         ips = forwarded_ips + client_ips + remote_addr
 
         try:


Test patch:
diff --git a/tests/scout_apm_tests/remote_ip_test.py b/tests/scout_apm_tests/remote_ip_test.py
new file mode 100644
index 0000000..3c4ad85
--- /dev/null
+++ b/tests/scout_apm_tests/remote_ip_test.py
@@ -0,0 +1,30 @@
+from scout_apm.core.remote_ip import RemoteIp
+
+def test_no_forwarded_for():
+    ip = RemoteIp.lookup_from_headers({'REMOTE_ADDR': '1.1.1.1'})
+    assert(ip == '1.1.1.1')
+
+
+def test_forwarded_for():
+    ip = RemoteIp.lookup_from_headers({
+        'REMOTE_ADDR': '1.1.1.1',
+        'HTTP_X_FORWARDED_FOR': '2.2.2.2,3.3.3.3',
+        })
+    assert(ip == '2.2.2.2')
+
+
+def test_client_ip():
+    ip = RemoteIp.lookup_from_headers({
+        'REMOTE_ADDR': '1.1.1.1',
+        'HTTP_CLIENT_IP': '2.2.2.2',
+        })
+    assert(ip == '2.2.2.2')
+
+
+def test_forwarded_over_client_ip():
+    ip = RemoteIp.lookup_from_headers({
+        'REMOTE_ADDR': '1.1.1.1',
+        'HTTP_X_FORWARDED_FOR': '2.2.2.2,3.3.3.3',
+        'HTTP_CLIENT_IP': '4.4.4.4',
+        })
+    assert(ip == '2.2.2.2')
Repository: scoutapp/scout_apm_python
Pull request #129 (2018-10-17 17:04:42)

Rename transaction
This matches the Ruby agent's ScoutApm::Transaction.rename call.

This is most useful when an app has a single entry point, then makes business
logic decisions with easily nameable branches. GraphQL for instance has a
single POST endpoint, but immediately branches into different queries and
mutations with clear names.

**NOTE** - This requires a yet-unreleased change to the binary agent, and will
not yet work. A note will be added to this PR when it is fully released


dlanderson: @cschneid Is this supported in core agent yet?
cschneid: It isn't, I'll add it to the list of next version things. Created https://github.com/scoutapp/core-agent/issues/69 to track.
adamchainz: 👍 

Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 97c16b9..ec23296 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,8 @@
   ([PR #251](https://github.com/scoutapp/scout_apm_python/pull/251)).
 - Support timeline trace view
   ([PR #252](https://github.com/scoutapp/scout_apm_python/pull/252)).
+- Add API function `rename_transaction()`
+  ([PR #129](https://github.com/scoutapp/scout_apm_python/pull/129)).
 
 ## [2.4.1] 2019-08-26
 
diff --git a/src/scout_apm/api/__init__.py b/src/scout_apm/api/__init__.py
index 99ecb1a..d5bdf29 100644
--- a/src/scout_apm/api/__init__.py
+++ b/src/scout_apm/api/__init__.py
@@ -125,3 +125,9 @@ class BackgroundTransaction(Transaction):
 
     def __enter__(self):
         Transaction.start("Job", self.name, self.tags)
+
+
+def rename_transaction(name):
+    if name is not None:
+        tr = TrackedRequest.instance()
+        tr.tag("transaction.name", name)


Test patch:
diff --git a/tests/integration/test_api.py b/tests/integration/test_api.py
index c38e021..080662e 100644
--- a/tests/integration/test_api.py
+++ b/tests/integration/test_api.py
@@ -8,6 +8,7 @@ from scout_apm.api import (
     WebTransaction,
     ignore_transaction,
     instrument,
+    rename_transaction,
 )
 
 
@@ -234,3 +235,11 @@ def test_ignore_transaction(tracked_request):
     ignore_transaction()
 
     assert tracked_request.tags["ignore_transaction"]
+
+
+def test_rename_transaction(tracked_request):
+    assert "transaction.name" not in tracked_request.tags
+
+    rename_transaction("Unit Test")
+
+    assert tracked_request.tags["transaction.name"] == "Unit Test"
Repository: scoutapp/scout_apm_python
Pull request #151 (2019-02-11 18:16:45)

Add platform triple to config
In some edge cases, we're not able to automatically detect the host details of python, but we need that information to correctly download the binary component. This allows manual override. So far this has only come up in some Docker + Alpine Linux setups (but not all).


Patch:
diff --git a/src/scout_apm/core/config.py b/src/scout_apm/core/config.py
index 9c6be33..4b741a7 100644
--- a/src/scout_apm/core/config.py
+++ b/src/scout_apm/core/config.py
@@ -189,9 +189,12 @@ class ScoutConfigDerived(object):
         return "{name}-{version}-{triple}".format(
             name="scout_apm_core",
             version=self.config.value("core_agent_version"),
-            triple=PlatformDetection.get_triple(),
+            triple=self.config.value("core_agent_triple"),
         )
 
+    def derive_core_agent_triple(self):
+        return PlatformDetection.get_triple()
+
 
 class ScoutConfigDefaults(object):
     """


Test patch:
diff --git a/tests/integration/core/test_socket.py b/tests/integration/core/test_socket.py
index d76460c..376f2ed 100644
--- a/tests/integration/core/test_socket.py
+++ b/tests/integration/core/test_socket.py
@@ -6,7 +6,7 @@ import pytest
 
 from scout_apm.core.socket import CoreAgentSocket
 
-from .test_core_agent_manager import (  # noqa: F401
+from .test_core_agent_manager import (  # noqa: F401,F811
     core_agent_manager,
     is_running,
     shutdown,
@@ -19,7 +19,7 @@ except ImportError:  # Python 2.7
 
 
 @pytest.fixture  # noqa: F811
-def running_agent(core_agent_manager):
+def running_agent(core_agent_manager):  # noqa: F811
     assert not is_running(core_agent_manager)
     assert core_agent_manager.launch()
     time.sleep(0.01)  # wait for agent to start running
diff --git a/tests/unit/core/test_config.py b/tests/unit/core/test_config.py
index ed0535d..6bf0b70 100644
--- a/tests/unit/core/test_config.py
+++ b/tests/unit/core/test_config.py
@@ -42,6 +42,18 @@ def test_get_derived_config_value():
         ScoutConfig.reset_all()
 
 
+def test_override_triple():
+    ScoutConfig.set(core_agent_triple="unknown-linux-musl")
+    config = ScoutConfig()
+    try:
+        assert re.match(
+            r"scout_apm_core-v.*-unknown-linux-musl",
+            config.value("core_agent_full_name"),
+        )
+    finally:
+        ScoutConfig.reset_all()
+
+
 def test_get_default_config_value():
     config = ScoutConfig()
     assert config.value("core_agent_dir") == "/tmp/scout_apm_core"
Repository: scoutapp/scout_apm_python
Pull request #182 (2019-06-20 14:42:51)

Implement __repr__ on TrackedRequest and Span
Output some partial information on each in order to make test authoring easier.


Patch:
diff --git a/src/scout_apm/core/tracked_request.py b/src/scout_apm/core/tracked_request.py
index e28044f..2175f07 100644
--- a/src/scout_apm/core/tracked_request.py
+++ b/src/scout_apm/core/tracked_request.py
@@ -38,6 +38,12 @@ class TrackedRequest(ThreadLocalSingleton):
         self.callset = NPlusOneCallSet()
         logger.debug("Starting request: %s", self.req_id)
 
+    def __repr__(self):
+        # Incomplete to avoid TMI
+        return "<TrackedRequest(req_id={}, tags={})>".format(
+            repr(self.req_id), repr(self.tags)
+        )
+
     def mark_real_request(self):
         self.real_request = True
 
@@ -133,6 +139,12 @@ class Span(object):
             )
         self.end_objtrace_counts = kwargs.get("end_objtrace_counts", (0, 0, 0, 0))
 
+    def __repr__(self):
+        # Incomplete to avoid TMI
+        return "<Span(span_id={}, operation={}, ignore={}, tags={})>".format(
+            repr(self.span_id), repr(self.operation), repr(self.ignore), repr(self.tags)
+        )
+
     def stop(self):
         self.end_time = datetime.utcnow()
         if objtrace is not None:


Test patch:
diff --git a/tests/unit/core/test_tracked_request.py b/tests/unit/core/test_tracked_request.py
index 487e379..45ce5ad 100644
--- a/tests/unit/core/test_tracked_request.py
+++ b/tests/unit/core/test_tracked_request.py
@@ -22,6 +22,10 @@ def tr():
         request.finish()
 
 
+def test_tracked_request_repr(tr):
+    assert repr(tr).startswith("<TrackedRequest(")
+
+
 def test_tracked_request_instance_is_a_singleton():
     tr1 = TrackedRequest.instance()
     tr2 = TrackedRequest.instance()
@@ -39,7 +43,6 @@ def test_real_request(tr):
 
 
 def test_tag_request(tr):
-
     tr.tag("foo", "bar")
 
     assert len(tr.tags) == 1
@@ -55,6 +58,14 @@ def test_tag_request_overwrite(tr):
     assert tr.tags["foo"] == "baz"
 
 
+def test_span_repr(tr):
+    span = tr.start_span()
+    try:
+        assert repr(span).startswith("<Span(")
+    finally:
+        tr.stop_span()
+
+
 def test_tag_span(tr):
     span = tr.start_span()
     span.tag("foo", "bar")
Repository: scoutapp/scout_apm_python
Pull request #240 (2019-08-27 08:22:06)

Update default socket path
The core agent has used the default socket name `scout-agent.sock` when started solo since version 1.0.0. Python has been starting it with a different socket name, which could lead to multiple agents running on different sockets if multiple languages are used.


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 507a4b4..df0d3ab 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
 # Changelog
 
+## Pending
+
+### Fixed
+
+- Use the same default socket name that the core agent uses when launched alone
+  (`core-agent.sock` -> `scout-agent.sock`)
+  ([PR #240](https://github.com/scoutapp/scout_apm_python/pull/240)).
+
 ## [2.4.1] 2019-08-26
 
 ### Added
diff --git a/src/scout_apm/core/config.py b/src/scout_apm/core/config.py
index 05b939a..22a1570 100644
--- a/src/scout_apm/core/config.py
+++ b/src/scout_apm/core/config.py
@@ -186,7 +186,7 @@ class ScoutConfigDerived(object):
         return getattr(self, func_name, None)
 
     def derive_socket_path(self):
-        return "{}/{}/core-agent.sock".format(
+        return "{}/{}/scout-agent.sock".format(
             self.config.value("core_agent_dir"),
             self.config.value("core_agent_full_name"),
         )


Test patch:
diff --git a/tests/unit/core/test_config.py b/tests/unit/core/test_config.py
index 1119303..6544bf7 100644
--- a/tests/unit/core/test_config.py
+++ b/tests/unit/core/test_config.py
@@ -44,7 +44,7 @@ def test_get_derived_config_value():
             r"-v1\.1\.8"
             r"-(x86_64|i686|unknown)"
             r"-(unknown-linux-gnu|apple-darwin|unknown)"
-            r"/core-agent\.sock",
+            r"/scout-agent\.sock",
             config.value("socket_path"),
         )
     finally:
Repository: scoutapp/scout_apm_python
Pull request #267 (2019-10-09 16:10:25)

Fix Bottle path tagging


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 119e3ee..154f6b5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,11 @@
 
 ## Pending
 
+### Fixed
+
+- Fix Bottle path tagging to use path from URL rather than controller name
+  ([PR #267](https://github.com/scoutapp/scout_apm_python/pull/267)).
+
 ## [2.5.0] 2019-09-17
 
 ### Added
diff --git a/src/scout_apm/bottle.py b/src/scout_apm/bottle.py
index f73f215..60d54ae 100644
--- a/src/scout_apm/bottle.py
+++ b/src/scout_apm/bottle.py
@@ -38,20 +38,20 @@ class ScoutPlugin(object):
             tracked_request = TrackedRequest.instance()
             tracked_request.mark_real_request()
 
-            if request.route.name is not None:
-                path = request.route.name
-            else:
-                path = request.route.rule
-            if path == "/":
-                path = "/home"
-            if not path.startswith("/"):
-                path = "/{}".format(path)
-
+            path = request.path
             tracked_request.tag("path", path)
             if ignore_path(path):
                 tracked_request.tag("ignore_transaction", True)
 
-            tracked_request.start_span(operation="Controller{}".format(path))
+            if request.route.name is not None:
+                controller_name = request.route.name
+            else:
+                controller_name = request.route.rule
+            if controller_name == "/":
+                controller_name = "/home"
+            if not controller_name.startswith("/"):
+                controller_name = "/" + controller_name
+            tracked_request.start_span(operation="Controller{}".format(controller_name))
 
             try:
                 # Determine a remote IP to associate with the request. The


Test patch:
diff --git a/tests/integration/test_bottle.py b/tests/integration/test_bottle.py
index fa9b606..e27f786 100644
--- a/tests/integration/test_bottle.py
+++ b/tests/integration/test_bottle.py
@@ -68,7 +68,7 @@ def test_home(tracked_requests):
     assert response.text == "Welcome home."
     assert len(tracked_requests) == 1
     tracked_request = tracked_requests[0]
-    assert tracked_request.tags["path"] == "/home"
+    assert tracked_request.tags["path"] == "/"
     assert tracked_request.tags["user_ip"] is None
     assert len(tracked_request.complete_spans) == 1
     span = tracked_request.complete_spans[0]
Repository: scoutapp/scout_apm_python
Pull request #288 (2019-10-23 11:32:46)

Improve deprecated log_level warning message
As per #287.


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6f41917..c277c34 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,8 @@
 
 - Fix warning emitted from using deprecated 'warn' method
   ([PR #283](https://github.com/scoutapp/scout_apm_python/pull/283)).
+- Improve warning message for deprecated `log_level` configuration option
+  ([PR #288](https://github.com/scoutapp/scout_apm_python/pull/288)).
 
 ## [2.6.0] 2019-10-22
 
diff --git a/src/scout_apm/core/core_agent_manager.py b/src/scout_apm/core/core_agent_manager.py
index 04e53cd..c760cef 100644
--- a/src/scout_apm/core/core_agent_manager.py
+++ b/src/scout_apm/core/core_agent_manager.py
@@ -91,7 +91,9 @@ class CoreAgentManager(object):
         if log_level is not None:
             logger.warning(
                 "The config name 'log_level' is deprecated - "
-                + "please use the new name 'core_agent_log_level' instead."
+                + "please use the new name 'core_agent_log_level' instead. "
+                + "This might be configured in your environment variables or "
+                + "framework settings as SCOUT_LOG_LEVEL."
             )
         else:
             log_level = AgentContext.instance.config.value("core_agent_log_level")


Test patch:
diff --git a/tests/integration/core/test_core_agent_manager.py b/tests/integration/core/test_core_agent_manager.py
index 1be3430..c95196d 100644
--- a/tests/integration/core/test_core_agent_manager.py
+++ b/tests/integration/core/test_core_agent_manager.py
@@ -161,7 +161,8 @@ def test_log_level_deprecated(caplog, core_agent_manager):
             logging.WARNING,
             (
                 "The config name 'log_level' is deprecated - please use the new name "
-                + "'core_agent_log_level' instead."
+                + "'core_agent_log_level' instead. This might be configured in your "
+                + "environment variables or framework settings as SCOUT_LOG_LEVEL."
             ),
         )
     ]
Repository: scoutapp/scout_apm_python
Pull request #289 (2019-10-23 11:35:05)

Pin to major versions of requirements
This will prevent new releases from breaking us unexpectedly.


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6f41917..c277c34 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,8 @@
 
 - Fix warning emitted from using deprecated 'warn' method
   ([PR #283](https://github.com/scoutapp/scout_apm_python/pull/283)).
+- Improve warning message for deprecated `log_level` configuration option
+  ([PR #288](https://github.com/scoutapp/scout_apm_python/pull/288)).
 
 ## [2.6.0] 2019-10-22
 
diff --git a/setup.py b/setup.py
index a97bedc..66bdbfa 100644
--- a/setup.py
+++ b/setup.py
@@ -51,7 +51,7 @@ setup(
             "core-agent-manager = scout_apm.core.cli.core_agent_manager:main"
         ]
     },
-    install_requires=["psutil", "requests"],
+    install_requires=["psutil>=5,<6", "requests>=2,<3"],
     keywords="apm performance monitoring development",
     classifiers=[
         "Development Status :: 5 - Production/Stable",
diff --git a/src/scout_apm/core/core_agent_manager.py b/src/scout_apm/core/core_agent_manager.py
index 04e53cd..c760cef 100644
--- a/src/scout_apm/core/core_agent_manager.py
+++ b/src/scout_apm/core/core_agent_manager.py
@@ -91,7 +91,9 @@ class CoreAgentManager(object):
         if log_level is not None:
             logger.warning(
                 "The config name 'log_level' is deprecated - "
-                + "please use the new name 'core_agent_log_level' instead."
+                + "please use the new name 'core_agent_log_level' instead. "
+                + "This might be configured in your environment variables or "
+                + "framework settings as SCOUT_LOG_LEVEL."
             )
         else:
             log_level = AgentContext.instance.config.value("core_agent_log_level")


Test patch:
diff --git a/tests/integration/core/test_core_agent_manager.py b/tests/integration/core/test_core_agent_manager.py
index 1be3430..c95196d 100644
--- a/tests/integration/core/test_core_agent_manager.py
+++ b/tests/integration/core/test_core_agent_manager.py
@@ -161,7 +161,8 @@ def test_log_level_deprecated(caplog, core_agent_manager):
             logging.WARNING,
             (
                 "The config name 'log_level' is deprecated - please use the new name "
-                + "'core_agent_log_level' instead."
+                + "'core_agent_log_level' instead. This might be configured in your "
+                + "environment variables or framework settings as SCOUT_LOG_LEVEL."
             ),
         )
     ]