@@ -1903,3 +1903,79 @@ fn dev_extension_matches_provides(
19031903 ExtensionProvides :: DebugAdapters => !manifest. debug_adapters . is_empty ( ) ,
19041904 }
19051905}
1906+
1907+ #[ cfg( test) ]
1908+ mod tests {
1909+ use super :: * ;
1910+ use extension:: SchemaVersion ;
1911+ use std:: path:: PathBuf ;
1912+
1913+ fn empty_manifest ( ) -> ExtensionManifest {
1914+ ExtensionManifest {
1915+ id : "test" . into ( ) ,
1916+ name : "Test" . to_string ( ) ,
1917+ version : "1.0.0" . into ( ) ,
1918+ schema_version : SchemaVersion :: ZERO ,
1919+ description : None ,
1920+ repository : None ,
1921+ authors : vec ! [ ] ,
1922+ lib : Default :: default ( ) ,
1923+ themes : vec ! [ ] ,
1924+ icon_themes : vec ! [ ] ,
1925+ languages : vec ! [ ] ,
1926+ grammars : BTreeMap :: default ( ) ,
1927+ language_servers : BTreeMap :: default ( ) ,
1928+ context_servers : BTreeMap :: default ( ) ,
1929+ agent_servers : BTreeMap :: default ( ) ,
1930+ slash_commands : BTreeMap :: default ( ) ,
1931+ snippets : None ,
1932+ capabilities : vec ! [ ] ,
1933+ debug_adapters : Default :: default ( ) ,
1934+ debug_locators : Default :: default ( ) ,
1935+ language_model_providers : BTreeMap :: default ( ) ,
1936+ }
1937+ }
1938+
1939+ fn dev_extension_visible (
1940+ manifest : & ExtensionManifest ,
1941+ provides_filter : Option < ExtensionProvides > ,
1942+ ) -> bool {
1943+ match provides_filter {
1944+ Some ( provides) => dev_extension_matches_provides ( manifest, provides) ,
1945+ None => true ,
1946+ }
1947+ }
1948+
1949+ #[ test]
1950+ fn test_dev_extension_shown_without_category_filter ( ) {
1951+ let theme_extension = ExtensionManifest {
1952+ themes : vec ! [ PathBuf :: from( "themes/dark.json" ) ] ,
1953+ ..empty_manifest ( )
1954+ } ;
1955+ assert ! ( dev_extension_visible( & theme_extension, None ) ) ;
1956+ }
1957+
1958+ #[ test]
1959+ fn test_dev_extension_hidden_when_category_does_not_match ( ) {
1960+ let theme_extension = ExtensionManifest {
1961+ themes : vec ! [ PathBuf :: from( "themes/dark.json" ) ] ,
1962+ ..empty_manifest ( )
1963+ } ;
1964+ assert ! ( !dev_extension_visible(
1965+ & theme_extension,
1966+ Some ( ExtensionProvides :: Languages ) ,
1967+ ) ) ;
1968+ }
1969+
1970+ #[ test]
1971+ fn test_dev_extension_shown_when_category_matches ( ) {
1972+ let theme_extension = ExtensionManifest {
1973+ themes : vec ! [ PathBuf :: from( "themes/dark.json" ) ] ,
1974+ ..empty_manifest ( )
1975+ } ;
1976+ assert ! ( dev_extension_visible(
1977+ & theme_extension,
1978+ Some ( ExtensionProvides :: Themes ) ,
1979+ ) ) ;
1980+ }
1981+ }
0 commit comments