Skip to content

LocalSkillSource.listResources returns backslash-separated paths on Windows聽#1541

Description

@innoprej

馃敶 Required Information

Describe the Bug:

LocalSkillSource.listResources(skillName, resourceDirectory) turns each resource path, relative to the skill directory, into a string with Path.toString(), which uses the platform separator. On Windows it returns assets\file1.txt, while ClassPathSkillSource and InMemorySkillSource return assets/file1.txt for the same skill layout. So the result of SkillSource.listResources depends on both the implementation and the OS, and LocalSkillSourceTest.testListResources fails on Windows.

Steps to Reproduce:

  1. On Windows, check out main (4092a1f).
  2. Run ./mvnw -pl core test -Dtest=LocalSkillSourceTest.
  3. testListResources fails; see the log below.

Expected Behavior:

[assets/file1.txt, assets/subdir/file2.txt]: /-separated paths, as ClassPathSkillSource and InMemorySkillSource return and as the test expects. adk-python keys directory-loaded skill resources the same way since google/adk-python@bc2c97c ("Key directory-loaded skill resources with forward slashes").

Observed Behavior:

[assets\file1.txt, assets\subdir\file2.txt]

Environment Details:

  • ADK Library Version (see maven dependency): main at 4092a1f (1.10.1). The code has not changed since LocalSkillSource was added in 1.3.0.
  • OS: Windows 11
  • TS Version (tsc --version): N/A (Java: Microsoft OpenJDK 17.0.19; Maven 4.0.0-rc-3 via mvnw)

Model Information:

  • Which model is being used: N/A

馃煛 Optional Information

Regression:

No. LocalSkillSource has used Path.toString() here since it was added in 1.3.0.

Logs:

[ERROR] Failures: 
[ERROR]   LocalSkillSourceTest.testListResources:96 value of      : blockingGet()
missing (2)   : assets/file1.txt, assets/subdir/file2.txt
unexpected (2): assets\file1.txt, assets\subdir\file2.txt
---
expected      : [assets/file1.txt, assets/subdir/file2.txt]
but was       : [assets\file1.txt, assets\subdir\file2.txt]
[ERROR] Tests run: 21, Failures: 1, Errors: 0, Skipped: 0

Additional Context:

CI runs only on Ubuntu, where Path.toString() already uses /, so the test passes there. I have a one-line fix ready and will link the PR here.

How often has this issue occurred?:

  • Always (100%) on Windows

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions