Skip to content

Commit

Permalink
use ixset-typed
Browse files Browse the repository at this point in the history
  • Loading branch information
JPMoresmau committed Jun 11, 2015
1 parent 2bc460a commit eadb6a0
Show file tree
Hide file tree
Showing 16 changed files with 329 additions and 219 deletions.
109 changes: 60 additions & 49 deletions as-browser/as-browser.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -5,45 +5,45 @@ build-type: Simple
author: jpmoresmau
license: BSD3
license-file: LICENSE
data-files:
resources/bower_components/core-component-page/bowager-logo.png,
resources/bower_components/core-component-page/bower.json,
resources/bower_components/core-component-page/core-component-page.html,
resources/bower_components/core-component-page/demo.html,
resources/bower_components/core-component-page/index.html,
resources/bower_components/core-component-page/README.md,
resources/bower_components/polymer/bower.json,
resources/bower_components/polymer/build.log,
resources/bower_components/polymer/layout.html,
resources/bower_components/polymer/polymer.html,
resources/bower_components/polymer/polymer.js,
resources/bower_components/polymer/polymer.min.js,
resources/bower_components/polymer/README.md,
resources/bower_components/webcomponentsjs/bower.json,
resources/bower_components/webcomponentsjs/build.log,
resources/bower_components/webcomponentsjs/CustomElements.js,
resources/bower_components/webcomponentsjs/CustomElements.min.js,
resources/bower_components/webcomponentsjs/HTMLImports.js,
resources/bower_components/webcomponentsjs/HTMLImports.min.js,
resources/bower_components/webcomponentsjs/package.json,
resources/bower_components/webcomponentsjs/README.md,
resources/bower_components/webcomponentsjs/ShadowDOM.js,
resources/bower_components/webcomponentsjs/ShadowDOM.min.js,
resources/bower_components/webcomponentsjs/webcomponents-lite.js,
resources/bower_components/webcomponentsjs/webcomponents-lite.min.js,
resources/bower_components/webcomponentsjs/webcomponents.js,
resources/bower_components/webcomponentsjs/webcomponents.min.js,
data-files:
resources/bower_components/core-component-page/bowager-logo.png,
resources/bower_components/core-component-page/bower.json,
resources/bower_components/core-component-page/core-component-page.html,
resources/bower_components/core-component-page/demo.html,
resources/bower_components/core-component-page/index.html,
resources/bower_components/core-component-page/README.md,
resources/bower_components/polymer/bower.json,
resources/bower_components/polymer/build.log,
resources/bower_components/polymer/layout.html,
resources/bower_components/polymer/polymer.html,
resources/bower_components/polymer/polymer.js,
resources/bower_components/polymer/polymer.min.js,
resources/bower_components/polymer/README.md,
resources/bower_components/webcomponentsjs/bower.json,
resources/bower_components/webcomponentsjs/build.log,
resources/bower_components/webcomponentsjs/CustomElements.js,
resources/bower_components/webcomponentsjs/CustomElements.min.js,
resources/bower_components/webcomponentsjs/HTMLImports.js,
resources/bower_components/webcomponentsjs/HTMLImports.min.js,
resources/bower_components/webcomponentsjs/package.json,
resources/bower_components/webcomponentsjs/README.md,
resources/bower_components/webcomponentsjs/ShadowDOM.js,
resources/bower_components/webcomponentsjs/ShadowDOM.min.js,
resources/bower_components/webcomponentsjs/webcomponents-lite.js,
resources/bower_components/webcomponentsjs/webcomponents-lite.min.js,
resources/bower_components/webcomponentsjs/webcomponents.js,
resources/bower_components/webcomponentsjs/webcomponents.min.js,
resources/bower.json

library
hs-source-dirs: src
build-depends:
build-depends:
base >= 4,
directory,
filepath,
safecopy,
acid-state,
ixset,
ixset-typed,
text,
Cabal,
time,
Expand All @@ -59,30 +59,33 @@ library
parallel-io,
containers,
aeson,
network-uri
network-uri,
xml-conduit,
html-conduit
ghc-options: -Wall -O2
other-modules:
other-modules:
Language.Haskell.ASBrowser.Types,
Language.Haskell.ASBrowser.Operations.Packages,
Language.Haskell.ASBrowser.Utils,
Language.Haskell.ASBrowser.Database,
Language.Haskell.ASBrowser.Operations.Modules,
Language.Haskell.ASBrowser.Integration.Cabal,
Language.Haskell.ASBrowser.Integration.Files,
Language.Haskell.ASBrowser.Operations.Components
Language.Haskell.ASBrowser.Operations.Components,
Language.Haskell.ASBrowser.Integration.Src
exposed-modules: Language.Haskell.AsBrowser

executable as-browser
hs-source-dirs: exe
main-is: Main.hs
build-depends:
build-depends:
base >= 4,
as-browser,
directory,
filepath,
safecopy,
acid-state,
ixset,
ixset-typed,
text,
Cabal,
time,
Expand All @@ -104,14 +107,16 @@ executable as-browser
snap,
lens,
transformers,
network-uri
network-uri,
xml-conduit,
html-conduit
ghc-options: -Wall -rtsopts -threaded -O2

test-suite as-browser-test
type: exitcode-stdio-1.0
main-is: as-browser-test.hs
ghc-options: -Wall -rtsopts -threaded -O2
build-depends:
build-depends:
base >= 4,
tasty > 0.10,
tasty-hunit,
Expand All @@ -121,7 +126,7 @@ test-suite as-browser-test
HUnit,
Cabal,
acid-state,
ixset,
ixset-typed,
safecopy,
text,
time,
Expand All @@ -140,8 +145,10 @@ test-suite as-browser-test
containers,
aeson,
attoparsec,
network-uri
other-modules:
network-uri,
xml-conduit,
html-conduit
other-modules:
Language.Haskell.ASBrowser.Operations.Packages,
Language.Haskell.ASBrowser.Operations.PackagesTest,
Language.Haskell.ASBrowser.Utils,
Expand All @@ -156,16 +163,18 @@ test-suite as-browser-test
Language.Haskell.ASBrowser.TypesTest,
Language.Haskell.ASBrowser.Operations.Components,
Language.Haskell.ASBrowser.Operations.ComponentsTest,
Language.Haskell.AsBrowser
hs-source-dirs:
Language.Haskell.AsBrowser,
Language.Haskell.ASBrowser.Integration.Src,
Language.Haskell.ASBrowser.Integration.SrcTest
hs-source-dirs:
test,
src

test-suite as-browser-integration
type: exitcode-stdio-1.0
main-is: as-browser-integration.hs
ghc-options: -Wall -rtsopts -threaded -O2
build-depends:
build-depends:
base >= 4,
tasty > 0.10,
tasty-hunit,
Expand All @@ -175,7 +184,7 @@ test-suite as-browser-integration
Cabal,
safecopy,
acid-state,
ixset,
ixset-typed,
text,
time,
data-default,
Expand All @@ -190,8 +199,10 @@ test-suite as-browser-integration
parallel-io,
containers,
aeson,
network-uri
other-modules:
network-uri,
xml-conduit,
html-conduit
other-modules:
Language.Haskell.ASBrowser.Operations.Packages,
Language.Haskell.ASBrowser.Utils,
Language.Haskell.ASBrowser.Database,
Expand All @@ -201,8 +212,8 @@ test-suite as-browser-integration
Language.Haskell.ASBrowser.Integration.CabalTest,
Language.Haskell.ASBrowser.TestHarness,
Language.Haskell.ASBrowser.Operations.Components,
Language.Haskell.AsBrowser
hs-source-dirs:
Language.Haskell.AsBrowser,
Language.Haskell.ASBrowser.Integration.Src
hs-source-dirs:
src,
integration

15 changes: 8 additions & 7 deletions as-browser/exe/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import Control.Monad.IO.Class
import System.Directory
import System.FilePath
import Control.Concurrent
import Data.IxSet (toList)
import Data.IxSet.Typed (toList)

dataDir :: IO FilePath
dataDir = liftM (</> "resources") getDataDir
Expand All @@ -36,22 +36,22 @@ dbDir = liftM (</> "db") getDataDir

logDir :: IO FilePath
logDir = liftM (</> "log") getDataDir
data App = App

data App = App
{ _acid :: Snaplet (Acid Database)
}

makeLenses ''App

instance HasAcid App Database where
getAcidStore = view (acid . snapletValue)


appInit :: AcidState Database -> SnapletInit App App
appInit st = makeSnaplet "as-browser" "ASBrowser Snap app" (Just dataDir) $ do
onUnload (A.closeAcidState st)
ac <- nestSnaplet "asb" acid $ acidInitManual st
addRoutes
addRoutes
[ ("/json/packages", with acid packagesH)
, ("/json/modules", with acid modulesH)
, ("/static/", serveDirectory "resources")
Expand All @@ -62,6 +62,7 @@ packagesH :: Handler App (Acid Database) ()
packagesH = method GET $
writeJSON =<< onlyLastVersions <$> query AllPackages


modulesH :: Handler App (Acid Database) ()
modulesH = do
mkey <- getJSONParam "key"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,19 @@ import Data.Acid
import Test.Tasty
import Test.Tasty.HUnit
import Data.Maybe
import Data.IxSet
import Data.IxSet.Typed
import Control.Monad

cabalTests :: TestTree
cabalTests = testGroup "Cabal Tests"
[ testCase "updateFromCabal" $
cabalTests = testGroup "Cabal Tests"
[ testCase "updateFromCabal" $
withTestAcid $ \acid -> do
updateFromCabal acid
let pkgAcid=PackageKey "acid-state" "0.12.3" Packaged
mpkg1 <- query acid $ GetPackage pkgAcid
isJust mpkg1 @? "acid-state 0.12.3 not found"
let url = pkgDocURL $ fromJust mpkg1
url @?= (Just $ URL "http://hackage.haskell.org/package/acid-state-0.12.3")
url @?= (Just $ URL "http://hackage.haskell.org/package/acid-state-0.12.3")
mpkg2 <- query acid $ GetLatest "acid-state"
isJust mpkg2 @? "acid-state latest not found"
cpnts <- query acid $ ListComponents $ pkgKey $ fromJust mpkg2
Expand All @@ -35,9 +35,9 @@ cabalTests = testGroup "Cabal Tests"
size mods > 0 @? "no modules for acid-state library"
let dam = filter (("Data.Acid" ==) . modName . modKey) $ toList mods
assertEqual "not 1 Data.Acid module" 1 (length dam)
modComponents (head dam) @?= [ModuleInclusion "" Exposed]
modURLs (head dam) @?= URLs (Just $ URL "docs/src/Data-Acid.html") (Just $ URL "docs/Data-Acid.html")
modComponents (head dam) @?= [ModuleInclusion "" Exposed Nothing]
modURLs (head dam) @?= URLs (Just $ URL "http://hackage.haskell.org/package/acid-state-0.12.4/docs/src/Data-Acid.html") (Just $ URL "http://hackage.haskell.org/package/acid-state-0.12.4/docs/Data-Acid.html")
allPkgs <- liftM onlyLastVersions $ query acid $ ListByLocal Packaged
let l=length allPkgs
l >= 7793 && l < 9000 @? "wrong number of packages: " ++ show l
]
]
Loading

0 comments on commit eadb6a0

Please sign in to comment.