Skip to content

Commit 9b6c99e

Browse files
authored
Merge pull request DeusData#2230 from yasmoradi/fix/dotnet-xml-extensions
fix(discover): map MSBuild, resx, XAML and app-manifest files to XML
2 parents 5b4be65 + e0becde commit 9b6c99e

2 files changed

Lines changed: 56 additions & 0 deletions

File tree

‎src/discover/language.c‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,28 @@ static const ext_entry_t EXT_TABLE[] = {
321321
{".xsd", CBM_LANG_XML},
322322
{".xsl", CBM_LANG_XML},
323323
{".svg", CBM_LANG_XML},
324+
/* MSBuild project system. Plain XML documents, and the files that carry a
325+
* .NET repository's package references, target frameworks, build hooks and
326+
* project layout — none of which were reachable while these were unmapped. */
327+
{".csproj", CBM_LANG_XML},
328+
{".vbproj", CBM_LANG_XML},
329+
{".fsproj", CBM_LANG_XML},
330+
{".props", CBM_LANG_XML},
331+
{".targets", CBM_LANG_XML},
332+
{".nuspec", CBM_LANG_XML},
333+
{".slnx", CBM_LANG_XML},
334+
{".runsettings", CBM_LANG_XML},
335+
/* .NET resource files: the localized strings a UI reads back by key. */
336+
{".resx", CBM_LANG_XML},
337+
/* XAML views: WPF, WinUI, MAUI (.xaml) and Avalonia (.axaml). */
338+
{".xaml", CBM_LANG_XML},
339+
{".axaml", CBM_LANG_XML},
340+
/* Application manifests: Apple property lists and privacy manifests, Win32
341+
* side-by-side manifests and MSIX packages. */
342+
{".plist", CBM_LANG_XML},
343+
{".xcprivacy", CBM_LANG_XML},
344+
{".manifest", CBM_LANG_XML},
345+
{".appxmanifest", CBM_LANG_XML},
324346

325347
/* YAML */
326348
{".yaml", CBM_LANG_YAML},

‎tests/test_language.c‎

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,36 @@ TEST(lang_ext_svg) {
413413
ASSERT_EQ(cbm_language_for_extension(".svg"), CBM_LANG_XML);
414414
PASS();
415415
}
416+
/* Issue #2229: the XML documents that make up a .NET repository's project
417+
* system were unmapped, so a solution's package references, target frameworks,
418+
* localized strings and app manifests were never indexed or searchable. */
419+
TEST(lang_ext_msbuild_projects) {
420+
ASSERT_EQ(cbm_language_for_extension(".csproj"), CBM_LANG_XML);
421+
ASSERT_EQ(cbm_language_for_extension(".vbproj"), CBM_LANG_XML);
422+
ASSERT_EQ(cbm_language_for_extension(".fsproj"), CBM_LANG_XML);
423+
ASSERT_EQ(cbm_language_for_extension(".props"), CBM_LANG_XML);
424+
ASSERT_EQ(cbm_language_for_extension(".targets"), CBM_LANG_XML);
425+
ASSERT_EQ(cbm_language_for_extension(".nuspec"), CBM_LANG_XML);
426+
ASSERT_EQ(cbm_language_for_extension(".slnx"), CBM_LANG_XML);
427+
ASSERT_EQ(cbm_language_for_extension(".runsettings"), CBM_LANG_XML);
428+
PASS();
429+
}
430+
TEST(lang_ext_resx) {
431+
ASSERT_EQ(cbm_language_for_extension(".resx"), CBM_LANG_XML);
432+
PASS();
433+
}
434+
TEST(lang_ext_xaml) {
435+
ASSERT_EQ(cbm_language_for_extension(".xaml"), CBM_LANG_XML);
436+
ASSERT_EQ(cbm_language_for_extension(".axaml"), CBM_LANG_XML);
437+
PASS();
438+
}
439+
TEST(lang_ext_app_manifests) {
440+
ASSERT_EQ(cbm_language_for_extension(".plist"), CBM_LANG_XML);
441+
ASSERT_EQ(cbm_language_for_extension(".xcprivacy"), CBM_LANG_XML);
442+
ASSERT_EQ(cbm_language_for_extension(".manifest"), CBM_LANG_XML);
443+
ASSERT_EQ(cbm_language_for_extension(".appxmanifest"), CBM_LANG_XML);
444+
PASS();
445+
}
416446
TEST(lang_ext_markdown) {
417447
ASSERT_EQ(cbm_language_for_extension(".md"), CBM_LANG_MARKDOWN);
418448
PASS();
@@ -1361,6 +1391,10 @@ SUITE(language) {
13611391
RUN_TEST(lang_ext_xsl);
13621392
RUN_TEST(lang_ext_xsd);
13631393
RUN_TEST(lang_ext_svg);
1394+
RUN_TEST(lang_ext_msbuild_projects);
1395+
RUN_TEST(lang_ext_resx);
1396+
RUN_TEST(lang_ext_xaml);
1397+
RUN_TEST(lang_ext_app_manifests);
13641398
RUN_TEST(lang_ext_markdown);
13651399
RUN_TEST(lang_ext_mdx);
13661400
RUN_TEST(lang_ext_makefile);

0 commit comments

Comments
 (0)