[diffoscope] 01/01: Add tests for Haskell comparator.
Chris Lamb
chris at chris-lamb.co.uk
Sat Aug 20 19:20:16 CEST 2016
This is an automated email from the git hooks/post-receive script.
lamby pushed a commit to branch master
in repository diffoscope.
commit 867ecde115c42a2398822fa08847ac89caefb678
Author: Chris Lamb <lamby at debian.org>
Date: Sat Aug 20 18:20:06 2016 +0100
Add tests for Haskell comparator.
---
debian/control | 1 +
tests/comparators/test_haskell.py | 52 +++++++++++
tests/data/haskell_expected_diff | 181 ++++++++++++++++++++++++++++++++++++++
tests/data/test1.hi | Bin 0 -> 2400 bytes
tests/data/test2.hi | Bin 0 -> 4322 bytes
5 files changed, 234 insertions(+)
diff --git a/debian/control b/debian/control
index 73c8a11..6562d04 100644
--- a/debian/control
+++ b/debian/control
@@ -18,6 +18,7 @@ Build-Depends:
dpkg-dev (>= 1.17.14),
enjarify <!nocheck>,
fp-utils <!nocheck>,
+ ghc <!nocheck>,
ghostscript <!nocheck>,
libjs-jquery <!nocheck>,
libjs-jquery-hotkeys <!nocheck>,
diff --git a/tests/comparators/test_haskell.py b/tests/comparators/test_haskell.py
new file mode 100644
index 0000000..dd5c7c7
--- /dev/null
+++ b/tests/comparators/test_haskell.py
@@ -0,0 +1,52 @@
+# -*- coding: utf-8 -*-
+#
+# diffoscope: in-depth comparison of files, archives, and directories
+#
+# Copyright © 2016 Chris Lamb <lamby at debian.org>
+#
+# diffoscope is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# diffoscope is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with diffoscope. If not, see <http://www.gnu.org/licenses/>.
+
+import pytest
+
+from diffoscope.comparators import specialize
+from diffoscope.comparators.binary import FilesystemFile
+from diffoscope.comparators.haskell import HiFile
+
+from conftest import data
+
+TEST_FILE1_PATH = data('test1.hi')
+TEST_FILE2_PATH = data('test2.hi')
+
+ at pytest.fixture
+def haskell1():
+ return specialize(FilesystemFile(TEST_FILE1_PATH))
+
+ at pytest.fixture
+def haskell2():
+ return specialize(FilesystemFile(TEST_FILE2_PATH))
+
+def test_identification(haskell1):
+ assert isinstance(haskell1, HiFile)
+
+def test_no_differences(haskell1):
+ assert haskell1.compare(haskell1) is None
+
+ at pytest.fixture
+def differences(haskell1, haskell2):
+ return haskell1.compare(haskell2).details
+
+def test_diff(differences):
+ with open(data('haskell_expected_diff')) as f:
+ expected_diff = f.read()
+ assert differences[0].unified_diff == expected_diff
diff --git a/tests/data/haskell_expected_diff b/tests/data/haskell_expected_diff
new file mode 100644
index 0000000..d0cd072
--- /dev/null
+++ b/tests/data/haskell_expected_diff
@@ -0,0 +1,181 @@
+@@ -1,77 +1,135 @@
+ Magic: Wanted 33214052,
+ got 33214052
+ Version: Wanted [7, 1, 0, 3],
+ got [7, 1, 0, 3]
+ Way: Wanted [],
+ got []
+-interface System.Posix.Time 7103
+- interface hash: d277a5ad8c17d6ae1ed9652a143dbb64
+- ABI hash: 13ab064601c4c4f5ef1423fc8da18233
+- export-list hash: 711bb4876d9099f1eb143e3fe66a16d2
++interface System.Posix.Process 7103
++ interface hash: 12bdcfb475053d7990b35af5de46f442
++ ABI hash: 3ef685f2eaa6d914f7f52f5538f2b09e
++ export-list hash: 55a2086a7d715fcf53cf370ff0da63f4
+ orphan hash: 693e9af84d3dfcc71e640e005bdc5e2e
+ flag hash: c886dac040eafa7084dbafe2ad7f03ec
+ sig of: Nothing
+ used TH splices: False
+ where
+ exports:
+- epochTime
+-module dependencies:
++ executeFile
++ createProcessGroup
++ createProcessGroupFor
++ createSession
++ exitImmediately
++ forkProcess
++ forkProcessWithUnmask
++ getAnyProcessStatus
++ getGroupProcessStatus
++ getParentProcessID
++ getProcessGroupID
++ getProcessGroupIDOf
++ getProcessGroupPriority
++ getProcessID
++ getProcessPriority
++ getProcessStatus
++ getProcessTimes
++ getUserPriority
++ joinProcessGroup
++ nice
++ setProcessGroupID
++ setProcessGroupIDOf
++ setProcessGroupPriority
++ setProcessPriority
++ setUserPriority
++ ProcessTimes{ProcessTimes childSystemTime childUserTime elapsedTime systemTime userTime}
++ ProcessStatus{Exited Stopped Terminated}
++module dependencies: System.Posix.Process.Common
++ System.Posix.Process.Internals
+ package dependencies: base-4.8.2.0* ghc-prim-0.4.0.0
+ integer-gmp-1.0.0.0
+ orphans: GHC.Base GHC.Float
+ family instance modules: Control.Applicative Data.Either
+ Data.Monoid Data.Type.Equality GHC.Generics
+ import safe Foreign ec20bd347d2cd5725d5d866b512c9fb0
+ import safe Foreign.C 94ca73eb88de01f99c0b5a7bfe575488
+ import safe Foreign.C.Error 30f6841363b6a395e68f1f8f5c074fc3
++import safe Foreign.C.String 5d9a06e6c99f36441c51b94bd49862b7
+ import safe Foreign.C.Types cbaa8f9d467b53c6af805ebf0a4c7eb3
++import safe Foreign.Marshal.Array 1d9c05d79e8226dd1629eeb79158d672
++import safe Foreign.Marshal.Utils a37afcea3b518608682246f82a22fad5
++import safe GHC.Base 1db77db5dae73d8c424c85b09fbadb89
++import safe GHC.IO bb5b81adcea33b14bd4abe16d7dde45f
+ import safe GHC.Ptr 074805932cc34cfdd9b02e273ecf4865
+ import safe Prelude 694dcaf039efe62df1c44834e2dbd2fb
+-import safe System.Posix.Types 82bc96cd72c2198e5a253a284d9e5cb4
++import safe System.Posix.Internals 2130838032da18bb25d7ac6703b445f6
+ import safe GHC.Types 6b27fb3fdbd0e3f0925a4496c66513bb
+-addDependentFile "libraries/unix/System/Posix/Time.hsc"
+-6ddb10c43e99ec0380af937ecb3f7577
+- epochTime :: IO EpochTime
+- {- Arity: 1, Strictness: <L,U>,
++import safe System.Posix.Process.Common ce7ec74b1b8650ae9bdcb5e03d762c9b
++ exports: c92acddcb4c2ba39986b2fd65a8586a9
++ ProcessTimes 6665d630382c9df3a2bddb55acba57f6
++ ProcessTimes 0affaf17820c7989e4fba99138693a34
++ childSystemTime 7b827631c75bbf3704503c30f83a7d16
++ childUserTime e1848915ccf901eb68bd2c46e25e3f6b
++ createProcessGroup b77f0351cd04f6695e5bf190d0b1e67a
++ createProcessGroupFor a656d59082f34cb00969abac835f980f
++ createSession 1bf503de2f16bbb1304ca9c8347a3b08
++ elapsedTime 0715fb8b97b2f5fd587848ec6399f5d9
++ exitImmediately 0f8691faa9f84ccf882fb6079e1bc850
++ forkProcess db5d51b57623764bab5da8f014173cf4
++ forkProcessWithUnmask 976efef4b00b423f8a916c215fa165a5
++ getAnyProcessStatus 0386a1d3c375952be95e02440c8f86dc
++ getGroupProcessStatus 88721422a74c25678e972e4dac06a553
++ getParentProcessID 8b871550c09619a6e993e747811a2e83
++ getProcessGroupID 8ba3467f585e7b39081c3560ffc47c77
++ getProcessGroupIDOf 8f9efba1b85e9df890346eec81966b29
++ getProcessGroupPriority 1cacc3fd060b7bb8b5483365b2dd7316
++ getProcessID 0d065906d3ef0c51cd4144874e04aa08
++ getProcessPriority 624a9baf17a03efd404c221f7ad0b6d8
++ getProcessStatus f1886057db898fc9aa9b661115506c3a
++ getProcessTimes cb7995302a9dc8decdfa53a6ddd22ebe
++ getUserPriority 3b5a32b477f76e6caca4962dd33fcc55
++ joinProcessGroup 599dcad0a84e1e962bc51b9d9f8034ca
++ nice 47d566f51f452178f6fb2d1e3e724a54
++ setProcessGroupID 99298359206b47288608069138fab01b
++ setProcessGroupIDOf d071d0d21fa81a37acbc5955783b20f5
++ setProcessGroupPriority d1786a3f48425010f3c35b13c1083388
++ setProcessPriority 920bba167a1618c559d966c758f472ec
++ setUserPriority 43a20bbee13c5785dc5b68e81c1525a9
++ systemTime a64003e6f309fa174eb209e13b0cf3cf
++ userTime 3fd77ea502b8ea667fd8473d5e592b0a
++import safe System.Posix.Process.Internals 89980088b0580c85034dcf05a1c28195
++ exports: a947870f47cfaa814e25a47ccbc4c4af
++ Exited 6462140fbe8a1636892378ee4774479b
++ ProcessStatus abba513cfdd5271d4a520226b3ea6109
++ Stopped abbb13b3e4b1d370cf4a3b8b7949b0c3
++ Terminated 7e4e9d8bfe554643c117eb30f7f73044
++ c_execvpe a35ec4d084a8d7d52c1d4d56474ee246
++ pPrPr_disableITimers 14838874a1ab1825e67e0a659b78f851
++addDependentFile "libraries/unix/System/Posix/Process.hsc"
++f60be828eaf7936fa01f9df5cf498e72
++ executeFile ::
++ FilePath -> Bool -> [String] -> Maybe [(String, String)] -> IO a
++ {- Arity: 5, Strictness: <L,U><L,U><L,U><S,1*U><L,U>,
+ Unfolding: InlineRule (0, True, True)
+- epochTime1 `cast` (Sym (NTCo:IO[0] <EpochTime>_R)) -}
+-b7206f53d490687980de9bd50659f4e2
+- epochTime1 :: State# RealWorld -> (# State# RealWorld, EpochTime #)
+- {- Arity: 1, Strictness: <L,U>,
+- Unfolding: (\ eta :: State# RealWorld[OneShot] ->
+- case {__pkg_ccall unix-2.7.1.0 __hsunix_time Addr#
+- -> State# RealWorld
+- -> (# State# RealWorld, Int# #)}
+- __NULL
+- eta of wild { (#,#) ds ds1 ->
+- case ds1 of wild1 {
+- DEFAULT -> (# ds, (I64# wild1) `cast` (Sym (NTCo:CTime[0])) #)
+- (-1)
+- -> case {__pkg_ccall base-4.8.2.0 __hscore_get_errno State#
+- RealWorld
+- -> (# State# RealWorld,
+- Int# #)}
+- ds of wild2 { (#,#) ds2 ds3 ->
+- raiseIO#
+- @ SomeException
+- @ EpochTime
+- ($fExceptionIOException_$ctoException
+- (errnoToIOError
+- epochTime2
+- (I32# (narrow32Int# ds3))
+- `cast`
+- (Trans (Sym (NTCo:CInt[0])) (Sym (NTCo:Errno[0])))
+- (Nothing @ Handle)
+- (Nothing @ String)))
+- ds2 } } }) -}
+-3c1c936b8c572f826419b0241c2bba67
+- epochTime2 :: [Char]
+- {- Unfolding: (unpackCString# "epochTime"#) -}
++ executeFile1
++ `cast`
++ (forall a.
++ <FilePath>_R
++ ->_R <Bool>_R
++ ->_R <[String]>_R
++ ->_R <Maybe [(String, String)]>_R
++ ->_R Sym (NTCo:IO[0] <a>_R)) -}
++90cd8a8e523c652c15601eadd256f810
++ executeFile1 ::
++ FilePath
++ -> Bool
++ -> [String]
++ -> Maybe [(String, String)]
++ -> State# RealWorld
++ -> (# State# RealWorld, a #)
++ {- Arity: 5, Strictness: <L,U><L,U><L,U><S,1*U><L,U> -}
+ vectorised variables:
+ vectorised tycons:
+ vectorised reused tycons:
+ parallel variables:
+ parallel tycons:
+ trusted: safe
+-require own pkg trusted: False
++require own pkg trusted: True
+
diff --git a/tests/data/test1.hi b/tests/data/test1.hi
new file mode 100644
index 0000000..8de1d05
Binary files /dev/null and b/tests/data/test1.hi differ
diff --git a/tests/data/test2.hi b/tests/data/test2.hi
new file mode 100644
index 0000000..779e294
Binary files /dev/null and b/tests/data/test2.hi differ
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/diffoscope.git
More information about the diffoscope
mailing list