blob: b9f02c97f54a797a2bfe070d728dc0ef75b6c964 [file] [log] [blame]
<?xml version="1.0" encoding="utf-8"?>
<!--
<copyright file="lux.xsd" company="Outercurve Foundation">
Copyright (c) 2004, Outercurve Foundation.
This software is released under Microsoft Reciprocal License (MS-RL).
The license and further copyright text can be found in the file
LICENSE.TXT at the root directory of the distribution.
</copyright>
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/2009/Lux"
xmlns="http://schemas.microsoft.com/wix/2009/Lux">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Lux Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="Mutation">
<xs:annotation>
<xs:documentation>
Test mutations let you author unit tests with different expected results. The mutation
id is passed as the value of the WIXLUX_RUNNING_MUTATION property. Your custom action,
typically in an '#ifdef DEBUG' block, can retrieve the WIXLUX_RUNNING_MUTATION property
and hard-code different behavior based on the mutation. To author test mutations, use
the Mutation element with UnitTest elements as children.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Child UnitTest elements are validated when the parent mutation is being executed.
</xs:documentation>
</xs:annotation>
<xs:element ref="UnitTest"/>
</xs:choice>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>
Value of the WIXLUX_RUNNING_MUTATION property set by the mutation.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="UnitTest">
<xs:annotation>
<xs:documentation>
Describes a unit test to be executed against a particular custom action, resulting in a
particular property value. Single-value properties, multi-value properties, and
name/value-pair properties can all be tested declaratively.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2009/Lux" ref="Mutation" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Child UnitTest elements are used to test multi-value properties. Note that Property
and ValueDelimiter or NameValueDelimiter must be specified in the parent element.
</xs:documentation>
</xs:annotation>
<xs:element ref="Condition"/>
<xs:element ref="Expression"/>
<xs:element ref="UnitTest"/>
</xs:choice>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>
Identifier of the unit test. If you omit this attribute, a stable identifier is generated for you.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="CustomAction" type="xs:string">
<xs:annotation>
<xs:documentation>
Identifier of the custom action to be tested.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Property" type="xs:string">
<xs:annotation>
<xs:documentation>
Name of the property set by the custom action.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Operator" default="equal">
<xs:annotation>
<xs:documentation>
The operator to apply to the property and value. Default is "equal."
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="equal">
<xs:annotation>
<xs:documentation>
(Default) Compares Property to Value and succeeds if they are equal.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="notEqual">
<xs:annotation>
<xs:documentation>
Compares Property to Value and succeeds if they are NOT equal.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="caseInsensitiveEqual">
<xs:annotation>
<xs:documentation>
Compares Property to Value and succeeds if they are equal (ignoring case).
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="caseInsensitiveNotEqual">
<xs:annotation>
<xs:documentation>
Compares Property to Value and succeeds if they are NOT equal (ignoring case).
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Value" type="xs:string">
<xs:annotation>
<xs:documentation>
The value to compare to the property.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ValueSeparator" type="xs:string">
<xs:annotation>
<xs:documentation>
One character that is used to separate values in a multi-value property.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="NameValueSeparator" type="xs:string">
<xs:annotation>
<xs:documentation>
One character that is used to separate values in a name/value-pair multi-value property.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Index" type="xs:string">
<xs:annotation>
<xs:documentation>
A formatted string that evaluates to either an integer index into a multi-value property or a string name of a name/value-pair multi-value property.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Condition">
<xs:annotation>
<xs:documentation>
Conditions for a unit test.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string" />
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Expression">
<xs:annotation>
<xs:documentation>
An expression that must evaluate to true to succeed. Cannot be specified if Property is specified.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string" />
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="UnitTestRef">
<xs:annotation>
<xs:documentation>
Identifies a unit test to be linked into a project.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Product" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>
Identifier of the unit test to be included.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>