# RUN: yaml2obj %p/Inputs/ret42.yaml > %t.obj

# RUN: rm -f %t.exe.manifest
# RUN: lld-link /out:%t.exe /entry:main %t.obj
# RUN: test ! -e %t.exe.manifest

# RUN: lld-link /manifest /out:%t.exe /entry:main %t.obj
# RUN: FileCheck -check-prefix=MANIFEST %s < %t.exe.manifest

MANIFEST: <?xml version="1.0" standalone="yes"?>
MANIFEST: <assembly xmlns="urn:schemas-microsoft-com:asm.v1"
MANIFEST:           manifestVersion="1.0">
MANIFEST:   <trustInfo>
MANIFEST:     <security>
MANIFEST:       <requestedPrivileges>
MANIFEST:          <requestedExecutionLevel level='asInvoker' uiAccess='false'/>
MANIFEST:       </requestedPrivileges>
MANIFEST:     </security>
MANIFEST:   </trustInfo>
MANIFEST: </assembly>

# RUN: lld-link /out:%t.exe /entry:main /manifest \
# RUN:   /manifestuac:"level='requireAdministrator' uiAccess='true'" %t.obj
# RUN: FileCheck -check-prefix=UAC %s < %t.exe.manifest

UAC: <?xml version="1.0" standalone="yes"?>
UAC: <assembly xmlns="urn:schemas-microsoft-com:asm.v1"
UAC:           manifestVersion="1.0">
UAC:   <trustInfo>
UAC:     <security>
UAC:       <requestedPrivileges>
UAC:          <requestedExecutionLevel level='requireAdministrator' uiAccess='true'/>
UAC:       </requestedPrivileges>
UAC:     </security>
UAC:   </trustInfo>
UAC: </assembly>

# /manifestdependency implies /manifest. (/manifestuac doesn't.)
# RUN: lld-link /out:%t.exe /entry:main \
# RUN:   /manifestdependency:"foo='bar'" %t.obj
# RUN: FileCheck -check-prefix=DEPENDENCY %s < %t.exe.manifest

DEPENDENCY: <?xml version="1.0" standalone="yes"?>
DEPENDENCY: <assembly xmlns="urn:schemas-microsoft-com:asm.v1"
DEPENDENCY:           manifestVersion="1.0">
DEPENDENCY:   <trustInfo>
DEPENDENCY:     <security>
DEPENDENCY:       <requestedPrivileges>
DEPENDENCY:          <requestedExecutionLevel level='asInvoker' uiAccess='false'/>
DEPENDENCY:       </requestedPrivileges>
DEPENDENCY:     </security>
DEPENDENCY:   </trustInfo>
DEPENDENCY:   <dependency>
DEPENDENCY:     <dependentAssembly>
DEPENDENCY:       <assemblyIdentity foo='bar' />
DEPENDENCY:     </dependentAssembly>
DEPENDENCY:   </dependency>
DEPENDENCY: </assembly>

# RUN: lld-link /manifest /out:%t.exe /entry:main /manifestuac:no \
# RUN:   /manifestdependency:"foo='bar'" %t.obj
# RUN: FileCheck -check-prefix=NOUAC %s < %t.exe.manifest

NOUAC: <?xml version="1.0" standalone="yes"?>
NOUAC: <assembly xmlns="urn:schemas-microsoft-com:asm.v1"
NOUAC:           manifestVersion="1.0">
NOUAC:   <dependency>
NOUAC:     <dependentAssembly>
NOUAC:       <assemblyIdentity foo='bar' />
NOUAC:     </dependentAssembly>
NOUAC:   </dependency>
NOUAC: </assembly>

# RUN: lld-link /manifest /out:%t.exe /entry:main /manifestuac:no %t.obj
# RUN: FileCheck -check-prefix=NOUACNODEP %s < %t.exe.manifest

NOUACNODEP: <?xml version="1.0" standalone="yes"?>
NOUACNODEP: <assembly xmlns="urn:schemas-microsoft-com:asm.v1"
NOUACNODEP:           manifestVersion="1.0">
NOUACNODEP: </assembly>
