summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNadrieril2020-03-20 11:40:09 +0000
committerNadrieril2020-03-20 12:20:38 +0000
commite28d9e6f2422f47e250304e053238adc458f6a98 (patch)
tree57966906aa7ae365e8bf1feacf2b5e959073006b
parent98b067309388d3f7c692dd82634e776113ea342b (diff)
Commit output of printer
-rw-r--r--dhall/build.rs41
-rw-r--r--dhall/src/tests.rs46
-rw-r--r--dhall/tests/parser/success/annotationsB.txt1
-rw-r--r--dhall/tests/parser/success/blockCommentB.txt1
-rw-r--r--dhall/tests/parser/success/builtinNameAsFieldB.txt1
-rw-r--r--dhall/tests/parser/success/builtinsB.txt1
-rw-r--r--dhall/tests/parser/success/collectionImportTypeB.txt1
-rw-r--r--dhall/tests/parser/success/fieldsB.txt1
-rw-r--r--dhall/tests/parser/success/forallB.txt1
-rw-r--r--dhall/tests/parser/success/functionTypeB.txt1
-rw-r--r--dhall/tests/parser/success/hexadecimalB.txt1
-rw-r--r--dhall/tests/parser/success/identifierB.txt1
-rw-r--r--dhall/tests/parser/success/labelB.txt1
-rw-r--r--dhall/tests/parser/success/lambdaB.txt1
-rw-r--r--dhall/tests/parser/success/leadingSeparatorsB.txt1
-rw-r--r--dhall/tests/parser/success/leadingTabsB.txt1
-rw-r--r--dhall/tests/parser/success/lineCommentB.txt1
-rw-r--r--dhall/tests/parser/success/lineCommentCRLFB.txt1
-rw-r--r--dhall/tests/parser/success/listB.txt1
-rw-r--r--dhall/tests/parser/success/mergeB.txt1
-rw-r--r--dhall/tests/parser/success/missingFooB.txt1
-rw-r--r--dhall/tests/parser/success/missingInParenthesesB.txt1
-rw-r--r--dhall/tests/parser/success/missingSlashB.txt1
-rw-r--r--dhall/tests/parser/success/naturalB.txt1
-rw-r--r--dhall/tests/parser/success/nestedBlockCommentB.txt1
-rw-r--r--dhall/tests/parser/success/operatorsB.txt1
-rw-r--r--dhall/tests/parser/success/preferMissingNoSpacesB.txt1
-rw-r--r--dhall/tests/parser/success/quotedBoundVariableB.txt1
-rw-r--r--dhall/tests/parser/success/quotedLabelB.txt1
-rw-r--r--dhall/tests/parser/success/recordB.txt1
-rw-r--r--dhall/tests/parser/success/recordProjectionByExpressionB.txt1
-rw-r--r--dhall/tests/parser/success/reservedPrefixB.txt1
-rw-r--r--dhall/tests/parser/success/text/dollarSignB.txt1
-rw-r--r--dhall/tests/parser/success/text/doubleQuotedStringB.txt1
-rw-r--r--dhall/tests/parser/success/text/escapeB.txt1
-rw-r--r--dhall/tests/parser/success/text/escapedDoubleQuotedStringB.txt1
-rw-r--r--dhall/tests/parser/success/text/escapedSingleQuotedStringB.txt1
-rw-r--r--dhall/tests/parser/success/text/interestingB.txt1
-rw-r--r--dhall/tests/parser/success/text/interiorIndentB.txt1
-rw-r--r--dhall/tests/parser/success/text/interpolatedDoubleQuotedStringB.txt1
-rw-r--r--dhall/tests/parser/success/text/interpolatedSingleQuotedStringB.txt1
-rw-r--r--dhall/tests/parser/success/text/interpolationB.txt1
-rw-r--r--dhall/tests/parser/success/text/multilineBlankLineB.txt1
-rw-r--r--dhall/tests/parser/success/text/multilineBlankLineCrlfB.txt1
-rw-r--r--dhall/tests/parser/success/text/multilineCorruptedLeadingWhitespaceB.txt1
-rw-r--r--dhall/tests/parser/success/text/multilineIndentedAndAlignedB.txt1
-rw-r--r--dhall/tests/parser/success/text/multilineMismatchedLeadingWhitespaceB.txt1
-rw-r--r--dhall/tests/parser/success/text/multilineTabsB.txt1
-rw-r--r--dhall/tests/parser/success/text/nonAssignedUnicodeB.txt1
-rw-r--r--dhall/tests/parser/success/text/preserveCommentB.txt1
-rw-r--r--dhall/tests/parser/success/text/singleLineB.txt1
-rw-r--r--dhall/tests/parser/success/text/singleQuoteConcatB.txt1
-rw-r--r--dhall/tests/parser/success/text/singleQuotedStringB.txt1
-rw-r--r--dhall/tests/parser/success/text/templateB.txt1
-rw-r--r--dhall/tests/parser/success/text/twoLinesB.txt1
-rw-r--r--dhall/tests/parser/success/text/unicodeDoubleQuotedStringB.txt1
-rw-r--r--dhall/tests/parser/success/toMapB.txt1
-rw-r--r--dhall/tests/parser/success/unicodeCommentB.txt1
-rw-r--r--dhall/tests/parser/success/unit/AnnotationB.txt1
-rw-r--r--dhall/tests/parser/success/unit/AssertB.txt1
-rw-r--r--dhall/tests/parser/success/unit/AssertEquivalenceB.txt1
-rw-r--r--dhall/tests/parser/success/unit/AssertEquivalenceUnicodeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/AssertPrecedenceB.txt1
-rw-r--r--dhall/tests/parser/success/unit/BoolB.txt1
-rw-r--r--dhall/tests/parser/success/unit/BoolLitTrueB.txt1
-rw-r--r--dhall/tests/parser/success/unit/BuiltinListBuildB.txt1
-rw-r--r--dhall/tests/parser/success/unit/CompletionB.txt1
-rw-r--r--dhall/tests/parser/success/unit/DoubleLitExponentB.txt1
-rw-r--r--dhall/tests/parser/success/unit/DoubleLitExponentNegativeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/DoubleLitExponentNoDotB.txt1
-rw-r--r--dhall/tests/parser/success/unit/DoubleLitInfinityB.txt1
-rw-r--r--dhall/tests/parser/success/unit/DoubleLitNaNB.txt1
-rw-r--r--dhall/tests/parser/success/unit/DoubleLitNegInfinityB.txt1
-rw-r--r--dhall/tests/parser/success/unit/DoubleLitNegZeroB.txt1
-rw-r--r--dhall/tests/parser/success/unit/DoubleLitNegativeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/DoubleLitPositiveB.txt1
-rw-r--r--dhall/tests/parser/success/unit/DoubleLitSecretelyIntB.txt1
-rw-r--r--dhall/tests/parser/success/unit/DoubleLitZeroB.txt1
-rw-r--r--dhall/tests/parser/success/unit/EmptyRecordLiteralB.txt1
-rw-r--r--dhall/tests/parser/success/unit/FieldB.txt1
-rw-r--r--dhall/tests/parser/success/unit/FieldBuiltinNameB.txt1
-rw-r--r--dhall/tests/parser/success/unit/FieldQuotedB.txt1
-rw-r--r--dhall/tests/parser/success/unit/ForallB.txt1
-rw-r--r--dhall/tests/parser/success/unit/ForallNestedB.txt1
-rw-r--r--dhall/tests/parser/success/unit/ForallUnderscoreB.txt1
-rw-r--r--dhall/tests/parser/success/unit/FunctionApplicationMultipleArgsB.txt1
-rw-r--r--dhall/tests/parser/success/unit/FunctionApplicationOneArgB.txt1
-rw-r--r--dhall/tests/parser/success/unit/FunctionTypeArrowB.txt1
-rw-r--r--dhall/tests/parser/success/unit/FunctionTypePiB.txt1
-rw-r--r--dhall/tests/parser/success/unit/FunctionTypePiNestedB.txt1
-rw-r--r--dhall/tests/parser/success/unit/FunctionTypePiUnderscoreB.txt1
-rw-r--r--dhall/tests/parser/success/unit/FunctionTypePiUnicodeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/IntegerLitNegativeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/IntegerLitPositiveB.txt1
-rw-r--r--dhall/tests/parser/success/unit/KindB.txt1
-rw-r--r--dhall/tests/parser/success/unit/LambdaB.txt1
-rw-r--r--dhall/tests/parser/success/unit/LambdaNestedB.txt1
-rw-r--r--dhall/tests/parser/success/unit/LambdaUnderscoreB.txt1
-rw-r--r--dhall/tests/parser/success/unit/LambdaUnicodeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/LetAnnotB.txt1
-rw-r--r--dhall/tests/parser/success/unit/LetB.txt1
-rw-r--r--dhall/tests/parser/success/unit/LetMultiB.txt1
-rw-r--r--dhall/tests/parser/success/unit/LetNestedB.txt1
-rw-r--r--dhall/tests/parser/success/unit/LetNoAnnotB.txt1
-rw-r--r--dhall/tests/parser/success/unit/ListLitEmpty1B.txt1
-rw-r--r--dhall/tests/parser/success/unit/ListLitEmpty2B.txt1
-rw-r--r--dhall/tests/parser/success/unit/ListLitEmptyPrecedenceB.txt1
-rw-r--r--dhall/tests/parser/success/unit/ListLitNonEmptyAnnotatedB.txt1
-rw-r--r--dhall/tests/parser/success/unit/ListLitNonEmptyB.txt1
-rw-r--r--dhall/tests/parser/success/unit/MergeAnnotationB.txt1
-rw-r--r--dhall/tests/parser/success/unit/MergeAnnotationPrecedenceB.txt1
-rw-r--r--dhall/tests/parser/success/unit/MergeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/MergeParenAnnotationB.txt1
-rw-r--r--dhall/tests/parser/success/unit/MergeXYZB.txt1
-rw-r--r--dhall/tests/parser/success/unit/NaturalLitB.txt1
-rw-r--r--dhall/tests/parser/success/unit/ProjectionB.txt1
-rw-r--r--dhall/tests/parser/success/unit/QuotedBoolB.txt1
-rw-r--r--dhall/tests/parser/success/unit/QuotedTrueB.txt1
-rw-r--r--dhall/tests/parser/success/unit/QuotedTypeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/QuotedVariableB.txt1
-rw-r--r--dhall/tests/parser/success/unit/RecordFieldAccessB.txt1
-rw-r--r--dhall/tests/parser/success/unit/RecordLitB.txt1
-rw-r--r--dhall/tests/parser/success/unit/RecordLitDottedB.txt1
-rw-r--r--dhall/tests/parser/success/unit/RecordLitDottedEscapeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/RecordLitDuplicatesB.txt1
-rw-r--r--dhall/tests/parser/success/unit/RecordLitNixLikeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/RecordLitPunB.txt1
-rw-r--r--dhall/tests/parser/success/unit/RecordLitPunDuplicateB.txt1
-rw-r--r--dhall/tests/parser/success/unit/RecordLitPunMixedB.txt1
-rw-r--r--dhall/tests/parser/success/unit/RecordLitPunSomeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/RecordLitSomeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/RecordProjectFieldsB.txt1
-rw-r--r--dhall/tests/parser/success/unit/RecordProjectionByTypeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/RecordProjectionByTypeEmptyB.txt1
-rw-r--r--dhall/tests/parser/success/unit/RecordTypeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/SelectionSomeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/SomeXB.txt1
-rw-r--r--dhall/tests/parser/success/unit/SomeXYZB.txt1
-rw-r--r--dhall/tests/parser/success/unit/SortB.txt1
-rw-r--r--dhall/tests/parser/success/unit/ToMapAnnotB.txt1
-rw-r--r--dhall/tests/parser/success/unit/ToMapB.txt1
-rw-r--r--dhall/tests/parser/success/unit/TypeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/UnionTypeEmptyB.txt1
-rw-r--r--dhall/tests/parser/success/unit/UnionTypeSomeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/UnionTypeXB.txt1
-rw-r--r--dhall/tests/parser/success/unit/UnionTypeXTYB.txt1
-rw-r--r--dhall/tests/parser/success/unit/UnionTypeXTYUB.txt1
-rw-r--r--dhall/tests/parser/success/unit/UnionTypeXYB.txt1
-rw-r--r--dhall/tests/parser/success/unit/UnionTypeXYTB.txt1
-rw-r--r--dhall/tests/parser/success/unit/VariableB.txt1
-rw-r--r--dhall/tests/parser/success/unit/VariableQuotedWithSpaceB.txt1
-rw-r--r--dhall/tests/parser/success/unit/VariableUnderscoreB.txt1
-rw-r--r--dhall/tests/parser/success/unit/WithB.txt1
-rw-r--r--dhall/tests/parser/success/unit/WithMultipleB.txt1
-rw-r--r--dhall/tests/parser/success/unit/WithPrecedenceB.txt1
-rw-r--r--dhall/tests/parser/success/unit/ifThenElseB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/AsLocationAbsoluteB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/AsLocationEnvB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/AsLocationHashB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/AsLocationLocalB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/AsLocationMissingB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/AsLocationRemoteB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/HeadersB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/HeadersDoubleHashB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/HeadersDoubleHashPrecedenceB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/HeadersHashPrecedenceB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/HeadersInteriorHashB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/ImportAsNoSpaceB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/MissingB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/asTextB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/environmentVariableBashB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/environmentVariablePosixB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/hashB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/importAltB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/inlineUsingB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/pathAbsoluteB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/pathHereB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/pathHomeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/pathParentB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/pathTerminationLambdaB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/pathTerminationListB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/pathTerminationRecordB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/pathTerminationUnionB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/quotedPathsB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/unicodePathsB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/basicHttpB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/basicHttpsB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/emptyPath0B.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/emptyPath1B.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/emptyPathSegmentB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/emptyQueryB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/escapedPathB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/escapedQueryB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/fragmentParsesAsListAppendB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/ipv4B.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/ipv4upperoctetsB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/ipv6longB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/ipv6mediumB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/ipv6shortB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/ipv6verylongB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/ipv6withipv4B.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/portB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/potPourriB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/quotedPathFakeUrlEncodeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/import/urls/userinfoB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/BoolAndAssocB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/BoolAndB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/BoolEQAssocB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/BoolEQB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/BoolNEAssocB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/BoolNEB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/BoolOrAssocB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/BoolOrB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/EquivalenceB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/ImportAltAssocB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/ImportAltB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/ListAppendAssocB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/ListAppendB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/NaturalPlusAssocB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/NaturalPlusB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/NaturalTimesAssocB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/NaturalTimesB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/PrecedenceBoolB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/PrecedenceNatB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/PrecedenceRecordB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/RecursiveRecordMergeAssocB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/RecursiveRecordMergeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/RecursiveRecordMergeUnicodeAssocB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/RecursiveRecordMergeUnicodeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/RecursiveRecordTypeMergeAssocB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/RecursiveRecordTypeMergeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/RecursiveRecordTypeMergeUnicodeAssocB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/RecursiveRecordTypeMergeUnicodeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/RightBiasedRecordMergeAssocB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/RightBiasedRecordMergeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/RightBiasedRecordMergeUnicodeAssocB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/RightBiasedRecordMergeUnicodeB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/TextAppendAssocB.txt1
-rw-r--r--dhall/tests/parser/success/unit/operators/TextAppendB.txt1
-rw-r--r--dhall/tests/parser/success/usingToMapB.txt1
-rw-r--r--dhall/tests/parser/success/whitespaceB.txt1
-rw-r--r--dhall/tests/parser/success/whitespaceBuffetB.txt1
242 files changed, 289 insertions, 38 deletions
diff --git a/dhall/build.rs b/dhall/build.rs
index c81b302..48d1c88 100644
--- a/dhall/build.rs
+++ b/dhall/build.rs
@@ -94,7 +94,11 @@ fn make_test_module(
) -> std::io::Result<()> {
writeln!(w, "mod {} {{", feature.module_name)?;
let take_ab_suffix = feature.output_type.is_some()
- && feature.output_type != Some(FileType::UI);
+ && (feature.output_type != Some(FileType::UI)
+ || feature.module_name == "printer");
+ let input_suffix = if take_ab_suffix { "A" } else { "" };
+ let output_suffix = if take_ab_suffix { "B" } else { "" };
+
for base_path in base_paths {
let tests_dir = base_path.join(feature.directory);
for (name, path) in
@@ -108,27 +112,34 @@ fn make_test_module(
}
let path = tests_dir.join(path);
let path = path.to_string_lossy();
- let test = match feature.output_type {
- None => {
- let input = feature.input_type.construct(&path);
- format!("{}({})", feature.variant, input)
- }
+
+ let input = feature
+ .input_type
+ .construct(&format!("{}{}", path, input_suffix));
+ let output = match feature.output_type {
+ None => None,
Some(output_type @ FileType::UI) => {
- let input = feature.input_type.construct(&path);
// All ui outputs are in the local `tests/` directory.
- let output_file = PathBuf::from("tests/").join(
+ let path = PathBuf::from("tests/").join(
PathBuf::from(path.as_ref())
.strip_prefix(base_path)
.unwrap(),
);
- let output =
- output_type.construct(&output_file.to_str().unwrap());
- format!("{}({}, {})", feature.variant, input, output)
+ let path = path.to_str().unwrap();
+ let output = output_type
+ .construct(&format!("{}{}", path, output_suffix));
+ Some(output)
}
Some(output_type) => {
- let input =
- feature.input_type.construct(&format!("{}A", path));
- let output = output_type.construct(&format!("{}B", path));
+ let output = output_type
+ .construct(&format!("{}{}", path, output_suffix));
+ Some(output)
+ }
+ };
+
+ let test = match output {
+ None => format!("{}({})", feature.variant, input),
+ Some(output) => {
format!("{}({}, {})", feature.variant, input, output)
}
};
@@ -183,7 +194,7 @@ fn generate_tests() -> std::io::Result<()> {
too_slow_path: Box::new(|path: &str| path == "largeExpression"),
exclude_path: Box::new(|_path: &str| false),
input_type: FileType::Text,
- output_type: Some(FileType::Binary),
+ output_type: Some(FileType::UI),
},
TestFeature {
module_name: "binary_encoding",
diff --git a/dhall/src/tests.rs b/dhall/src/tests.rs
index 369c6cc..d305b98 100644
--- a/dhall/src/tests.rs
+++ b/dhall/src/tests.rs
@@ -3,6 +3,16 @@ use assert_eq as assert_eq_pretty;
#[cfg(test)]
use pretty_assertions::assert_eq as assert_eq_pretty;
+use std::env;
+use std::fmt::Display;
+use std::fs::{create_dir_all, read_to_string, File};
+use std::io::{Read, Write};
+use std::path::PathBuf;
+
+use crate::error::{ErrorKind, Result};
+use crate::syntax::binary;
+use crate::{Normalized, NormalizedExpr, Parsed, Resolved, Typed};
+
macro_rules! assert_eq_display {
($left:expr, $right:expr) => {{
match (&$left, &$right) {
@@ -43,15 +53,6 @@ macro_rules! assert_eq_pretty_str {
};
}
-use std::env;
-use std::fs::{create_dir_all, read_to_string, File};
-use std::io::{Read, Write};
-use std::path::PathBuf;
-
-use crate::error::{Error, ErrorKind, Result};
-use crate::syntax::binary;
-use crate::{Normalized, NormalizedExpr, Parsed, Resolved, Typed};
-
#[allow(dead_code)]
enum Test {
ParserSuccess(TestFile, TestFile),
@@ -127,17 +128,16 @@ impl TestFile {
}
Ok(())
}
- /// Write the provided error to the pointed file.
- fn write_ui(&self, err: impl Into<Error>) -> Result<()> {
+ /// Write the provided string to the pointed file.
+ fn write_ui(&self, x: impl Display) -> Result<()> {
match self {
TestFile::UI(_) => {}
_ => panic!("Can't write an error to a non-UI file"),
}
- let err = err.into();
let path = self.path();
create_dir_all(path.parent().unwrap())?;
let mut file = File::create(path)?;
- writeln!(file, "{}", err)?;
+ writeln!(file, "{}", x)?;
Ok(())
}
@@ -214,19 +214,18 @@ impl TestFile {
}
Ok(())
}
- /// Check that the provided error matches the file contents. Writes to the corresponding file
+ /// Check that the provided string matches the file contents. Writes to the corresponding file
/// if it is missing.
- pub fn compare_ui(&self, err: impl Into<Error>) -> Result<()> {
- let err = err.into();
+ pub fn compare_ui(&self, x: impl Display) -> Result<()> {
if !self.path().is_file() {
- return self.write_ui(err);
+ return self.write_ui(x);
}
let expected = read_to_string(self.path())?;
- let msg = format!("{}\n", err);
+ let msg = format!("{}\n", x);
if msg != expected {
if Self::force_update() {
- self.write_ui(err)?;
+ self.write_ui(x)?;
} else {
assert_eq_pretty_str!(msg, expected);
}
@@ -278,11 +277,12 @@ fn run_test(test: Test) -> Result<()> {
let err = expr.parse().unwrap_err();
expected.compare_ui(err)?;
}
- Printer(expr, _) => {
- let expected = expr.parse()?;
+ Printer(expr, expected) => {
+ let parsed = expr.parse()?;
// Round-trip pretty-printer
- let expr = Parsed::parse_str(&expected.to_string())?;
- assert_eq!(expr, expected);
+ let reparsed = Parsed::parse_str(&parsed.to_string())?;
+ assert_eq!(reparsed, parsed);
+ expected.compare_ui(parsed)?;
}
ImportSuccess(expr, expected) => {
let expr = expr.normalize()?;
diff --git a/dhall/tests/parser/success/annotationsB.txt b/dhall/tests/parser/success/annotationsB.txt
new file mode 100644
index 0000000..e4d2113
--- /dev/null
+++ b/dhall/tests/parser/success/annotationsB.txt
@@ -0,0 +1 @@
+([] : List Natural) # ([1, 2, 3]) # (([1, 2, 3]) : List Natural) : List Natural
diff --git a/dhall/tests/parser/success/blockCommentB.txt b/dhall/tests/parser/success/blockCommentB.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/dhall/tests/parser/success/blockCommentB.txt
@@ -0,0 +1 @@
+1
diff --git a/dhall/tests/parser/success/builtinNameAsFieldB.txt b/dhall/tests/parser/success/builtinNameAsFieldB.txt
new file mode 100644
index 0000000..f767e78
--- /dev/null
+++ b/dhall/tests/parser/success/builtinNameAsFieldB.txt
@@ -0,0 +1 @@
+let Prelude = https://prelude.dhall-lang.org/package.dhall in (Prelude.`List`).map
diff --git a/dhall/tests/parser/success/builtinsB.txt b/dhall/tests/parser/success/builtinsB.txt
new file mode 100644
index 0000000..4e3ed79
--- /dev/null
+++ b/dhall/tests/parser/success/builtinsB.txt
@@ -0,0 +1 @@
+λ(x : { field0 : Bool, field1 : Optional (Optional Bool), field2 : Natural, field3 : Integer, field4 : Double, field5 : Text, field6 : List (List Bool) }) → { field00 = Natural/fold, field01 = Natural/build, field02 = Natural/isZero, field03 = Natural/even, field04 = Natural/odd, field05 = Natural/toInteger, field06 = Natural/show, field07 = Integer/show, field08 = Double/show, field09 = List/build, field10 = List/fold, field11 = List/length, field12 = List/head, field13 = List/last, field14 = List/indexed, field15 = List/reverse, field16 = Optional/fold, field17 = Optional/build, field18 = True, field19 = False, field20 = None }
diff --git a/dhall/tests/parser/success/collectionImportTypeB.txt b/dhall/tests/parser/success/collectionImportTypeB.txt
new file mode 100644
index 0000000..a5c3194
--- /dev/null
+++ b/dhall/tests/parser/success/collectionImportTypeB.txt
@@ -0,0 +1 @@
+{ example0 = None ./"type.dhall", example1 = [] : List ./"type.dhall" }
diff --git a/dhall/tests/parser/success/fieldsB.txt b/dhall/tests/parser/success/fieldsB.txt
new file mode 100644
index 0000000..d091e6d
--- /dev/null
+++ b/dhall/tests/parser/success/fieldsB.txt
@@ -0,0 +1 @@
+(({ foo = { bar = { baz = 1 } } }.foo).bar).baz
diff --git a/dhall/tests/parser/success/forallB.txt b/dhall/tests/parser/success/forallB.txt
new file mode 100644
index 0000000..2c1daac
--- /dev/null
+++ b/dhall/tests/parser/success/forallB.txt
@@ -0,0 +1 @@
+∀(a : Type) → ∀(b : Type) → a
diff --git a/dhall/tests/parser/success/functionTypeB.txt b/dhall/tests/parser/success/functionTypeB.txt
new file mode 100644
index 0000000..f1f33be
--- /dev/null
+++ b/dhall/tests/parser/success/functionTypeB.txt
@@ -0,0 +1 @@
+Bool → Bool → Bool
diff --git a/dhall/tests/parser/success/hexadecimalB.txt b/dhall/tests/parser/success/hexadecimalB.txt
new file mode 100644
index 0000000..40fba62
--- /dev/null
+++ b/dhall/tests/parser/success/hexadecimalB.txt
@@ -0,0 +1 @@
+λ(x : Bool) → λ(x : Bool) → { example0 = 255, example1 = -6672, example2 = x@1 }
diff --git a/dhall/tests/parser/success/identifierB.txt b/dhall/tests/parser/success/identifierB.txt
new file mode 100644
index 0000000..4a4dadc
--- /dev/null
+++ b/dhall/tests/parser/success/identifierB.txt
@@ -0,0 +1 @@
+λ(a : Type) → λ(a : Type) → a@1
diff --git a/dhall/tests/parser/success/labelB.txt b/dhall/tests/parser/success/labelB.txt
new file mode 100644
index 0000000..b82afda
--- /dev/null
+++ b/dhall/tests/parser/success/labelB.txt
@@ -0,0 +1 @@
+let `_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-/` = 1 in `_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-/`
diff --git a/dhall/tests/parser/success/lambdaB.txt b/dhall/tests/parser/success/lambdaB.txt
new file mode 100644
index 0000000..b8cd9b7
--- /dev/null
+++ b/dhall/tests/parser/success/lambdaB.txt
@@ -0,0 +1 @@
+λ(a : Type) → λ(b : Type) → a
diff --git a/dhall/tests/parser/success/leadingSeparatorsB.txt b/dhall/tests/parser/success/leadingSeparatorsB.txt
new file mode 100644
index 0000000..19a1c54
--- /dev/null
+++ b/dhall/tests/parser/success/leadingSeparatorsB.txt
@@ -0,0 +1 @@
+{ emptyList = [] : List Natural, emptyRecordLiteral = {=}, emptyRecordType = {}, emptyUnionType = < >, list = [1, 2], recordLiteral = { x = 1, y = True }, recordType = { x : Natural, y : Bool }, unionType = < x: Natural | y: Bool > }
diff --git a/dhall/tests/parser/success/leadingTabsB.txt b/dhall/tests/parser/success/leadingTabsB.txt
new file mode 100644
index 0000000..a6edaba
--- /dev/null
+++ b/dhall/tests/parser/success/leadingTabsB.txt
@@ -0,0 +1 @@
+"\n"
diff --git a/dhall/tests/parser/success/lineCommentB.txt b/dhall/tests/parser/success/lineCommentB.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/dhall/tests/parser/success/lineCommentB.txt
@@ -0,0 +1 @@
+1
diff --git a/dhall/tests/parser/success/lineCommentCRLFB.txt b/dhall/tests/parser/success/lineCommentCRLFB.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/dhall/tests/parser/success/lineCommentCRLFB.txt
@@ -0,0 +1 @@
+1
diff --git a/dhall/tests/parser/success/listB.txt b/dhall/tests/parser/success/listB.txt
new file mode 100644
index 0000000..f6d50d0
--- /dev/null
+++ b/dhall/tests/parser/success/listB.txt
@@ -0,0 +1 @@
+[[+1, +2, +3], ([+1, +2, +3]) : List Integer, [] : List Integer]
diff --git a/dhall/tests/parser/success/mergeB.txt b/dhall/tests/parser/success/mergeB.txt
new file mode 100644
index 0000000..54051e9
--- /dev/null
+++ b/dhall/tests/parser/success/mergeB.txt
@@ -0,0 +1 @@
+λ(x : < >) → { bar = merge {=} x : Integer, foo = merge { Left = λ(b : Bool) → b, Right = Natural/even } (< Left: Bool | Right: Natural >.Left True) }
diff --git a/dhall/tests/parser/success/missingFooB.txt b/dhall/tests/parser/success/missingFooB.txt
new file mode 100644
index 0000000..6745248
--- /dev/null
+++ b/dhall/tests/parser/success/missingFooB.txt
@@ -0,0 +1 @@
+missingFoo
diff --git a/dhall/tests/parser/success/missingInParenthesesB.txt b/dhall/tests/parser/success/missingInParenthesesB.txt
new file mode 100644
index 0000000..33e45d5
--- /dev/null
+++ b/dhall/tests/parser/success/missingInParenthesesB.txt
@@ -0,0 +1 @@
+missing
diff --git a/dhall/tests/parser/success/missingSlashB.txt b/dhall/tests/parser/success/missingSlashB.txt
new file mode 100644
index 0000000..93c6583
--- /dev/null
+++ b/dhall/tests/parser/success/missingSlashB.txt
@@ -0,0 +1 @@
+`missing/`
diff --git a/dhall/tests/parser/success/naturalB.txt b/dhall/tests/parser/success/naturalB.txt
new file mode 100644
index 0000000..02a6259
--- /dev/null
+++ b/dhall/tests/parser/success/naturalB.txt
@@ -0,0 +1 @@
+[0, 1, 10]
diff --git a/dhall/tests/parser/success/nestedBlockCommentB.txt b/dhall/tests/parser/success/nestedBlockCommentB.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/dhall/tests/parser/success/nestedBlockCommentB.txt
@@ -0,0 +1 @@
+1
diff --git a/dhall/tests/parser/success/operatorsB.txt b/dhall/tests/parser/success/operatorsB.txt
new file mode 100644
index 0000000..31db4ce
--- /dev/null
+++ b/dhall/tests/parser/success/operatorsB.txt
@@ -0,0 +1 @@
+{ foo = False && Natural/even (1 + 2 * 3) || True == False != True } ∧ { bar = (["ABC" ++ "DEF"]) # (["GHI"]) } ⫽ { baz = True } : { baz : Bool, foo : Bool } ⩓ { bar : List Text }
diff --git a/dhall/tests/parser/success/preferMissingNoSpacesB.txt b/dhall/tests/parser/success/preferMissingNoSpacesB.txt
new file mode 100644
index 0000000..15bacd0
--- /dev/null
+++ b/dhall/tests/parser/success/preferMissingNoSpacesB.txt
@@ -0,0 +1 @@
+`missing//foo`
diff --git a/dhall/tests/parser/success/quotedBoundVariableB.txt b/dhall/tests/parser/success/quotedBoundVariableB.txt
new file mode 100644
index 0000000..6f5b7bf
--- /dev/null
+++ b/dhall/tests/parser/success/quotedBoundVariableB.txt
@@ -0,0 +1 @@
+((λ(`Natural/even` : Natural → Bool) → `Natural/even`) Natural/odd) 0
diff --git a/dhall/tests/parser/success/quotedLabelB.txt b/dhall/tests/parser/success/quotedLabelB.txt
new file mode 100644
index 0000000..861ae0b
--- /dev/null
+++ b/dhall/tests/parser/success/quotedLabelB.txt
@@ -0,0 +1 @@
+{ example1 = let `let` = 1 in `let`, example2 = let `:.` = 1 in `:.`, example3 = let `$ref` = 1 in `$ref` }
diff --git a/dhall/tests/parser/success/recordB.txt b/dhall/tests/parser/success/recordB.txt
new file mode 100644
index 0000000..e2c50f9
--- /dev/null
+++ b/dhall/tests/parser/success/recordB.txt
@@ -0,0 +1 @@
+{ bar = 2, baz = True, foo = +1 } : { bar : Natural, baz : Bool, foo : Integer }
diff --git a/dhall/tests/parser/success/recordProjectionByExpressionB.txt b/dhall/tests/parser/success/recordProjectionByExpressionB.txt
new file mode 100644
index 0000000..14af94f
--- /dev/null
+++ b/dhall/tests/parser/success/recordProjectionByExpressionB.txt
@@ -0,0 +1 @@
+let example1 = λ(A : Type) → λ(B : Type) → λ(C : { x : A, y : B }) → C.({ x : A }) : { x : A } in let example2 = λ(A : Type) → λ(B : Type) → λ(C : { p : A, q : B }) → C.(let r = { p : A } in r) : { p : A } in let A = Natural in let B = Text in ((example1 A) B) { x = 10, y = "Text" } ∧ ((example2 A) B) { p = 10, q = "Text" } : { p : A, x : A }
diff --git a/dhall/tests/parser/success/reservedPrefixB.txt b/dhall/tests/parser/success/reservedPrefixB.txt
new file mode 100644
index 0000000..a7b88c6
--- /dev/null
+++ b/dhall/tests/parser/success/reservedPrefixB.txt
@@ -0,0 +1 @@
+let TypeSynonym = Integer in +1 : TypeSynonym
diff --git a/dhall/tests/parser/success/text/dollarSignB.txt b/dhall/tests/parser/success/text/dollarSignB.txt
new file mode 100644
index 0000000..6f9c5da
--- /dev/null
+++ b/dhall/tests/parser/success/text/dollarSignB.txt
@@ -0,0 +1 @@
+"\u0024"
diff --git a/dhall/tests/parser/success/text/doubleQuotedStringB.txt b/dhall/tests/parser/success/text/doubleQuotedStringB.txt
new file mode 100644
index 0000000..8d277c1
--- /dev/null
+++ b/dhall/tests/parser/success/text/doubleQuotedStringB.txt
@@ -0,0 +1 @@
+"ABC"
diff --git a/dhall/tests/parser/success/text/escapeB.txt b/dhall/tests/parser/success/text/escapeB.txt
new file mode 100644
index 0000000..ef58277
--- /dev/null
+++ b/dhall/tests/parser/success/text/escapeB.txt
@@ -0,0 +1 @@
+"\u0024{\n''\n\u0024\n\"\n\\\n"
diff --git a/dhall/tests/parser/success/text/escapedDoubleQuotedStringB.txt b/dhall/tests/parser/success/text/escapedDoubleQuotedStringB.txt
new file mode 100644
index 0000000..afd1433
--- /dev/null
+++ b/dhall/tests/parser/success/text/escapedDoubleQuotedStringB.txt
@@ -0,0 +1 @@
+"\\\"\u0024\\/\b\f\n\r\t𝄞 ∀(a : Type) → a"
diff --git a/dhall/tests/parser/success/text/escapedSingleQuotedStringB.txt b/dhall/tests/parser/success/text/escapedSingleQuotedStringB.txt
new file mode 100644
index 0000000..ff2a15e
--- /dev/null
+++ b/dhall/tests/parser/success/text/escapedSingleQuotedStringB.txt
@@ -0,0 +1 @@
+"\u0024{\n''\n"
diff --git a/dhall/tests/parser/success/text/interestingB.txt b/dhall/tests/parser/success/text/interestingB.txt
new file mode 100644
index 0000000..a8a6cc7
--- /dev/null
+++ b/dhall/tests/parser/success/text/interestingB.txt
@@ -0,0 +1 @@
+λ(x : Text) → "${ x } baz\n bar\n foo\n "
diff --git a/dhall/tests/parser/success/text/interiorIndentB.txt b/dhall/tests/parser/success/text/interiorIndentB.txt
new file mode 100644
index 0000000..fc229a2
--- /dev/null
+++ b/dhall/tests/parser/success/text/interiorIndentB.txt
@@ -0,0 +1 @@
+" foo\n bar\n"
diff --git a/dhall/tests/parser/success/text/interpolatedDoubleQuotedStringB.txt b/dhall/tests/parser/success/text/interpolatedDoubleQuotedStringB.txt
new file mode 100644
index 0000000..42157f4
--- /dev/null
+++ b/dhall/tests/parser/success/text/interpolatedDoubleQuotedStringB.txt
@@ -0,0 +1 @@
+"ABC${ Natural/show 123 }"
diff --git a/dhall/tests/parser/success/text/interpolatedSingleQuotedStringB.txt b/dhall/tests/parser/success/text/interpolatedSingleQuotedStringB.txt
new file mode 100644
index 0000000..b00ed1d
--- /dev/null
+++ b/dhall/tests/parser/success/text/interpolatedSingleQuotedStringB.txt
@@ -0,0 +1 @@
+"ABC\n${ Natural/show 123 }\n"
diff --git a/dhall/tests/parser/success/text/interpolationB.txt b/dhall/tests/parser/success/text/interpolationB.txt
new file mode 100644
index 0000000..0561d8c
--- /dev/null
+++ b/dhall/tests/parser/success/text/interpolationB.txt
@@ -0,0 +1 @@
+"${ Natural/show 1 } foo\n bar\n"
diff --git a/dhall/tests/parser/success/text/multilineBlankLineB.txt b/dhall/tests/parser/success/text/multilineBlankLineB.txt
new file mode 100644
index 0000000..8a8c83f
--- /dev/null
+++ b/dhall/tests/parser/success/text/multilineBlankLineB.txt
@@ -0,0 +1 @@
+"hello\n\nthere\n"
diff --git a/dhall/tests/parser/success/text/multilineBlankLineCrlfB.txt b/dhall/tests/parser/success/text/multilineBlankLineCrlfB.txt
new file mode 100644
index 0000000..8a8c83f
--- /dev/null
+++ b/dhall/tests/parser/success/text/multilineBlankLineCrlfB.txt
@@ -0,0 +1 @@
+"hello\n\nthere\n"
diff --git a/dhall/tests/parser/success/text/multilineCorruptedLeadingWhitespaceB.txt b/dhall/tests/parser/success/text/multilineCorruptedLeadingWhitespaceB.txt
new file mode 100644
index 0000000..ec17d16
--- /dev/null
+++ b/dhall/tests/parser/success/text/multilineCorruptedLeadingWhitespaceB.txt
@@ -0,0 +1 @@
+"\thai\n\tthere\n ok\n\t"
diff --git a/dhall/tests/parser/success/text/multilineIndentedAndAlignedB.txt b/dhall/tests/parser/success/text/multilineIndentedAndAlignedB.txt
new file mode 100644
index 0000000..552c097
--- /dev/null
+++ b/dhall/tests/parser/success/text/multilineIndentedAndAlignedB.txt
@@ -0,0 +1 @@
+"hai\nthere\n"
diff --git a/dhall/tests/parser/success/text/multilineMismatchedLeadingWhitespaceB.txt b/dhall/tests/parser/success/text/multilineMismatchedLeadingWhitespaceB.txt
new file mode 100644
index 0000000..52d4d86
--- /dev/null
+++ b/dhall/tests/parser/success/text/multilineMismatchedLeadingWhitespaceB.txt
@@ -0,0 +1 @@
+"\ta\n b\n"
diff --git a/dhall/tests/parser/success/text/multilineTabsB.txt b/dhall/tests/parser/success/text/multilineTabsB.txt
new file mode 100644
index 0000000..e2e709f
--- /dev/null
+++ b/dhall/tests/parser/success/text/multilineTabsB.txt
@@ -0,0 +1 @@
+"hai\n\tthere\n lol\n"
diff --git a/dhall/tests/parser/success/text/nonAssignedUnicodeB.txt b/dhall/tests/parser/success/text/nonAssignedUnicodeB.txt
new file mode 100644
index 0000000..b699fec
--- /dev/null
+++ b/dhall/tests/parser/success/text/nonAssignedUnicodeB.txt
@@ -0,0 +1 @@
+"🿰"
diff --git a/dhall/tests/parser/success/text/preserveCommentB.txt b/dhall/tests/parser/success/text/preserveCommentB.txt
new file mode 100644
index 0000000..206e992
--- /dev/null
+++ b/dhall/tests/parser/success/text/preserveCommentB.txt
@@ -0,0 +1 @@
+"-- Hello\n{- world -}\n"
diff --git a/dhall/tests/parser/success/text/singleLineB.txt b/dhall/tests/parser/success/text/singleLineB.txt
new file mode 100644
index 0000000..810c96e
--- /dev/null
+++ b/dhall/tests/parser/success/text/singleLineB.txt
@@ -0,0 +1 @@
+"foo"
diff --git a/dhall/tests/parser/success/text/singleQuoteConcatB.txt b/dhall/tests/parser/success/text/singleQuoteConcatB.txt
new file mode 100644
index 0000000..92c0744
--- /dev/null
+++ b/dhall/tests/parser/success/text/singleQuoteConcatB.txt
@@ -0,0 +1 @@
+"a" ++ "b"
diff --git a/dhall/tests/parser/success/text/singleQuotedStringB.txt b/dhall/tests/parser/success/text/singleQuotedStringB.txt
new file mode 100644
index 0000000..457dfd5
--- /dev/null
+++ b/dhall/tests/parser/success/text/singleQuotedStringB.txt
@@ -0,0 +1 @@
+"ABC\nDEF\n"
diff --git a/dhall/tests/parser/success/text/templateB.txt b/dhall/tests/parser/success/text/templateB.txt
new file mode 100644
index 0000000..74303d3
--- /dev/null
+++ b/dhall/tests/parser/success/text/templateB.txt
@@ -0,0 +1 @@
+λ(record : { `in_ca` : Bool, name : Text, `taxed_value` : Double, value : Double }) → "Hello ${ record.name }\nYou have just won ${ Double/show record.value } dollars!\n${ if record.`in_ca` then "Well, ${ Double/show record.`taxed_value` } dollars, after taxes" else "" }\n"
diff --git a/dhall/tests/parser/success/text/twoLinesB.txt b/dhall/tests/parser/success/text/twoLinesB.txt
new file mode 100644
index 0000000..7f8d646
--- /dev/null
+++ b/dhall/tests/parser/success/text/twoLinesB.txt
@@ -0,0 +1 @@
+"foo\nbar"
diff --git a/dhall/tests/parser/success/text/unicodeDoubleQuotedStringB.txt b/dhall/tests/parser/success/text/unicodeDoubleQuotedStringB.txt
new file mode 100644
index 0000000..47131d2
--- /dev/null
+++ b/dhall/tests/parser/success/text/unicodeDoubleQuotedStringB.txt
@@ -0,0 +1 @@
+"∀(a : Type) → a"
diff --git a/dhall/tests/parser/success/toMapB.txt b/dhall/tests/parser/success/toMapB.txt
new file mode 100644
index 0000000..deff18e
--- /dev/null
+++ b/dhall/tests/parser/success/toMapB.txt
@@ -0,0 +1 @@
+toMap { bar = 4, baz = 9, foo = 1 }
diff --git a/dhall/tests/parser/success/unicodeCommentB.txt b/dhall/tests/parser/success/unicodeCommentB.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/dhall/tests/parser/success/unicodeCommentB.txt
@@ -0,0 +1 @@
+1
diff --git a/dhall/tests/parser/success/unit/AnnotationB.txt b/dhall/tests/parser/success/unit/AnnotationB.txt
new file mode 100644
index 0000000..c67799a
--- /dev/null
+++ b/dhall/tests/parser/success/unit/AnnotationB.txt
@@ -0,0 +1 @@
+x : T
diff --git a/dhall/tests/parser/success/unit/AssertB.txt b/dhall/tests/parser/success/unit/AssertB.txt
new file mode 100644
index 0000000..f346a0b
--- /dev/null
+++ b/dhall/tests/parser/success/unit/AssertB.txt
@@ -0,0 +1 @@
+assert : T
diff --git a/dhall/tests/parser/success/unit/AssertEquivalenceB.txt b/dhall/tests/parser/success/unit/AssertEquivalenceB.txt
new file mode 100644
index 0000000..009c2c8
--- /dev/null
+++ b/dhall/tests/parser/success/unit/AssertEquivalenceB.txt
@@ -0,0 +1 @@
+assert : x ≡ y
diff --git a/dhall/tests/parser/success/unit/AssertEquivalenceUnicodeB.txt b/dhall/tests/parser/success/unit/AssertEquivalenceUnicodeB.txt
new file mode 100644
index 0000000..009c2c8
--- /dev/null
+++ b/dhall/tests/parser/success/unit/AssertEquivalenceUnicodeB.txt
@@ -0,0 +1 @@
+assert : x ≡ y
diff --git a/dhall/tests/parser/success/unit/AssertPrecedenceB.txt b/dhall/tests/parser/success/unit/AssertPrecedenceB.txt
new file mode 100644
index 0000000..46738a6
--- /dev/null
+++ b/dhall/tests/parser/success/unit/AssertPrecedenceB.txt
@@ -0,0 +1 @@
+assert : T U
diff --git a/dhall/tests/parser/success/unit/BoolB.txt b/dhall/tests/parser/success/unit/BoolB.txt
new file mode 100644
index 0000000..13b3e87
--- /dev/null
+++ b/dhall/tests/parser/success/unit/BoolB.txt
@@ -0,0 +1 @@
+Bool
diff --git a/dhall/tests/parser/success/unit/BoolLitTrueB.txt b/dhall/tests/parser/success/unit/BoolLitTrueB.txt
new file mode 100644
index 0000000..0ca9514
--- /dev/null
+++ b/dhall/tests/parser/success/unit/BoolLitTrueB.txt
@@ -0,0 +1 @@
+True
diff --git a/dhall/tests/parser/success/unit/BuiltinListBuildB.txt b/dhall/tests/parser/success/unit/BuiltinListBuildB.txt
new file mode 100644
index 0000000..87b5277
--- /dev/null
+++ b/dhall/tests/parser/success/unit/BuiltinListBuildB.txt
@@ -0,0 +1 @@
+`List/Build`
diff --git a/dhall/tests/parser/success/unit/CompletionB.txt b/dhall/tests/parser/success/unit/CompletionB.txt
new file mode 100644
index 0000000..f52ae4c
--- /dev/null
+++ b/dhall/tests/parser/success/unit/CompletionB.txt
@@ -0,0 +1 @@
+T::r
diff --git a/dhall/tests/parser/success/unit/DoubleLitExponentB.txt b/dhall/tests/parser/success/unit/DoubleLitExponentB.txt
new file mode 100644
index 0000000..68a10dd
--- /dev/null
+++ b/dhall/tests/parser/success/unit/DoubleLitExponentB.txt
@@ -0,0 +1 @@
+12300.0
diff --git a/dhall/tests/parser/success/unit/DoubleLitExponentNegativeB.txt b/dhall/tests/parser/success/unit/DoubleLitExponentNegativeB.txt
new file mode 100644
index 0000000..e104763
--- /dev/null
+++ b/dhall/tests/parser/success/unit/DoubleLitExponentNegativeB.txt
@@ -0,0 +1 @@
+0.000123
diff --git a/dhall/tests/parser/success/unit/DoubleLitExponentNoDotB.txt b/dhall/tests/parser/success/unit/DoubleLitExponentNoDotB.txt
new file mode 100644
index 0000000..36c9030
--- /dev/null
+++ b/dhall/tests/parser/success/unit/DoubleLitExponentNoDotB.txt
@@ -0,0 +1 @@
+10000.0
diff --git a/dhall/tests/parser/success/unit/DoubleLitInfinityB.txt b/dhall/tests/parser/success/unit/DoubleLitInfinityB.txt
new file mode 100644
index 0000000..3c62151
--- /dev/null
+++ b/dhall/tests/parser/success/unit/DoubleLitInfinityB.txt
@@ -0,0 +1 @@
+Infinity
diff --git a/dhall/tests/parser/success/unit/DoubleLitNaNB.txt b/dhall/tests/parser/success/unit/DoubleLitNaNB.txt
new file mode 100644
index 0000000..736991a
--- /dev/null
+++ b/dhall/tests/parser/success/unit/DoubleLitNaNB.txt
@@ -0,0 +1 @@
+NaN
diff --git a/dhall/tests/parser/success/unit/DoubleLitNegInfinityB.txt b/dhall/tests/parser/success/unit/DoubleLitNegInfinityB.txt
new file mode 100644
index 0000000..879e80e
--- /dev/null
+++ b/dhall/tests/parser/success/unit/DoubleLitNegInfinityB.txt
@@ -0,0 +1 @@
+-Infinity
diff --git a/dhall/tests/parser/success/unit/DoubleLitNegZeroB.txt b/dhall/tests/parser/success/unit/DoubleLitNegZeroB.txt
new file mode 100644
index 0000000..1344bfd
--- /dev/null
+++ b/dhall/tests/parser/success/unit/DoubleLitNegZeroB.txt
@@ -0,0 +1 @@
+-0.0
diff --git a/dhall/tests/parser/success/unit/DoubleLitNegativeB.txt b/dhall/tests/parser/success/unit/DoubleLitNegativeB.txt
new file mode 100644
index 0000000..ff32220
--- /dev/null
+++ b/dhall/tests/parser/success/unit/DoubleLitNegativeB.txt
@@ -0,0 +1 @@
+-1.23
diff --git a/dhall/tests/parser/success/unit/DoubleLitPositiveB.txt b/dhall/tests/parser/success/unit/DoubleLitPositiveB.txt
new file mode 100644
index 0000000..a1b6e17
--- /dev/null
+++ b/dhall/tests/parser/success/unit/DoubleLitPositiveB.txt
@@ -0,0 +1 @@
+1.23
diff --git a/dhall/tests/parser/success/unit/DoubleLitSecretelyIntB.txt b/dhall/tests/parser/success/unit/DoubleLitSecretelyIntB.txt
new file mode 100644
index 0000000..d3827e7
--- /dev/null
+++ b/dhall/tests/parser/success/unit/DoubleLitSecretelyIntB.txt
@@ -0,0 +1 @@
+1.0
diff --git a/dhall/tests/parser/success/unit/DoubleLitZeroB.txt b/dhall/tests/parser/success/unit/DoubleLitZeroB.txt
new file mode 100644
index 0000000..ba66466
--- /dev/null
+++ b/dhall/tests/parser/success/unit/DoubleLitZeroB.txt
@@ -0,0 +1 @@
+0.0
diff --git a/dhall/tests/parser/success/unit/EmptyRecordLiteralB.txt b/dhall/tests/parser/success/unit/EmptyRecordLiteralB.txt
new file mode 100644
index 0000000..339130f
--- /dev/null
+++ b/dhall/tests/parser/success/unit/EmptyRecordLiteralB.txt
@@ -0,0 +1 @@
+{=}
diff --git a/dhall/tests/parser/success/unit/FieldB.txt b/dhall/tests/parser/success/unit/FieldB.txt
new file mode 100644
index 0000000..48c5f00
--- /dev/null
+++ b/dhall/tests/parser/success/unit/FieldB.txt
@@ -0,0 +1 @@
+r.x
diff --git a/dhall/tests/parser/success/unit/FieldBuiltinNameB.txt b/dhall/tests/parser/success/unit/FieldBuiltinNameB.txt
new file mode 100644
index 0000000..39c8102
--- /dev/null
+++ b/dhall/tests/parser/success/unit/FieldBuiltinNameB.txt
@@ -0,0 +1 @@
+r.`List`
diff --git a/dhall/tests/parser/success/unit/FieldQuotedB.txt b/dhall/tests/parser/success/unit/FieldQuotedB.txt
new file mode 100644
index 0000000..48c5f00
--- /dev/null
+++ b/dhall/tests/parser/success/unit/FieldQuotedB.txt
@@ -0,0 +1 @@
+r.x
diff --git a/dhall/tests/parser/success/unit/ForallB.txt b/dhall/tests/parser/success/unit/ForallB.txt
new file mode 100644
index 0000000..073e303
--- /dev/null
+++ b/dhall/tests/parser/success/unit/ForallB.txt
@@ -0,0 +1 @@
+∀(x : T) → x
diff --git a/dhall/tests/parser/success/unit/ForallNestedB.txt b/dhall/tests/parser/success/unit/ForallNestedB.txt
new file mode 100644
index 0000000..58b9390
--- /dev/null
+++ b/dhall/tests/parser/success/unit/ForallNestedB.txt
@@ -0,0 +1 @@
+∀(x : T) → ∀(y : U) → x
diff --git a/dhall/tests/parser/success/unit/ForallUnderscoreB.txt b/dhall/tests/parser/success/unit/ForallUnderscoreB.txt
new file mode 100644
index 0000000..764eb4e
--- /dev/null
+++ b/dhall/tests/parser/success/unit/ForallUnderscoreB.txt
@@ -0,0 +1 @@
+T → x
diff --git a/dhall/tests/parser/success/unit/FunctionApplicationMultipleArgsB.txt b/dhall/tests/parser/success/unit/FunctionApplicationMultipleArgsB.txt
new file mode 100644
index 0000000..a1b1c55
--- /dev/null
+++ b/dhall/tests/parser/success/unit/FunctionApplicationMultipleArgsB.txt
@@ -0,0 +1 @@
+((f x) y) z
diff --git a/dhall/tests/parser/success/unit/FunctionApplicationOneArgB.txt b/dhall/tests/parser/success/unit/FunctionApplicationOneArgB.txt
new file mode 100644
index 0000000..2137704
--- /dev/null
+++ b/dhall/tests/parser/success/unit/FunctionApplicationOneArgB.txt
@@ -0,0 +1 @@
+f x
diff --git a/dhall/tests/parser/success/unit/FunctionTypeArrowB.txt b/dhall/tests/parser/success/unit/FunctionTypeArrowB.txt
new file mode 100644
index 0000000..13d9d04
--- /dev/null
+++ b/dhall/tests/parser/success/unit/FunctionTypeArrowB.txt
@@ -0,0 +1 @@
+T → U
diff --git a/dhall/tests/parser/success/unit/FunctionTypePiB.txt b/dhall/tests/parser/success/unit/FunctionTypePiB.txt
new file mode 100644
index 0000000..52d23ff
--- /dev/null
+++ b/dhall/tests/parser/success/unit/FunctionTypePiB.txt
@@ -0,0 +1 @@
+∀(x : T) → U
diff --git a/dhall/tests/parser/success/unit/FunctionTypePiNestedB.txt b/dhall/tests/parser/success/unit/FunctionTypePiNestedB.txt
new file mode 100644
index 0000000..0f22d2d
--- /dev/null
+++ b/dhall/tests/parser/success/unit/FunctionTypePiNestedB.txt
@@ -0,0 +1 @@
+∀(x : T) → ∀(y : U) → V
diff --git a/dhall/tests/parser/success/unit/FunctionTypePiUnderscoreB.txt b/dhall/tests/parser/success/unit/FunctionTypePiUnderscoreB.txt
new file mode 100644
index 0000000..13d9d04
--- /dev/null
+++ b/dhall/tests/parser/success/unit/FunctionTypePiUnderscoreB.txt
@@ -0,0 +1 @@
+T → U
diff --git a/dhall/tests/parser/success/unit/FunctionTypePiUnicodeB.txt b/dhall/tests/parser/success/unit/FunctionTypePiUnicodeB.txt
new file mode 100644
index 0000000..52d23ff
--- /dev/null
+++ b/dhall/tests/parser/success/unit/FunctionTypePiUnicodeB.txt
@@ -0,0 +1 @@
+∀(x : T) → U
diff --git a/dhall/tests/parser/success/unit/IntegerLitNegativeB.txt b/dhall/tests/parser/success/unit/IntegerLitNegativeB.txt
new file mode 100644
index 0000000..2916703
--- /dev/null
+++ b/dhall/tests/parser/success/unit/IntegerLitNegativeB.txt
@@ -0,0 +1 @@
+-10
diff --git a/dhall/tests/parser/success/unit/IntegerLitPositiveB.txt b/dhall/tests/parser/success/unit/IntegerLitPositiveB.txt
new file mode 100644
index 0000000..d223932
--- /dev/null
+++ b/dhall/tests/parser/success/unit/IntegerLitPositiveB.txt
@@ -0,0 +1 @@
++10
diff --git a/dhall/tests/parser/success/unit/KindB.txt b/dhall/tests/parser/success/unit/KindB.txt
new file mode 100644
index 0000000..894beeb
--- /dev/null
+++ b/dhall/tests/parser/success/unit/KindB.txt
@@ -0,0 +1 @@
+Kind
diff --git a/dhall/tests/parser/success/unit/LambdaB.txt b/dhall/tests/parser/success/unit/LambdaB.txt
new file mode 100644
index 0000000..07caabf
--- /dev/null
+++ b/dhall/tests/parser/success/unit/LambdaB.txt
@@ -0,0 +1 @@
+λ(x : T) → x
diff --git a/dhall/tests/parser/success/unit/LambdaNestedB.txt b/dhall/tests/parser/success/unit/LambdaNestedB.txt
new file mode 100644
index 0000000..1e487c5
--- /dev/null
+++ b/dhall/tests/parser/success/unit/LambdaNestedB.txt
@@ -0,0 +1 @@
+λ(x : T) → λ(y : U) → x
diff --git a/dhall/tests/parser/success/unit/LambdaUnderscoreB.txt b/dhall/tests/parser/success/unit/LambdaUnderscoreB.txt
new file mode 100644
index 0000000..10000d0
--- /dev/null
+++ b/dhall/tests/parser/success/unit/LambdaUnderscoreB.txt
@@ -0,0 +1 @@
+λ(`_` : T) → x
diff --git a/dhall/tests/parser/success/unit/LambdaUnicodeB.txt b/dhall/tests/parser/success/unit/LambdaUnicodeB.txt
new file mode 100644
index 0000000..506becf
--- /dev/null
+++ b/dhall/tests/parser/success/unit/LambdaUnicodeB.txt
@@ -0,0 +1 @@
+λ(x : T) → y
diff --git a/dhall/tests/parser/success/unit/LetAnnotB.txt b/dhall/tests/parser/success/unit/LetAnnotB.txt
new file mode 100644
index 0000000..872ac5f
--- /dev/null
+++ b/dhall/tests/parser/success/unit/LetAnnotB.txt
@@ -0,0 +1 @@
+let x : T = y in e
diff --git a/dhall/tests/parser/success/unit/LetB.txt b/dhall/tests/parser/success/unit/LetB.txt
new file mode 100644
index 0000000..899a370
--- /dev/null
+++ b/dhall/tests/parser/success/unit/LetB.txt
@@ -0,0 +1 @@
+let x : T = v in e
diff --git a/dhall/tests/parser/success/unit/LetMultiB.txt b/dhall/tests/parser/success/unit/LetMultiB.txt
new file mode 100644
index 0000000..3770087
--- /dev/null
+++ b/dhall/tests/parser/success/unit/LetMultiB.txt
@@ -0,0 +1 @@
+let x : T = v in let y : U = w in e
diff --git a/dhall/tests/parser/success/unit/LetNestedB.txt b/dhall/tests/parser/success/unit/LetNestedB.txt
new file mode 100644
index 0000000..3770087
--- /dev/null
+++ b/dhall/tests/parser/success/unit/LetNestedB.txt
@@ -0,0 +1 @@
+let x : T = v in let y : U = w in e
diff --git a/dhall/tests/parser/success/unit/LetNoAnnotB.txt b/dhall/tests/parser/success/unit/LetNoAnnotB.txt
new file mode 100644
index 0000000..64d30e6
--- /dev/null
+++ b/dhall/tests/parser/success/unit/LetNoAnnotB.txt
@@ -0,0 +1 @@
+let x = y in e
diff --git a/dhall/tests/parser/success/unit/ListLitEmpty1B.txt b/dhall/tests/parser/success/unit/ListLitEmpty1B.txt
new file mode 100644
index 0000000..cbd438b
--- /dev/null
+++ b/dhall/tests/parser/success/unit/ListLitEmpty1B.txt
@@ -0,0 +1 @@
+[] : List T
diff --git a/dhall/tests/parser/success/unit/ListLitEmpty2B.txt b/dhall/tests/parser/success/unit/ListLitEmpty2B.txt
new file mode 100644
index 0000000..292df74
--- /dev/null
+++ b/dhall/tests/parser/success/unit/ListLitEmpty2B.txt
@@ -0,0 +1 @@
+[] : T
diff --git a/dhall/tests/parser/success/unit/ListLitEmptyPrecedenceB.txt b/dhall/tests/parser/success/unit/ListLitEmptyPrecedenceB.txt
new file mode 100644
index 0000000..604143e
--- /dev/null
+++ b/dhall/tests/parser/success/unit/ListLitEmptyPrecedenceB.txt
@@ -0,0 +1 @@
+[] : (List T) U
diff --git a/dhall/tests/parser/success/unit/ListLitNonEmptyAnnotatedB.txt b/dhall/tests/parser/success/unit/ListLitNonEmptyAnnotatedB.txt
new file mode 100644
index 0000000..5144935
--- /dev/null
+++ b/dhall/tests/parser/success/unit/ListLitNonEmptyAnnotatedB.txt
@@ -0,0 +1 @@
+([x, y]) : List T
diff --git a/dhall/tests/parser/success/unit/ListLitNonEmptyB.txt b/dhall/tests/parser/success/unit/ListLitNonEmptyB.txt
new file mode 100644
index 0000000..5ed6f26
--- /dev/null
+++ b/dhall/tests/parser/success/unit/ListLitNonEmptyB.txt
@@ -0,0 +1 @@
+[x, y]
diff --git a/dhall/tests/parser/success/unit/MergeAnnotationB.txt b/dhall/tests/parser/success/unit/MergeAnnotationB.txt
new file mode 100644
index 0000000..ac2f7cc
--- /dev/null
+++ b/dhall/tests/parser/success/unit/MergeAnnotationB.txt
@@ -0,0 +1 @@
+merge x y : t
diff --git a/dhall/tests/parser/success/unit/MergeAnnotationPrecedenceB.txt b/dhall/tests/parser/success/unit/MergeAnnotationPrecedenceB.txt
new file mode 100644
index 0000000..ee40b5e
--- /dev/null
+++ b/dhall/tests/parser/success/unit/MergeAnnotationPrecedenceB.txt
@@ -0,0 +1 @@
+merge x y : t a
diff --git a/dhall/tests/parser/success/unit/MergeB.txt b/dhall/tests/parser/success/unit/MergeB.txt
new file mode 100644
index 0000000..2943f26
--- /dev/null
+++ b/dhall/tests/parser/success/unit/MergeB.txt
@@ -0,0 +1 @@
+merge x y
diff --git a/dhall/tests/parser/success/unit/MergeParenAnnotationB.txt b/dhall/tests/parser/success/unit/MergeParenAnnotationB.txt
new file mode 100644
index 0000000..77b6e1a
--- /dev/null
+++ b/dhall/tests/parser/success/unit/MergeParenAnnotationB.txt
@@ -0,0 +1 @@
+(merge x y) : t
diff --git a/dhall/tests/parser/success/unit/MergeXYZB.txt b/dhall/tests/parser/success/unit/MergeXYZB.txt
new file mode 100644
index 0000000..7e83a09
--- /dev/null
+++ b/dhall/tests/parser/success/unit/MergeXYZB.txt
@@ -0,0 +1 @@
+(merge x y) z
diff --git a/dhall/tests/parser/success/unit/NaturalLitB.txt b/dhall/tests/parser/success/unit/NaturalLitB.txt
new file mode 100644
index 0000000..d81cc07
--- /dev/null
+++ b/dhall/tests/parser/success/unit/NaturalLitB.txt
@@ -0,0 +1 @@
+42
diff --git a/dhall/tests/parser/success/unit/ProjectionB.txt b/dhall/tests/parser/success/unit/ProjectionB.txt
new file mode 100644
index 0000000..ea86639
--- /dev/null
+++ b/dhall/tests/parser/success/unit/ProjectionB.txt
@@ -0,0 +1 @@
+r.{ x, y, z }
diff --git a/dhall/tests/parser/success/unit/QuotedBoolB.txt b/dhall/tests/parser/success/unit/QuotedBoolB.txt
new file mode 100644
index 0000000..beee805
--- /dev/null
+++ b/dhall/tests/parser/success/unit/QuotedBoolB.txt
@@ -0,0 +1 @@
+`Bool`
diff --git a/dhall/tests/parser/success/unit/QuotedTrueB.txt b/dhall/tests/parser/success/unit/QuotedTrueB.txt
new file mode 100644
index 0000000..53ae81b
--- /dev/null
+++ b/dhall/tests/parser/success/unit/QuotedTrueB.txt
@@ -0,0 +1 @@
+`True`
diff --git a/dhall/tests/parser/success/unit/QuotedTypeB.txt b/dhall/tests/parser/success/unit/QuotedTypeB.txt
new file mode 100644
index 0000000..fdc8936
--- /dev/null
+++ b/dhall/tests/parser/success/unit/QuotedTypeB.txt
@@ -0,0 +1 @@
+`Type`
diff --git a/dhall/tests/parser/success/unit/QuotedVariableB.txt b/dhall/tests/parser/success/unit/QuotedVariableB.txt
new file mode 100644
index 0000000..a454cf2
--- /dev/null
+++ b/dhall/tests/parser/success/unit/QuotedVariableB.txt
@@ -0,0 +1 @@
+`x+y`
diff --git a/dhall/tests/parser/success/unit/RecordFieldAccessB.txt b/dhall/tests/parser/success/unit/RecordFieldAccessB.txt
new file mode 100644
index 0000000..48c5f00
--- /dev/null
+++ b/dhall/tests/parser/success/unit/RecordFieldAccessB.txt
@@ -0,0 +1 @@
+r.x
diff --git a/dhall/tests/parser/success/unit/RecordLitB.txt b/dhall/tests/parser/success/unit/RecordLitB.txt
new file mode 100644
index 0000000..ea810e1
--- /dev/null
+++ b/dhall/tests/parser/success/unit/RecordLitB.txt
@@ -0,0 +1 @@
+{ x = 1, y = 2 }
diff --git a/dhall/tests/parser/success/unit/RecordLitDottedB.txt b/dhall/tests/parser/success/unit/RecordLitDottedB.txt
new file mode 100644
index 0000000..92b1e38
--- /dev/null
+++ b/dhall/tests/parser/success/unit/RecordLitDottedB.txt
@@ -0,0 +1 @@
+{ x = { y = { z = 1 } } }
diff --git a/dhall/tests/parser/success/unit/RecordLitDottedEscapeB.txt b/dhall/tests/parser/success/unit/RecordLitDottedEscapeB.txt
new file mode 100644
index 0000000..8b78d94
--- /dev/null
+++ b/dhall/tests/parser/success/unit/RecordLitDottedEscapeB.txt
@@ -0,0 +1 @@
+{ `x.y` = { z = 1 } }
diff --git a/dhall/tests/parser/success/unit/RecordLitDuplicatesB.txt b/dhall/tests/parser/success/unit/RecordLitDuplicatesB.txt
new file mode 100644
index 0000000..713289f
--- /dev/null
+++ b/dhall/tests/parser/success/unit/RecordLitDuplicatesB.txt
@@ -0,0 +1 @@
+{ x = { y = 1 } ∧ { z = 1 } }
diff --git a/dhall/tests/parser/success/unit/RecordLitNixLikeB.txt b/dhall/tests/parser/success/unit/RecordLitNixLikeB.txt
new file mode 100644
index 0000000..a7d6ca7
--- /dev/null
+++ b/dhall/tests/parser/success/unit/RecordLitNixLikeB.txt
@@ -0,0 +1 @@
+{ x = { y = 1 } ∧ { z = True } }
diff --git a/dhall/tests/parser/success/unit/RecordLitPunB.txt b/dhall/tests/parser/success/unit/RecordLitPunB.txt
new file mode 100644
index 0000000..98b64f7
--- /dev/null
+++ b/dhall/tests/parser/success/unit/RecordLitPunB.txt
@@ -0,0 +1 @@
+{ x = x, y = y, z = z }
diff --git a/dhall/tests/parser/success/unit/RecordLitPunDuplicateB.txt b/dhall/tests/parser/success/unit/RecordLitPunDuplicateB.txt
new file mode 100644
index 0000000..39fe799
--- /dev/null
+++ b/dhall/tests/parser/success/unit/RecordLitPunDuplicateB.txt
@@ -0,0 +1 @@
+{ x = x ∧ x, y = y }
diff --git a/dhall/tests/parser/success/unit/RecordLitPunMixedB.txt b/dhall/tests/parser/success/unit/RecordLitPunMixedB.txt
new file mode 100644
index 0000000..f2b5f37
--- /dev/null
+++ b/dhall/tests/parser/success/unit/RecordLitPunMixedB.txt
@@ -0,0 +1 @@
+{ w = { a = { b = 2 } }, x = x, y = 1, z = z }
diff --git a/dhall/tests/parser/success/unit/RecordLitPunSomeB.txt b/dhall/tests/parser/success/unit/RecordLitPunSomeB.txt
new file mode 100644
index 0000000..6d0e52f
--- /dev/null
+++ b/dhall/tests/parser/success/unit/RecordLitPunSomeB.txt
@@ -0,0 +1 @@
+{ `Some` = `Some` }
diff --git a/dhall/tests/parser/success/unit/RecordLitSomeB.txt b/dhall/tests/parser/success/unit/RecordLitSomeB.txt
new file mode 100644
index 0000000..fc3f65b
--- /dev/null
+++ b/dhall/tests/parser/success/unit/RecordLitSomeB.txt
@@ -0,0 +1 @@
+{ `Some` = 0 }
diff --git a/dhall/tests/parser/success/unit/RecordProjectFieldsB.txt b/dhall/tests/parser/success/unit/RecordProjectFieldsB.txt
new file mode 100644
index 0000000..ea86639
--- /dev/null
+++ b/dhall/tests/parser/success/unit/RecordProjectFieldsB.txt
@@ -0,0 +1 @@
+r.{ x, y, z }
diff --git a/dhall/tests/parser/success/unit/RecordProjectionByTypeB.txt b/dhall/tests/parser/success/unit/RecordProjectionByTypeB.txt
new file mode 100644
index 0000000..b083b0c
--- /dev/null
+++ b/dhall/tests/parser/success/unit/RecordProjectionByTypeB.txt
@@ -0,0 +1 @@
+{ a = 1, b = 2 }.({ a : Natural })
diff --git a/dhall/tests/parser/success/unit/RecordProjectionByTypeEmptyB.txt b/dhall/tests/parser/success/unit/RecordProjectionByTypeEmptyB.txt
new file mode 100644
index 0000000..44150df
--- /dev/null
+++ b/dhall/tests/parser/success/unit/RecordProjectionByTypeEmptyB.txt
@@ -0,0 +1 @@
+{ a = 1, b = 2 }.({})
diff --git a/dhall/tests/parser/success/unit/RecordTypeB.txt b/dhall/tests/parser/success/unit/RecordTypeB.txt
new file mode 100644
index 0000000..b88d0ae
--- /dev/null
+++ b/dhall/tests/parser/success/unit/RecordTypeB.txt
@@ -0,0 +1 @@
+{ x : T, y : U }
diff --git a/dhall/tests/parser/success/unit/SelectionSomeB.txt b/dhall/tests/parser/success/unit/SelectionSomeB.txt
new file mode 100644
index 0000000..f07eec8
--- /dev/null
+++ b/dhall/tests/parser/success/unit/SelectionSomeB.txt
@@ -0,0 +1 @@
+record.{ `Some` }
diff --git a/dhall/tests/parser/success/unit/SomeXB.txt b/dhall/tests/parser/success/unit/SomeXB.txt
new file mode 100644
index 0000000..bf6eafc
--- /dev/null
+++ b/dhall/tests/parser/success/unit/SomeXB.txt
@@ -0,0 +1 @@
+Some x
diff --git a/dhall/tests/parser/success/unit/SomeXYZB.txt b/dhall/tests/parser/success/unit/SomeXYZB.txt
new file mode 100644
index 0000000..42be8b2
--- /dev/null
+++ b/dhall/tests/parser/success/unit/SomeXYZB.txt
@@ -0,0 +1 @@
+((Some x) y) z
diff --git a/dhall/tests/parser/success/unit/SortB.txt b/dhall/tests/parser/success/unit/SortB.txt
new file mode 100644
index 0000000..9b48bbb
--- /dev/null
+++ b/dhall/tests/parser/success/unit/SortB.txt
@@ -0,0 +1 @@
+Sort
diff --git a/dhall/tests/parser/success/unit/ToMapAnnotB.txt b/dhall/tests/parser/success/unit/ToMapAnnotB.txt
new file mode 100644
index 0000000..ad65b07
--- /dev/null
+++ b/dhall/tests/parser/success/unit/ToMapAnnotB.txt
@@ -0,0 +1 @@
+toMap x : T
diff --git a/dhall/tests/parser/success/unit/ToMapB.txt b/dhall/tests/parser/success/unit/ToMapB.txt
new file mode 100644
index 0000000..ea04391
--- /dev/null
+++ b/dhall/tests/parser/success/unit/ToMapB.txt
@@ -0,0 +1 @@
+toMap x
diff --git a/dhall/tests/parser/success/unit/TypeB.txt b/dhall/tests/parser/success/unit/TypeB.txt
new file mode 100644
index 0000000..245bc9d
--- /dev/null
+++ b/dhall/tests/parser/success/unit/TypeB.txt
@@ -0,0 +1 @@
+Type
diff --git a/dhall/tests/parser/success/unit/UnionTypeEmptyB.txt b/dhall/tests/parser/success/unit/UnionTypeEmptyB.txt
new file mode 100644
index 0000000..c677118
--- /dev/null
+++ b/dhall/tests/parser/success/unit/UnionTypeEmptyB.txt
@@ -0,0 +1 @@
+< >
diff --git a/dhall/tests/parser/success/unit/UnionTypeSomeB.txt b/dhall/tests/parser/success/unit/UnionTypeSomeB.txt
new file mode 100644
index 0000000..42d01cb
--- /dev/null
+++ b/dhall/tests/parser/success/unit/UnionTypeSomeB.txt
@@ -0,0 +1 @@
+< `Some`: Natural >
diff --git a/dhall/tests/parser/success/unit/UnionTypeXB.txt b/dhall/tests/parser/success/unit/UnionTypeXB.txt
new file mode 100644
index 0000000..5385fb7
--- /dev/null
+++ b/dhall/tests/parser/success/unit/UnionTypeXB.txt
@@ -0,0 +1 @@
+< x >
diff --git a/dhall/tests/parser/success/unit/UnionTypeXTYB.txt b/dhall/tests/parser/success/unit/UnionTypeXTYB.txt
new file mode 100644
index 0000000..2d3ccc3
--- /dev/null
+++ b/dhall/tests/parser/success/unit/UnionTypeXTYB.txt
@@ -0,0 +1 @@
+< x: T | y >
diff --git a/dhall/tests/parser/success/unit/UnionTypeXTYUB.txt b/dhall/tests/parser/success/unit/UnionTypeXTYUB.txt
new file mode 100644
index 0000000..0f942c8
--- /dev/null
+++ b/dhall/tests/parser/success/unit/UnionTypeXTYUB.txt
@@ -0,0 +1 @@
+< x: T | y: U >
diff --git a/dhall/tests/parser/success/unit/UnionTypeXYB.txt b/dhall/tests/parser/success/unit/UnionTypeXYB.txt
new file mode 100644
index 0000000..e98d418
--- /dev/null
+++ b/dhall/tests/parser/success/unit/UnionTypeXYB.txt
@@ -0,0 +1 @@
+< x | y >
diff --git a/dhall/tests/parser/success/unit/UnionTypeXYTB.txt b/dhall/tests/parser/success/unit/UnionTypeXYTB.txt
new file mode 100644
index 0000000..c5f1624
--- /dev/null
+++ b/dhall/tests/parser/success/unit/UnionTypeXYTB.txt
@@ -0,0 +1 @@
+< x | y: T >
diff --git a/dhall/tests/parser/success/unit/VariableB.txt b/dhall/tests/parser/success/unit/VariableB.txt
new file mode 100644
index 0000000..587be6b
--- /dev/null
+++ b/dhall/tests/parser/success/unit/VariableB.txt
@@ -0,0 +1 @@
+x
diff --git a/dhall/tests/parser/success/unit/VariableQuotedWithSpaceB.txt b/dhall/tests/parser/success/unit/VariableQuotedWithSpaceB.txt
new file mode 100644
index 0000000..a1f4d02
--- /dev/null
+++ b/dhall/tests/parser/success/unit/VariableQuotedWithSpaceB.txt
@@ -0,0 +1 @@
+` x `
diff --git a/dhall/tests/parser/success/unit/VariableUnderscoreB.txt b/dhall/tests/parser/success/unit/VariableUnderscoreB.txt
new file mode 100644
index 0000000..5824cab
--- /dev/null
+++ b/dhall/tests/parser/success/unit/VariableUnderscoreB.txt
@@ -0,0 +1 @@
+`_`
diff --git a/dhall/tests/parser/success/unit/WithB.txt b/dhall/tests/parser/success/unit/WithB.txt
new file mode 100644
index 0000000..74f42a2
--- /dev/null
+++ b/dhall/tests/parser/success/unit/WithB.txt
@@ -0,0 +1 @@
+{ a = 1 } ⫽ { a = 2 }
diff --git a/dhall/tests/parser/success/unit/WithMultipleB.txt b/dhall/tests/parser/success/unit/WithMultipleB.txt
new file mode 100644
index 0000000..76782a5
--- /dev/null
+++ b/dhall/tests/parser/success/unit/WithMultipleB.txt
@@ -0,0 +1 @@
+{ a = { b = 1 }, c = { d = 2 } } ⫽ { a = { a = { b = 1 }, c = { d = 2 } }.a ⫽ { b = 3 } } ⫽ { c = ({ a = { b = 1 }, c = { d = 2 } } ⫽ { a = { a = { b = 1 }, c = { d = 2 } }.a ⫽ { b = 3 } }).c ⫽ { e = 4 } }
diff --git a/dhall/tests/parser/success/unit/WithPrecedenceB.txt b/dhall/tests/parser/success/unit/WithPrecedenceB.txt
new file mode 100644
index 0000000..5f22335
--- /dev/null
+++ b/dhall/tests/parser/success/unit/WithPrecedenceB.txt
@@ -0,0 +1 @@
+{ a = Some 1 } ⫽ { a = Some 2 } ⫽ { a = Some 3 }
diff --git a/dhall/tests/parser/success/unit/ifThenElseB.txt b/dhall/tests/parser/success/unit/ifThenElseB.txt
new file mode 100644
index 0000000..fee08ee
--- /dev/null
+++ b/dhall/tests/parser/success/unit/ifThenElseB.txt
@@ -0,0 +1 @@
+if True then 1 else 2
diff --git a/dhall/tests/parser/success/unit/import/AsLocationAbsoluteB.txt b/dhall/tests/parser/success/unit/import/AsLocationAbsoluteB.txt
new file mode 100644
index 0000000..dcf45d1
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/AsLocationAbsoluteB.txt
@@ -0,0 +1 @@
+/absolute/import as Location
diff --git a/dhall/tests/parser/success/unit/import/AsLocationEnvB.txt b/dhall/tests/parser/success/unit/import/AsLocationEnvB.txt
new file mode 100644
index 0000000..eb4b4a6
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/AsLocationEnvB.txt
@@ -0,0 +1 @@
+env:HOME as Location
diff --git a/dhall/tests/parser/success/unit/import/AsLocationHashB.txt b/dhall/tests/parser/success/unit/import/AsLocationHashB.txt
new file mode 100644
index 0000000..c9e2456
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/AsLocationHashB.txt
@@ -0,0 +1 @@
+./some/import sha256:0000000000000000000000000000000000000000000000000000000000000000 as Location
diff --git a/dhall/tests/parser/success/unit/import/AsLocationLocalB.txt b/dhall/tests/parser/success/unit/import/AsLocationLocalB.txt
new file mode 100644
index 0000000..d92ea82
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/AsLocationLocalB.txt
@@ -0,0 +1 @@
+./local/import as Location
diff --git a/dhall/tests/parser/success/unit/import/AsLocationMissingB.txt b/dhall/tests/parser/success/unit/import/AsLocationMissingB.txt
new file mode 100644
index 0000000..e06a30b
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/AsLocationMissingB.txt
@@ -0,0 +1 @@
+missing as Location
diff --git a/dhall/tests/parser/success/unit/import/AsLocationRemoteB.txt b/dhall/tests/parser/success/unit/import/AsLocationRemoteB.txt
new file mode 100644
index 0000000..e0be314
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/AsLocationRemoteB.txt
@@ -0,0 +1 @@
+https://prelude.dhall-lang.org/package.dhall as Location
diff --git a/dhall/tests/parser/success/unit/import/HeadersB.txt b/dhall/tests/parser/success/unit/import/HeadersB.txt
new file mode 100644
index 0000000..337a497
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/HeadersB.txt
@@ -0,0 +1 @@
+https://example.com/foo using (x)
diff --git a/dhall/tests/parser/success/unit/import/HeadersDoubleHashB.txt b/dhall/tests/parser/success/unit/import/HeadersDoubleHashB.txt
new file mode 100644
index 0000000..bf808c8
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/HeadersDoubleHashB.txt
@@ -0,0 +1 @@
+https://example.com/foo using (./headers sha256:0000000000000000000000000000000000000000000000000000000000000000) sha256:1111111111111111111111111111111111111111111111111111111111111111
diff --git a/dhall/tests/parser/success/unit/import/HeadersDoubleHashPrecedenceB.txt b/dhall/tests/parser/success/unit/import/HeadersDoubleHashPrecedenceB.txt
new file mode 100644
index 0000000..bf808c8
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/HeadersDoubleHashPrecedenceB.txt
@@ -0,0 +1 @@
+https://example.com/foo using (./headers sha256:0000000000000000000000000000000000000000000000000000000000000000) sha256:1111111111111111111111111111111111111111111111111111111111111111
diff --git a/dhall/tests/parser/success/unit/import/HeadersHashPrecedenceB.txt b/dhall/tests/parser/success/unit/import/HeadersHashPrecedenceB.txt
new file mode 100644
index 0000000..15d38db
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/HeadersHashPrecedenceB.txt
@@ -0,0 +1 @@
+https://example.com/foo using (./headers sha256:0000000000000000000000000000000000000000000000000000000000000000)
diff --git a/dhall/tests/parser/success/unit/import/HeadersInteriorHashB.txt b/dhall/tests/parser/success/unit/import/HeadersInteriorHashB.txt
new file mode 100644
index 0000000..15d38db
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/HeadersInteriorHashB.txt
@@ -0,0 +1 @@
+https://example.com/foo using (./headers sha256:0000000000000000000000000000000000000000000000000000000000000000)
diff --git a/dhall/tests/parser/success/unit/import/ImportAsNoSpaceB.txt b/dhall/tests/parser/success/unit/import/ImportAsNoSpaceB.txt
new file mode 100644
index 0000000..7eb5bb8
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/ImportAsNoSpaceB.txt
@@ -0,0 +1 @@
+./import asText
diff --git a/dhall/tests/parser/success/unit/import/MissingB.txt b/dhall/tests/parser/success/unit/import/MissingB.txt
new file mode 100644
index 0000000..33e45d5
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/MissingB.txt
@@ -0,0 +1 @@
+missing
diff --git a/dhall/tests/parser/success/unit/import/asTextB.txt b/dhall/tests/parser/success/unit/import/asTextB.txt
new file mode 100644
index 0000000..d1d9139
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/asTextB.txt
@@ -0,0 +1 @@
+https://example.com/foo as Text
diff --git a/dhall/tests/parser/success/unit/import/environmentVariableBashB.txt b/dhall/tests/parser/success/unit/import/environmentVariableBashB.txt
new file mode 100644
index 0000000..4dc0aa4
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/environmentVariableBashB.txt
@@ -0,0 +1 @@
+env:FOO
diff --git a/dhall/tests/parser/success/unit/import/environmentVariablePosixB.txt b/dhall/tests/parser/success/unit/import/environmentVariablePosixB.txt
new file mode 100644
index 0000000..abb9fe1
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/environmentVariablePosixB.txt
@@ -0,0 +1 @@
+env:"\"\\\a\b\f\n\r\t\v!<[~"
diff --git a/dhall/tests/parser/success/unit/import/hashB.txt b/dhall/tests/parser/success/unit/import/hashB.txt
new file mode 100644
index 0000000..d3ed45a
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/hashB.txt
@@ -0,0 +1 @@
+./"a.dhall" sha256:16173e984d35ee3ffd8b6b79167df89480e67d1cd03ea5d0fc93689e4d928e61
diff --git a/dhall/tests/parser/success/unit/import/importAltB.txt b/dhall/tests/parser/success/unit/import/importAltB.txt
new file mode 100644
index 0000000..147ae85
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/importAltB.txt
@@ -0,0 +1 @@
+env:UNSET1 as Text ? env:UNSET2 ? missing ? env:UNSET3 ? 2
diff --git a/dhall/tests/parser/success/unit/import/inlineUsingB.txt b/dhall/tests/parser/success/unit/import/inlineUsingB.txt
new file mode 100644
index 0000000..1434d72
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/inlineUsingB.txt
@@ -0,0 +1 @@
+https://example.com/foo using ([{ mapKey = "Authorization", mapValue = "token 5199831f4dd3b79e7c5b7e0ebe75d67aa66e79d4" }])
diff --git a/dhall/tests/parser/success/unit/import/pathAbsoluteB.txt b/dhall/tests/parser/success/unit/import/pathAbsoluteB.txt
new file mode 100644
index 0000000..eedebe6
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/pathAbsoluteB.txt
@@ -0,0 +1 @@
+/absolute/path
diff --git a/dhall/tests/parser/success/unit/import/pathHereB.txt b/dhall/tests/parser/success/unit/import/pathHereB.txt
new file mode 100644
index 0000000..20be97e
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/pathHereB.txt
@@ -0,0 +1 @@
+./relative/path
diff --git a/dhall/tests/parser/success/unit/import/pathHomeB.txt b/dhall/tests/parser/success/unit/import/pathHomeB.txt
new file mode 100644
index 0000000..28b8bd9
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/pathHomeB.txt
@@ -0,0 +1 @@
+~/home/anchored/path
diff --git a/dhall/tests/parser/success/unit/import/pathParentB.txt b/dhall/tests/parser/success/unit/import/pathParentB.txt
new file mode 100644
index 0000000..12cd2c7
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/pathParentB.txt
@@ -0,0 +1 @@
+../parent/path
diff --git a/dhall/tests/parser/success/unit/import/pathTerminationLambdaB.txt b/dhall/tests/parser/success/unit/import/pathTerminationLambdaB.txt
new file mode 100644
index 0000000..a0117cd
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/pathTerminationLambdaB.txt
@@ -0,0 +1 @@
+λ(x : ./example) → x
diff --git a/dhall/tests/parser/success/unit/import/pathTerminationListB.txt b/dhall/tests/parser/success/unit/import/pathTerminationListB.txt
new file mode 100644
index 0000000..a565a6e
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/pathTerminationListB.txt
@@ -0,0 +1 @@
+[./example, ./example, ./example]
diff --git a/dhall/tests/parser/success/unit/import/pathTerminationRecordB.txt b/dhall/tests/parser/success/unit/import/pathTerminationRecordB.txt
new file mode 100644
index 0000000..5304fc2
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/pathTerminationRecordB.txt
@@ -0,0 +1 @@
+{ bar = ./example, foo = ./example }
diff --git a/dhall/tests/parser/success/unit/import/pathTerminationUnionB.txt b/dhall/tests/parser/success/unit/import/pathTerminationUnionB.txt
new file mode 100644
index 0000000..77eff8a
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/pathTerminationUnionB.txt
@@ -0,0 +1 @@
+< foo: ./"example|" bar : ./example >
diff --git a/dhall/tests/parser/success/unit/import/quotedPathsB.txt b/dhall/tests/parser/success/unit/import/quotedPathsB.txt
new file mode 100644
index 0000000..4705ca3
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/quotedPathsB.txt
@@ -0,0 +1 @@
+{ example0 = /foo/bar/"baz qux", example1 = https://example.com/foo/bar%3Fbaz?qux }
diff --git a/dhall/tests/parser/success/unit/import/unicodePathsB.txt b/dhall/tests/parser/success/unit/import/unicodePathsB.txt
new file mode 100644
index 0000000..179220a
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/unicodePathsB.txt
@@ -0,0 +1 @@
+./families/"禺.dhall"
diff --git a/dhall/tests/parser/success/unit/import/urls/basicHttpB.txt b/dhall/tests/parser/success/unit/import/urls/basicHttpB.txt
new file mode 100644
index 0000000..cf5ddf7
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/basicHttpB.txt
@@ -0,0 +1 @@
+http://example.com/someFile.dhall
diff --git a/dhall/tests/parser/success/unit/import/urls/basicHttpsB.txt b/dhall/tests/parser/success/unit/import/urls/basicHttpsB.txt
new file mode 100644
index 0000000..009061c
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/basicHttpsB.txt
@@ -0,0 +1 @@
+https://raw.githubusercontent.com/dhall-lang/dhall-haskell/18e4e9a18dc53271146df3ccf5b4177c3552236b/examples/True
diff --git a/dhall/tests/parser/success/unit/import/urls/emptyPath0B.txt b/dhall/tests/parser/success/unit/import/urls/emptyPath0B.txt
new file mode 100644
index 0000000..dc54b2a
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/emptyPath0B.txt
@@ -0,0 +1 @@
+https://example.com/
diff --git a/dhall/tests/parser/success/unit/import/urls/emptyPath1B.txt b/dhall/tests/parser/success/unit/import/urls/emptyPath1B.txt
new file mode 100644
index 0000000..dc54b2a
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/emptyPath1B.txt
@@ -0,0 +1 @@
+https://example.com/
diff --git a/dhall/tests/parser/success/unit/import/urls/emptyPathSegmentB.txt b/dhall/tests/parser/success/unit/import/urls/emptyPathSegmentB.txt
new file mode 100644
index 0000000..426416a
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/emptyPathSegmentB.txt
@@ -0,0 +1 @@
+https://example.com/foo//bar
diff --git a/dhall/tests/parser/success/unit/import/urls/emptyQueryB.txt b/dhall/tests/parser/success/unit/import/urls/emptyQueryB.txt
new file mode 100644
index 0000000..aa8474d
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/emptyQueryB.txt
@@ -0,0 +1 @@
+https://example.com/foo?
diff --git a/dhall/tests/parser/success/unit/import/urls/escapedPathB.txt b/dhall/tests/parser/success/unit/import/urls/escapedPathB.txt
new file mode 100644
index 0000000..a72cff1
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/escapedPathB.txt
@@ -0,0 +1 @@
+https://example.com/a%20b/c%2fd/e+f/g%2dh
diff --git a/dhall/tests/parser/success/unit/import/urls/escapedQueryB.txt b/dhall/tests/parser/success/unit/import/urls/escapedQueryB.txt
new file mode 100644
index 0000000..9f1776e
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/escapedQueryB.txt
@@ -0,0 +1 @@
+https://example.com/foo?a%20b=c%2fd&e+f/?
diff --git a/dhall/tests/parser/success/unit/import/urls/fragmentParsesAsListAppendB.txt b/dhall/tests/parser/success/unit/import/urls/fragmentParsesAsListAppendB.txt
new file mode 100644
index 0000000..d6df585
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/fragmentParsesAsListAppendB.txt
@@ -0,0 +1 @@
+https://example.com/foo # bar
diff --git a/dhall/tests/parser/success/unit/import/urls/ipv4B.txt b/dhall/tests/parser/success/unit/import/urls/ipv4B.txt
new file mode 100644
index 0000000..68f3114
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/ipv4B.txt
@@ -0,0 +1 @@
+https://127.0.0.1/index.dhall
diff --git a/dhall/tests/parser/success/unit/import/urls/ipv4upperoctetsB.txt b/dhall/tests/parser/success/unit/import/urls/ipv4upperoctetsB.txt
new file mode 100644
index 0000000..57a688c
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/ipv4upperoctetsB.txt
@@ -0,0 +1 @@
+https://200.249.250.255/index.dhall
diff --git a/dhall/tests/parser/success/unit/import/urls/ipv6longB.txt b/dhall/tests/parser/success/unit/import/urls/ipv6longB.txt
new file mode 100644
index 0000000..4cf06bc
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/ipv6longB.txt
@@ -0,0 +1 @@
+https://[2001:db8:85a3:0:0:8a2e:370:7334]/tutorial.dhall
diff --git a/dhall/tests/parser/success/unit/import/urls/ipv6mediumB.txt b/dhall/tests/parser/success/unit/import/urls/ipv6mediumB.txt
new file mode 100644
index 0000000..0f877e6
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/ipv6mediumB.txt
@@ -0,0 +1 @@
+https://[2001:db8:85a3::8a2e:370:7334]/tutorial.dhall
diff --git a/dhall/tests/parser/success/unit/import/urls/ipv6shortB.txt b/dhall/tests/parser/success/unit/import/urls/ipv6shortB.txt
new file mode 100644
index 0000000..2d30f9d
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/ipv6shortB.txt
@@ -0,0 +1 @@
+https://[::]/index.dhall
diff --git a/dhall/tests/parser/success/unit/import/urls/ipv6verylongB.txt b/dhall/tests/parser/success/unit/import/urls/ipv6verylongB.txt
new file mode 100644
index 0000000..3c63448
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/ipv6verylongB.txt
@@ -0,0 +1 @@
+http://[AAAA:BBBB:CCCC:DDDD:EEEE:FFFF:0000::]/tutorial.dhall
diff --git a/dhall/tests/parser/success/unit/import/urls/ipv6withipv4B.txt b/dhall/tests/parser/success/unit/import/urls/ipv6withipv4B.txt
new file mode 100644
index 0000000..e8bc016
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/ipv6withipv4B.txt
@@ -0,0 +1 @@
+https://[2001:db8:85a3::8a2e:3.112.115.52]/tutorial.dhall
diff --git a/dhall/tests/parser/success/unit/import/urls/portB.txt b/dhall/tests/parser/success/unit/import/urls/portB.txt
new file mode 100644
index 0000000..84dfbeb
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/portB.txt
@@ -0,0 +1 @@
+https://example.com:1234/foo
diff --git a/dhall/tests/parser/success/unit/import/urls/potPourriB.txt b/dhall/tests/parser/success/unit/import/urls/potPourriB.txt
new file mode 100644
index 0000000..4de1b98
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/potPourriB.txt
@@ -0,0 +1 @@
+https://-._~%2C!$&'*+;=:@0abc1--12a------a-a--a-0/foo?/-._~%2C!$&'*+;=:@/?
diff --git a/dhall/tests/parser/success/unit/import/urls/quotedPathFakeUrlEncodeB.txt b/dhall/tests/parser/success/unit/import/urls/quotedPathFakeUrlEncodeB.txt
new file mode 100644
index 0000000..a8366d2
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/quotedPathFakeUrlEncodeB.txt
@@ -0,0 +1 @@
+https://example.com/a%20b/c
diff --git a/dhall/tests/parser/success/unit/import/urls/userinfoB.txt b/dhall/tests/parser/success/unit/import/urls/userinfoB.txt
new file mode 100644
index 0000000..7de045e
--- /dev/null
+++ b/dhall/tests/parser/success/unit/import/urls/userinfoB.txt
@@ -0,0 +1 @@
+https://john:doe@example.com/foo
diff --git a/dhall/tests/parser/success/unit/operators/BoolAndAssocB.txt b/dhall/tests/parser/success/unit/operators/BoolAndAssocB.txt
new file mode 100644
index 0000000..2edfb5d
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/BoolAndAssocB.txt
@@ -0,0 +1 @@
+w && x && y && z
diff --git a/dhall/tests/parser/success/unit/operators/BoolAndB.txt b/dhall/tests/parser/success/unit/operators/BoolAndB.txt
new file mode 100644
index 0000000..7d5be6b
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/BoolAndB.txt
@@ -0,0 +1 @@
+x && y
diff --git a/dhall/tests/parser/success/unit/operators/BoolEQAssocB.txt b/dhall/tests/parser/success/unit/operators/BoolEQAssocB.txt
new file mode 100644
index 0000000..dfc5962
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/BoolEQAssocB.txt
@@ -0,0 +1 @@
+w == x == y == z
diff --git a/dhall/tests/parser/success/unit/operators/BoolEQB.txt b/dhall/tests/parser/success/unit/operators/BoolEQB.txt
new file mode 100644
index 0000000..04dfc84
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/BoolEQB.txt
@@ -0,0 +1 @@
+x == y
diff --git a/dhall/tests/parser/success/unit/operators/BoolNEAssocB.txt b/dhall/tests/parser/success/unit/operators/BoolNEAssocB.txt
new file mode 100644
index 0000000..a09daba
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/BoolNEAssocB.txt
@@ -0,0 +1 @@
+w != x != y != z
diff --git a/dhall/tests/parser/success/unit/operators/BoolNEB.txt b/dhall/tests/parser/success/unit/operators/BoolNEB.txt
new file mode 100644
index 0000000..348bb48
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/BoolNEB.txt
@@ -0,0 +1 @@
+x != y
diff --git a/dhall/tests/parser/success/unit/operators/BoolOrAssocB.txt b/dhall/tests/parser/success/unit/operators/BoolOrAssocB.txt
new file mode 100644
index 0000000..60a3e69
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/BoolOrAssocB.txt
@@ -0,0 +1 @@
+w || x || y || z
diff --git a/dhall/tests/parser/success/unit/operators/BoolOrB.txt b/dhall/tests/parser/success/unit/operators/BoolOrB.txt
new file mode 100644
index 0000000..d3891c2
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/BoolOrB.txt
@@ -0,0 +1 @@
+x || y
diff --git a/dhall/tests/parser/success/unit/operators/EquivalenceB.txt b/dhall/tests/parser/success/unit/operators/EquivalenceB.txt
new file mode 100644
index 0000000..f0f3c37
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/EquivalenceB.txt
@@ -0,0 +1 @@
+x ≡ y
diff --git a/dhall/tests/parser/success/unit/operators/ImportAltAssocB.txt b/dhall/tests/parser/success/unit/operators/ImportAltAssocB.txt
new file mode 100644
index 0000000..e788330
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/ImportAltAssocB.txt
@@ -0,0 +1 @@
+w ? x ? y ? z
diff --git a/dhall/tests/parser/success/unit/operators/ImportAltB.txt b/dhall/tests/parser/success/unit/operators/ImportAltB.txt
new file mode 100644
index 0000000..699a2b8
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/ImportAltB.txt
@@ -0,0 +1 @@
+x ? y
diff --git a/dhall/tests/parser/success/unit/operators/ListAppendAssocB.txt b/dhall/tests/parser/success/unit/operators/ListAppendAssocB.txt
new file mode 100644
index 0000000..8d5aee4
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/ListAppendAssocB.txt
@@ -0,0 +1 @@
+w # x # y # z
diff --git a/dhall/tests/parser/success/unit/operators/ListAppendB.txt b/dhall/tests/parser/success/unit/operators/ListAppendB.txt
new file mode 100644
index 0000000..e0f232c
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/ListAppendB.txt
@@ -0,0 +1 @@
+x # y
diff --git a/dhall/tests/parser/success/unit/operators/NaturalPlusAssocB.txt b/dhall/tests/parser/success/unit/operators/NaturalPlusAssocB.txt
new file mode 100644
index 0000000..e728865
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/NaturalPlusAssocB.txt
@@ -0,0 +1 @@
+w + x + y + z
diff --git a/dhall/tests/parser/success/unit/operators/NaturalPlusB.txt b/dhall/tests/parser/success/unit/operators/NaturalPlusB.txt
new file mode 100644
index 0000000..beeb1e5
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/NaturalPlusB.txt
@@ -0,0 +1 @@
+x + y
diff --git a/dhall/tests/parser/success/unit/operators/NaturalTimesAssocB.txt b/dhall/tests/parser/success/unit/operators/NaturalTimesAssocB.txt
new file mode 100644
index 0000000..c9bc609
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/NaturalTimesAssocB.txt
@@ -0,0 +1 @@
+w * x * y * z
diff --git a/dhall/tests/parser/success/unit/operators/NaturalTimesB.txt b/dhall/tests/parser/success/unit/operators/NaturalTimesB.txt
new file mode 100644
index 0000000..d1a067a
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/NaturalTimesB.txt
@@ -0,0 +1 @@
+x * y
diff --git a/dhall/tests/parser/success/unit/operators/PrecedenceBoolB.txt b/dhall/tests/parser/success/unit/operators/PrecedenceBoolB.txt
new file mode 100644
index 0000000..7f204c7
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/PrecedenceBoolB.txt
@@ -0,0 +1 @@
+a && b || c d == e || f != g && h || i
diff --git a/dhall/tests/parser/success/unit/operators/PrecedenceNatB.txt b/dhall/tests/parser/success/unit/operators/PrecedenceNatB.txt
new file mode 100644
index 0000000..c5bb9a2
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/PrecedenceNatB.txt
@@ -0,0 +1 @@
+a + b * d + e f * (g + h)
diff --git a/dhall/tests/parser/success/unit/operators/PrecedenceRecordB.txt b/dhall/tests/parser/success/unit/operators/PrecedenceRecordB.txt
new file mode 100644
index 0000000..772382d
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/PrecedenceRecordB.txt
@@ -0,0 +1 @@
+a ⫽ b c ∧ d ⫽ e.{ x } ∧ f
diff --git a/dhall/tests/parser/success/unit/operators/RecursiveRecordMergeAssocB.txt b/dhall/tests/parser/success/unit/operators/RecursiveRecordMergeAssocB.txt
new file mode 100644
index 0000000..386f323
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/RecursiveRecordMergeAssocB.txt
@@ -0,0 +1 @@
+w ⩓ x ⩓ y ⩓ z
diff --git a/dhall/tests/parser/success/unit/operators/RecursiveRecordMergeB.txt b/dhall/tests/parser/success/unit/operators/RecursiveRecordMergeB.txt
new file mode 100644
index 0000000..ff04b07
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/RecursiveRecordMergeB.txt
@@ -0,0 +1 @@
+x ⩓ y
diff --git a/dhall/tests/parser/success/unit/operators/RecursiveRecordMergeUnicodeAssocB.txt b/dhall/tests/parser/success/unit/operators/RecursiveRecordMergeUnicodeAssocB.txt
new file mode 100644
index 0000000..5642bd0
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/RecursiveRecordMergeUnicodeAssocB.txt
@@ -0,0 +1 @@
+w ∧ x ∧ y ∧ z
diff --git a/dhall/tests/parser/success/unit/operators/RecursiveRecordMergeUnicodeB.txt b/dhall/tests/parser/success/unit/operators/RecursiveRecordMergeUnicodeB.txt
new file mode 100644
index 0000000..072f7c2
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/RecursiveRecordMergeUnicodeB.txt
@@ -0,0 +1 @@
+x ∧ y
diff --git a/dhall/tests/parser/success/unit/operators/RecursiveRecordTypeMergeAssocB.txt b/dhall/tests/parser/success/unit/operators/RecursiveRecordTypeMergeAssocB.txt
new file mode 100644
index 0000000..5642bd0
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/RecursiveRecordTypeMergeAssocB.txt
@@ -0,0 +1 @@
+w ∧ x ∧ y ∧ z
diff --git a/dhall/tests/parser/success/unit/operators/RecursiveRecordTypeMergeB.txt b/dhall/tests/parser/success/unit/operators/RecursiveRecordTypeMergeB.txt
new file mode 100644
index 0000000..072f7c2
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/RecursiveRecordTypeMergeB.txt
@@ -0,0 +1 @@
+x ∧ y
diff --git a/dhall/tests/parser/success/unit/operators/RecursiveRecordTypeMergeUnicodeAssocB.txt b/dhall/tests/parser/success/unit/operators/RecursiveRecordTypeMergeUnicodeAssocB.txt
new file mode 100644
index 0000000..386f323
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/RecursiveRecordTypeMergeUnicodeAssocB.txt
@@ -0,0 +1 @@
+w ⩓ x ⩓ y ⩓ z
diff --git a/dhall/tests/parser/success/unit/operators/RecursiveRecordTypeMergeUnicodeB.txt b/dhall/tests/parser/success/unit/operators/RecursiveRecordTypeMergeUnicodeB.txt
new file mode 100644
index 0000000..ff04b07
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/RecursiveRecordTypeMergeUnicodeB.txt
@@ -0,0 +1 @@
+x ⩓ y
diff --git a/dhall/tests/parser/success/unit/operators/RightBiasedRecordMergeAssocB.txt b/dhall/tests/parser/success/unit/operators/RightBiasedRecordMergeAssocB.txt
new file mode 100644
index 0000000..ab41c2b
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/RightBiasedRecordMergeAssocB.txt
@@ -0,0 +1 @@
+w ⫽ x ⫽ y ⫽ z
diff --git a/dhall/tests/parser/success/unit/operators/RightBiasedRecordMergeB.txt b/dhall/tests/parser/success/unit/operators/RightBiasedRecordMergeB.txt
new file mode 100644
index 0000000..e59a5f2
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/RightBiasedRecordMergeB.txt
@@ -0,0 +1 @@
+x ⫽ y
diff --git a/dhall/tests/parser/success/unit/operators/RightBiasedRecordMergeUnicodeAssocB.txt b/dhall/tests/parser/success/unit/operators/RightBiasedRecordMergeUnicodeAssocB.txt
new file mode 100644
index 0000000..ab41c2b
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/RightBiasedRecordMergeUnicodeAssocB.txt
@@ -0,0 +1 @@
+w ⫽ x ⫽ y ⫽ z
diff --git a/dhall/tests/parser/success/unit/operators/RightBiasedRecordMergeUnicodeB.txt b/dhall/tests/parser/success/unit/operators/RightBiasedRecordMergeUnicodeB.txt
new file mode 100644
index 0000000..e59a5f2
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/RightBiasedRecordMergeUnicodeB.txt
@@ -0,0 +1 @@
+x ⫽ y
diff --git a/dhall/tests/parser/success/unit/operators/TextAppendAssocB.txt b/dhall/tests/parser/success/unit/operators/TextAppendAssocB.txt
new file mode 100644
index 0000000..1f6daf8
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/TextAppendAssocB.txt
@@ -0,0 +1 @@
+w ++ x ++ y ++ z
diff --git a/dhall/tests/parser/success/unit/operators/TextAppendB.txt b/dhall/tests/parser/success/unit/operators/TextAppendB.txt
new file mode 100644
index 0000000..c745d4b
--- /dev/null
+++ b/dhall/tests/parser/success/unit/operators/TextAppendB.txt
@@ -0,0 +1 @@
+x ++ y
diff --git a/dhall/tests/parser/success/usingToMapB.txt b/dhall/tests/parser/success/usingToMapB.txt
new file mode 100644
index 0000000..367ddfc
--- /dev/null
+++ b/dhall/tests/parser/success/usingToMapB.txt
@@ -0,0 +1 @@
+https://example.com/ using (toMap { Foo = "Bar" })
diff --git a/dhall/tests/parser/success/whitespaceB.txt b/dhall/tests/parser/success/whitespaceB.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/dhall/tests/parser/success/whitespaceB.txt
@@ -0,0 +1 @@
+1
diff --git a/dhall/tests/parser/success/whitespaceBuffetB.txt b/dhall/tests/parser/success/whitespaceBuffetB.txt
new file mode 100644
index 0000000..7b28910
--- /dev/null
+++ b/dhall/tests/parser/success/whitespaceBuffetB.txt
@@ -0,0 +1 @@
+Natural/even 2