@@ -1818,6 +1818,71 @@ class ConvertActionTests: XCTestCase {
18181818 ] )
18191819 }
18201820
1821+ func testBetaInAvailabilityFallbackPlatforms( ) throws {
1822+
1823+ func generateConvertAction( currentPlatforms: [ String : PlatformVersion ] ) throws -> ConvertAction {
1824+ try ConvertAction (
1825+ documentationBundleURL: bundle. absoluteURL,
1826+ outOfProcessResolver: nil ,
1827+ analyze: false ,
1828+ targetDirectory: targetDirectory,
1829+ htmlTemplateDirectory: Folder . emptyHTMLTemplateDirectory. absoluteURL,
1830+ emitDigest: false ,
1831+ currentPlatforms: currentPlatforms,
1832+ dataProvider: testDataProvider,
1833+ fileManager: testDataProvider,
1834+ temporaryDirectory: testDataProvider. uniqueTemporaryDirectory ( )
1835+ )
1836+ }
1837+ let bundle = Folder ( name: " nested " , content: [
1838+ Folder ( name: " folders " , content: [
1839+ Folder ( name: " unit-test.docc " , content: [
1840+ InfoPlist ( displayName: " TestBundle " , identifier: " com.test.example " ) ,
1841+ ] ) ,
1842+ ] )
1843+ ] )
1844+ let testDataProvider = try TestFileSystem ( folders: [ bundle, Folder . emptyHTMLTemplateDirectory] )
1845+ let targetDirectory = URL ( fileURLWithPath: testDataProvider. currentDirectoryPath)
1846+ . appendingPathComponent ( " target " , isDirectory: true )
1847+
1848+ // Test whether the missing platforms copy the availability information from the fallback platform.
1849+ var action = try generateConvertAction ( currentPlatforms: [ " iOS " : PlatformVersion ( . init( 10 , 0 , 0 ) , beta: true ) ] )
1850+ XCTAssertEqual ( action. context. externalMetadata. currentPlatforms, [
1851+ " iOS " : PlatformVersion ( . init( 10 , 0 , 0 ) , beta: true ) ,
1852+ " Mac Catalyst " : PlatformVersion ( . init( 10 , 0 , 0 ) , beta: true ) ,
1853+ " iPadOS " : PlatformVersion ( . init( 10 , 0 , 0 ) , beta: true ) ,
1854+ ] )
1855+ // Test whether the non-missing platforms don't copy the availability information from the fallback platform.
1856+ action = try generateConvertAction ( currentPlatforms: [
1857+ " iOS " : PlatformVersion ( . init( 10 , 0 , 0 ) , beta: true ) ,
1858+ " Mac Catalyst " : PlatformVersion ( . init( 11 , 0 , 0 ) , beta: false )
1859+ ] )
1860+ XCTAssertEqual ( action. context. externalMetadata. currentPlatforms, [
1861+ " iOS " : PlatformVersion ( . init( 10 , 0 , 0 ) , beta: true ) ,
1862+ " Mac Catalyst " : PlatformVersion ( . init( 11 , 0 , 0 ) , beta: false ) ,
1863+ " iPadOS " : PlatformVersion ( . init( 10 , 0 , 0 ) , beta: true )
1864+ ] )
1865+ action = try generateConvertAction ( currentPlatforms: [
1866+ " iOS " : PlatformVersion ( . init( 10 , 0 , 0 ) , beta: true ) ,
1867+ " Mac Catalyst " : PlatformVersion ( . init( 11 , 0 , 0 ) , beta: true ) ,
1868+ " iPadOS " : PlatformVersion ( . init( 12 , 0 , 0 ) , beta: false ) ,
1869+
1870+ ] )
1871+ XCTAssertEqual ( action. context. externalMetadata. currentPlatforms, [
1872+ " iOS " : PlatformVersion ( . init( 10 , 0 , 0 ) , beta: true ) ,
1873+ " Mac Catalyst " : PlatformVersion ( . init( 11 , 0 , 0 ) , beta: true ) ,
1874+ " iPadOS " : PlatformVersion ( . init( 12 , 0 , 0 ) , beta: false ) ,
1875+ ] )
1876+ // Test whether the non-missing platforms don't copy the availability information from the non-fallback platform.
1877+ action = try generateConvertAction ( currentPlatforms: [
1878+ " tvOS " : PlatformVersion ( . init( 13 , 0 , 0 ) , beta: true )
1879+
1880+ ] )
1881+ XCTAssertEqual ( action. context. externalMetadata. currentPlatforms, [
1882+ " tvOS " : PlatformVersion ( . init( 13 , 0 , 0 ) , beta: true )
1883+ ] )
1884+ }
1885+
18211886 func testResolvedTopicReferencesAreCachedByDefaultWhenConverting( ) throws {
18221887 let bundle = Folder (
18231888 name: " unit-test.docc " ,
0 commit comments