diff options
author | Nadrieril | 2020-03-01 16:37:10 +0000 |
---|---|---|
committer | Nadrieril | 2020-03-05 15:58:54 +0000 |
commit | 24ff14dc98b83ddc12239a0eae4852c9cd87d41f (patch) | |
tree | 494279e9ae81be144d7eb3834e6080a7819aea47 /dhall | |
parent | e277fb2f7316fef5c20e7c485eeba1f14328d621 (diff) |
Add a lot of import tests
Diffstat (limited to '')
53 files changed, 96 insertions, 2 deletions
diff --git a/dhall/build.rs b/dhall/build.rs index 2c70b89..6165be2 100644 --- a/dhall/build.rs +++ b/dhall/build.rs @@ -259,6 +259,17 @@ fn generate_tests() -> std::io::Result<()> { || path == "headerForwarding" || path == "noHeaderForwarding" || path == "unit/asLocation/Remote" + || path == "unit/AlternativeChain1" + || path == "unit/AlternativeChain2" + || path == "unit/AlternativeEnv" + || path == "unit/AlternativeHashMismatch" + || path == "unit/AlternativeImportError" + || path == "unit/AlternativeNoError3" + || path == "unit/AlternativeSubExpr" + || path == "unit/AsText" + || path == "unit/EnvSet" + || path == "unit/EnvSetAsText" + || path == "unit/SimpleRemote" }), input_type: FileType::Text, output_type: Some(FileType::Text), @@ -276,6 +287,8 @@ fn generate_tests() -> std::io::Result<()> { || path == "missing" || path == "referentiallyInsane" || path == "customHeadersUsingBoundVariable" + || path == "unit/EnvUnset" + || path == "unit/EnvUnsetAsText" }), input_type: FileType::Text, output_type: Some(FileType::UI), @@ -322,8 +335,9 @@ fn generate_tests() -> std::io::Result<()> { // Too slow, but also not all features implemented // For now needs support for hashed imports || path == "prelude" - // TODO: imports + // TODO: remote imports || path == "CacheImports" + || path == "CacheImportsCanonicalize" }), input_type: FileType::Text, output_type: Some(FileType::Text), diff --git a/dhall/src/tests.rs b/dhall/src/tests.rs index 3649f8d..044b185 100644 --- a/dhall/src/tests.rs +++ b/dhall/src/tests.rs @@ -243,7 +243,7 @@ fn run_test_stringy_error(test: Test) -> std::result::Result<(), String> { fn run_test(test: Test) -> Result<()> { use self::Test::*; - // Setup current directory to the root of the repository. Important for import tests. + // Setup current directory to the root of the repository. Important for `as Location` tests. env::set_current_dir( PathBuf::from(env!("CARGO_MANIFEST_DIR")).parent().unwrap(), )?; diff --git a/dhall/tests/import/data/cycle.dhall b/dhall/tests/import/data/cycle.dhall new file mode 100644 index 0000000..c370a8d --- /dev/null +++ b/dhall/tests/import/data/cycle.dhall @@ -0,0 +1 @@ +../failure/cycle.dhall diff --git a/dhall/tests/import/data/doesNotTypecheck.dhall b/dhall/tests/import/data/doesNotTypecheck.dhall new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/dhall/tests/import/data/doesNotTypecheck.dhall @@ -0,0 +1 @@ +0 0 diff --git a/dhall/tests/import/data/example.txt b/dhall/tests/import/data/example.txt new file mode 100644 index 0000000..af5626b --- /dev/null +++ b/dhall/tests/import/data/example.txt @@ -0,0 +1 @@ +Hello, world! diff --git a/dhall/tests/import/data/fieldOrder/1.dhall b/dhall/tests/import/data/fieldOrder/1.dhall new file mode 100644 index 0000000..797e071 --- /dev/null +++ b/dhall/tests/import/data/fieldOrder/1.dhall @@ -0,0 +1 @@ +{ foo = 1, bar = True } diff --git a/dhall/tests/import/data/fieldOrder/2.dhall b/dhall/tests/import/data/fieldOrder/2.dhall new file mode 100644 index 0000000..c16b568 --- /dev/null +++ b/dhall/tests/import/data/fieldOrder/2.dhall @@ -0,0 +1 @@ +{ bar = True, foo = 1 } diff --git a/dhall/tests/import/data/importBoundary.dhall b/dhall/tests/import/data/importBoundary.dhall new file mode 100644 index 0000000..e6f1074 --- /dev/null +++ b/dhall/tests/import/data/importBoundary.dhall @@ -0,0 +1,3 @@ +-- This file contains a free variable. This should be a type error, even if the variable +-- is in scope in the importing expression +x diff --git a/dhall/tests/import/data/nested.dhall b/dhall/tests/import/data/nested.dhall new file mode 100644 index 0000000..bf88f65 --- /dev/null +++ b/dhall/tests/import/data/nested.dhall @@ -0,0 +1 @@ +{ x = ./simple.dhall sha256:15f52ecf91c94c1baac02d5a4964b2ed8fa401641a2c8a95e8306ec7c1e3b8d2 } diff --git a/dhall/tests/import/data/referentiallyOpaque.dhall b/dhall/tests/import/data/referentiallyOpaque.dhall new file mode 100644 index 0000000..ff33765 --- /dev/null +++ b/dhall/tests/import/data/referentiallyOpaque.dhall @@ -0,0 +1,18 @@ +{- This is a "referentially opaque" import (i.e. an import that is not + globally addressable), which cannot be imported by a "referentially + transparent" import (i.e. an import that is globally addressable). + + This test file is used in a failing test to verify that referentially + transparent imports cannot import referentially opaque imports. In the test + suite this file is actually imported via its GitHub URL (not its local file + path), so it plays the role of the referentially transparent import. Then, + this file attempts to import a referentially opaque import (an environment + variable in this case) to verify that the import fails. + + For this test file we need to select a referentially opaque import that + would succeed if imported on its own, so that a non-compliant implementation + doesn't fail this test for the wrong reason (i.e. due to the import not + being present). We thus use the `DHALL_TEST_VAR` environment variable, that + is expected to be set when running import tests. +-} +env:DHALL_TEST_VAR as Text diff --git a/dhall/tests/import/data/simple.dhall b/dhall/tests/import/data/simple.dhall new file mode 100644 index 0000000..00750ed --- /dev/null +++ b/dhall/tests/import/data/simple.dhall @@ -0,0 +1 @@ +3 diff --git a/dhall/tests/import/data/simpleLocation.dhall b/dhall/tests/import/data/simpleLocation.dhall new file mode 100644 index 0000000..1d3e43b --- /dev/null +++ b/dhall/tests/import/data/simpleLocation.dhall @@ -0,0 +1 @@ +./simple.dhall as Location diff --git a/dhall/tests/import/failure/unit/EnvUnset.dhall b/dhall/tests/import/failure/unit/EnvUnset.dhall new file mode 100644 index 0000000..af77cce --- /dev/null +++ b/dhall/tests/import/failure/unit/EnvUnset.dhall @@ -0,0 +1 @@ +env:DHALL_TEST_UNSET diff --git a/dhall/tests/import/failure/unit/EnvUnsetAsText.dhall b/dhall/tests/import/failure/unit/EnvUnsetAsText.dhall new file mode 100644 index 0000000..9a9db6d --- /dev/null +++ b/dhall/tests/import/failure/unit/EnvUnsetAsText.dhall @@ -0,0 +1 @@ +env:DHALL_TEST_UNSET as Text diff --git a/dhall/tests/import/success/unit/AlternativeChain1A.dhall b/dhall/tests/import/success/unit/AlternativeChain1A.dhall new file mode 100644 index 0000000..15fbf4b --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeChain1A.dhall @@ -0,0 +1 @@ +missing ? missing ? 42 diff --git a/dhall/tests/import/success/unit/AlternativeChain1B.dhall b/dhall/tests/import/success/unit/AlternativeChain1B.dhall new file mode 100644 index 0000000..d81cc07 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeChain1B.dhall @@ -0,0 +1 @@ +42 diff --git a/dhall/tests/import/success/unit/AlternativeChain2A.dhall b/dhall/tests/import/success/unit/AlternativeChain2A.dhall new file mode 100644 index 0000000..f3ba4b5 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeChain2A.dhall @@ -0,0 +1 @@ +missing ? 42 ? 10 diff --git a/dhall/tests/import/success/unit/AlternativeChain2B.dhall b/dhall/tests/import/success/unit/AlternativeChain2B.dhall new file mode 100644 index 0000000..d81cc07 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeChain2B.dhall @@ -0,0 +1 @@ +42 diff --git a/dhall/tests/import/success/unit/AlternativeEnvA.dhall b/dhall/tests/import/success/unit/AlternativeEnvA.dhall new file mode 100644 index 0000000..1807534 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeEnvA.dhall @@ -0,0 +1 @@ +env:DHALL_TEST_UNSET ? 42 diff --git a/dhall/tests/import/success/unit/AlternativeEnvB.dhall b/dhall/tests/import/success/unit/AlternativeEnvB.dhall new file mode 100644 index 0000000..d81cc07 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeEnvB.dhall @@ -0,0 +1 @@ +42 diff --git a/dhall/tests/import/success/unit/AlternativeHashMismatchA.dhall b/dhall/tests/import/success/unit/AlternativeHashMismatchA.dhall new file mode 100644 index 0000000..8f7fb02 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeHashMismatchA.dhall @@ -0,0 +1 @@ +../../data/simple.dhall sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ? 42 diff --git a/dhall/tests/import/success/unit/AlternativeHashMismatchB.dhall b/dhall/tests/import/success/unit/AlternativeHashMismatchB.dhall new file mode 100644 index 0000000..d81cc07 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeHashMismatchB.dhall @@ -0,0 +1 @@ +42 diff --git a/dhall/tests/import/success/unit/AlternativeImportErrorA.dhall b/dhall/tests/import/success/unit/AlternativeImportErrorA.dhall new file mode 100644 index 0000000..9ecc640 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeImportErrorA.dhall @@ -0,0 +1 @@ +missing ? 42 diff --git a/dhall/tests/import/success/unit/AlternativeImportErrorB.dhall b/dhall/tests/import/success/unit/AlternativeImportErrorB.dhall new file mode 100644 index 0000000..d81cc07 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeImportErrorB.dhall @@ -0,0 +1 @@ +42 diff --git a/dhall/tests/import/success/unit/AlternativeNestedImportErrorA.dhall b/dhall/tests/import/success/unit/AlternativeNestedImportErrorA.dhall new file mode 100644 index 0000000..d681287 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeNestedImportErrorA.dhall @@ -0,0 +1 @@ +../../failure/missing.dhall ? 42 diff --git a/dhall/tests/import/success/unit/AlternativeNestedImportErrorB.dhall b/dhall/tests/import/success/unit/AlternativeNestedImportErrorB.dhall new file mode 100644 index 0000000..d81cc07 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeNestedImportErrorB.dhall @@ -0,0 +1 @@ +42 diff --git a/dhall/tests/import/success/unit/AlternativeNoError1A.dhall b/dhall/tests/import/success/unit/AlternativeNoError1A.dhall new file mode 100644 index 0000000..f7c9caf --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeNoError1A.dhall @@ -0,0 +1 @@ +42 ? 10 diff --git a/dhall/tests/import/success/unit/AlternativeNoError1B.dhall b/dhall/tests/import/success/unit/AlternativeNoError1B.dhall new file mode 100644 index 0000000..d81cc07 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeNoError1B.dhall @@ -0,0 +1 @@ +42 diff --git a/dhall/tests/import/success/unit/AlternativeNoError2A.dhall b/dhall/tests/import/success/unit/AlternativeNoError2A.dhall new file mode 100644 index 0000000..877afd2 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeNoError2A.dhall @@ -0,0 +1 @@ +42 ? missing diff --git a/dhall/tests/import/success/unit/AlternativeNoError2B.dhall b/dhall/tests/import/success/unit/AlternativeNoError2B.dhall new file mode 100644 index 0000000..d81cc07 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeNoError2B.dhall @@ -0,0 +1 @@ +42 diff --git a/dhall/tests/import/success/unit/AlternativeNoError3A.dhall b/dhall/tests/import/success/unit/AlternativeNoError3A.dhall new file mode 100644 index 0000000..91bcda2 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeNoError3A.dhall @@ -0,0 +1 @@ +env:DHALL_TEST_VAR ? 10 diff --git a/dhall/tests/import/success/unit/AlternativeNoError3B.dhall b/dhall/tests/import/success/unit/AlternativeNoError3B.dhall new file mode 100644 index 0000000..d81cc07 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeNoError3B.dhall @@ -0,0 +1 @@ +42 diff --git a/dhall/tests/import/success/unit/AlternativeParseErrorA.dhall b/dhall/tests/import/success/unit/AlternativeParseErrorA.dhall new file mode 100644 index 0000000..d427c5d --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeParseErrorA.dhall @@ -0,0 +1 @@ +../../data/example.txt ? 42 diff --git a/dhall/tests/import/success/unit/AlternativeParseErrorB.dhall b/dhall/tests/import/success/unit/AlternativeParseErrorB.dhall new file mode 100644 index 0000000..d81cc07 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeParseErrorB.dhall @@ -0,0 +1 @@ +42 diff --git a/dhall/tests/import/success/unit/AlternativeSubExprA.dhall b/dhall/tests/import/success/unit/AlternativeSubExprA.dhall new file mode 100644 index 0000000..2c13f4b --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeSubExprA.dhall @@ -0,0 +1 @@ +missing + 10 ? 42 diff --git a/dhall/tests/import/success/unit/AlternativeSubExprB.dhall b/dhall/tests/import/success/unit/AlternativeSubExprB.dhall new file mode 100644 index 0000000..d81cc07 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeSubExprB.dhall @@ -0,0 +1 @@ +42 diff --git a/dhall/tests/import/success/unit/AlternativeTypeErrorA.dhall b/dhall/tests/import/success/unit/AlternativeTypeErrorA.dhall new file mode 100644 index 0000000..24ae717 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeTypeErrorA.dhall @@ -0,0 +1 @@ +../../data/doesNotTypecheck.dhall ? 42 diff --git a/dhall/tests/import/success/unit/AlternativeTypeErrorB.dhall b/dhall/tests/import/success/unit/AlternativeTypeErrorB.dhall new file mode 100644 index 0000000..d81cc07 --- /dev/null +++ b/dhall/tests/import/success/unit/AlternativeTypeErrorB.dhall @@ -0,0 +1 @@ +42 diff --git a/dhall/tests/import/success/unit/AsTextA.dhall b/dhall/tests/import/success/unit/AsTextA.dhall new file mode 100644 index 0000000..9edb0ed --- /dev/null +++ b/dhall/tests/import/success/unit/AsTextA.dhall @@ -0,0 +1 @@ +../../data/example.txt as Text diff --git a/dhall/tests/import/success/unit/AsTextB.dhall b/dhall/tests/import/success/unit/AsTextB.dhall new file mode 100644 index 0000000..1997a89 --- /dev/null +++ b/dhall/tests/import/success/unit/AsTextB.dhall @@ -0,0 +1,3 @@ +'' +Hello, world! +'' diff --git a/dhall/tests/import/success/unit/EnvSetA.dhall b/dhall/tests/import/success/unit/EnvSetA.dhall new file mode 100644 index 0000000..f851f2a --- /dev/null +++ b/dhall/tests/import/success/unit/EnvSetA.dhall @@ -0,0 +1 @@ +env:DHALL_TEST_VAR diff --git a/dhall/tests/import/success/unit/EnvSetAsTextA.dhall b/dhall/tests/import/success/unit/EnvSetAsTextA.dhall new file mode 100644 index 0000000..139b241 --- /dev/null +++ b/dhall/tests/import/success/unit/EnvSetAsTextA.dhall @@ -0,0 +1 @@ +env:DHALL_TEST_VAR as Text diff --git a/dhall/tests/import/success/unit/EnvSetAsTextB.dhall b/dhall/tests/import/success/unit/EnvSetAsTextB.dhall new file mode 100644 index 0000000..192548e --- /dev/null +++ b/dhall/tests/import/success/unit/EnvSetAsTextB.dhall @@ -0,0 +1 @@ +"42" diff --git a/dhall/tests/import/success/unit/EnvSetB.dhall b/dhall/tests/import/success/unit/EnvSetB.dhall new file mode 100644 index 0000000..d81cc07 --- /dev/null +++ b/dhall/tests/import/success/unit/EnvSetB.dhall @@ -0,0 +1 @@ +42 diff --git a/dhall/tests/import/success/unit/NormalizeA.dhall b/dhall/tests/import/success/unit/NormalizeA.dhall new file mode 100644 index 0000000..2f89d08 --- /dev/null +++ b/dhall/tests/import/success/unit/NormalizeA.dhall @@ -0,0 +1 @@ +../../../../../dhall-lang/tests/normalization/success/unit/OperatorPlusOneAndOneA.dhall diff --git a/dhall/tests/import/success/unit/NormalizeB.dhall b/dhall/tests/import/success/unit/NormalizeB.dhall new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/dhall/tests/import/success/unit/NormalizeB.dhall @@ -0,0 +1 @@ +2 diff --git a/dhall/tests/import/success/unit/SimpleA.dhall b/dhall/tests/import/success/unit/SimpleA.dhall new file mode 100644 index 0000000..035ee8b --- /dev/null +++ b/dhall/tests/import/success/unit/SimpleA.dhall @@ -0,0 +1 @@ +../../data/simple.dhall diff --git a/dhall/tests/import/success/unit/SimpleB.dhall b/dhall/tests/import/success/unit/SimpleB.dhall new file mode 100644 index 0000000..00750ed --- /dev/null +++ b/dhall/tests/import/success/unit/SimpleB.dhall @@ -0,0 +1 @@ +3 diff --git a/dhall/tests/import/success/unit/SimpleRemoteA.dhall b/dhall/tests/import/success/unit/SimpleRemoteA.dhall new file mode 100644 index 0000000..30e0a79 --- /dev/null +++ b/dhall/tests/import/success/unit/SimpleRemoteA.dhall @@ -0,0 +1 @@ +https://raw.githubusercontent.com/dhall-lang/dhall-lang/0b983b92aa2222dc3e292c20550ee37dea3f41df/tests/import/data/simple.dhall diff --git a/dhall/tests/import/success/unit/SimpleRemoteB.dhall b/dhall/tests/import/success/unit/SimpleRemoteB.dhall new file mode 100644 index 0000000..00750ed --- /dev/null +++ b/dhall/tests/import/success/unit/SimpleRemoteB.dhall @@ -0,0 +1 @@ +3 diff --git a/dhall/tests/type-inference/success/CacheImportsA.dhall b/dhall/tests/type-inference/success/CacheImportsA.dhall index 3bd2bc1..7180b19 100644 --- a/dhall/tests/type-inference/success/CacheImportsA.dhall +++ b/dhall/tests/type-inference/success/CacheImportsA.dhall @@ -1 +1,6 @@ +{- + This URL returns (probably) a different result for each request. This test + ensures that import results for a given URL are correctly cached within an + execution of dhall. +-} let _ = assert : https://csrng.net/csrng/csrng.php?min=0&max=1000 as Text === https://csrng.net/csrng/csrng.php?min=0&max=1000 as Text in 0 diff --git a/dhall/tests/type-inference/success/CacheImportsCanonicalizeA.dhall b/dhall/tests/type-inference/success/CacheImportsCanonicalizeA.dhall new file mode 100644 index 0000000..e7f4dcd --- /dev/null +++ b/dhall/tests/type-inference/success/CacheImportsCanonicalizeA.dhall @@ -0,0 +1,5 @@ +{- + This URL returns (probably) a different result for each request. This test + ensures that import locations are canonicalized before being cached. +-} +let _ = assert : https://csrng.net/csrng/csrng.php?min=0&max=1000 as Text === https://csrng.net/csrng/../csrng/csrng.php?min=0&max=1000 as Text in 0 diff --git a/dhall/tests/type-inference/success/CacheImportsCanonicalizeB.dhall b/dhall/tests/type-inference/success/CacheImportsCanonicalizeB.dhall new file mode 100644 index 0000000..2f184a4 --- /dev/null +++ b/dhall/tests/type-inference/success/CacheImportsCanonicalizeB.dhall @@ -0,0 +1 @@ +Natural |