import {getPredefinedToolchains, mergeToolchainContent} from "../../src/caching/gradle-user-home-utils";
describe('predefined-toolchains', () => {
    const OLD_ENV = process.env
    afterAll(() => {
        process.env = OLD_ENV
    });
    describe('returns', () => {
        it('null if no JAVA_HOME_ envs are set', async () => {
            jest.resetModules()
            process.env = {
                "JAVA_HOME": "/jdks/foo_8"
            }
            const predefinedToolchains = getPredefinedToolchains()
            expect(predefinedToolchains).toBe(null)
        })
        it('valid toolchains.xml if JAVA_HOME_ envs are set', async () => {
            jest.resetModules()
            process.env = {
                "JAVA_HOME": "/jdks/foo_8",
                "JAVA_HOME_8_X64": "/jdks/foo_8",
                "JAVA_HOME_11_X64": "/jdks/foo_11",
                "JAVA_HOME_21_ARM64": "/jdks/foo_21",
            }
            const predefinedToolchains = getPredefinedToolchains()
            expect(predefinedToolchains).toBe(
                // language=XML
`
  
    jdk
    
      8
    
    
      \${env.JAVA_HOME_8_X64}
    
  
  
    jdk
    
      11
    
    
      \${env.JAVA_HOME_11_X64}
    
  
  
    jdk
    
      21
    
    
      \${env.JAVA_HOME_21_ARM64}
    
  
`)
        })
    })
    it("merges with existing toolchains", async () => {
        jest.resetModules()
        process.env = {
            "JAVA_HOME_11_X64": "/jdks/foo_11",
        }
        // language=XML
        const existingToolchains =
            `
  
    jdk
    
      8
    
    
      \${env.JAVA_HOME_8_X64}
    
  
`
        const mergedContent = mergeToolchainContent(existingToolchains, getPredefinedToolchains()!)
        expect(mergedContent).toBe(
            // language=XML
            `
  
    jdk
    
      8
    
    
      \${env.JAVA_HOME_8_X64}
    
  
  
    jdk
    
      11
    
    
      \${env.JAVA_HOME_11_X64}
    
  
`)
    })
})