From 251b378fd8d93ea625a739cde06675e2bbc32c2c Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Sun, 5 Apr 2020 21:34:10 +0100 Subject: Add semantic-hash tests --- dhall/src/tests.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'dhall/src/tests.rs') diff --git a/dhall/src/tests.rs b/dhall/src/tests.rs index 2cd354f..a194c9a 100644 --- a/dhall/src/tests.rs +++ b/dhall/src/tests.rs @@ -63,6 +63,7 @@ enum Test { BinaryDecodingFailure(TestFile, TestFile), ImportSuccess(TestFile, TestFile), ImportFailure(TestFile, TestFile), + SemanticHash(TestFile, TestFile), TypeInferenceSuccess(TestFile, TestFile), TypeInferenceFailure(TestFile, TestFile), Normalization(TestFile, TestFile), @@ -132,7 +133,7 @@ impl TestFile { fn write_ui(&self, x: impl Display) -> Result<()> { match self { TestFile::UI(_) => {} - _ => panic!("Can't write an error to a non-UI file"), + _ => panic!("Can't write a ui string to a dhall file"), } let path = self.path(); create_dir_all(path.parent().unwrap())?; @@ -302,6 +303,15 @@ fn run_test(test: Test) -> Result<()> { let err = expr.resolve().unwrap_err(); expected.compare_ui(err)?; } + SemanticHash(expr, expected) => { + use sha2::Digest; + let expr = expr.normalize()?.to_expr_alpha(); + dbg!(&expr); + let expr_data = binary::encode(&expr)?; + let hash = sha2::Sha256::digest(&expr_data); + let hash = hex::encode(hash); + expected.compare_ui(format!("sha256:{}", hash))?; + } TypeInferenceSuccess(expr, expected) => { let ty = expr.typecheck()?.get_type()?; expected.compare(ty)?; -- cgit v1.2.3 From fc965361346461fbd52bb132caa874778d9fe913 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Sun, 5 Apr 2020 22:40:02 +0100 Subject: Check code hashes in import --- dhall/src/tests.rs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'dhall/src/tests.rs') diff --git a/dhall/src/tests.rs b/dhall/src/tests.rs index a194c9a..5bcdb1c 100644 --- a/dhall/src/tests.rs +++ b/dhall/src/tests.rs @@ -304,12 +304,8 @@ fn run_test(test: Test) -> Result<()> { expected.compare_ui(err)?; } SemanticHash(expr, expected) => { - use sha2::Digest; let expr = expr.normalize()?.to_expr_alpha(); - dbg!(&expr); - let expr_data = binary::encode(&expr)?; - let hash = sha2::Sha256::digest(&expr_data); - let hash = hex::encode(hash); + let hash = hex::encode(expr.hash()?); expected.compare_ui(format!("sha256:{}", hash))?; } TypeInferenceSuccess(expr, expected) => { -- cgit v1.2.3