diff --git a/hpack-convert.cabal b/hpack-convert.cabal
--- a/hpack-convert.cabal
+++ b/hpack-convert.cabal
@@ -3,7 +3,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           hpack-convert
-version:        0.14.5
+version:        0.14.6
 synopsis:       Convert Cabal manifests into hpack's package.yamls
 category:       Development
 homepage:       https://github.com/yamadapc/hpack-convert#readme
@@ -33,8 +33,12 @@
     ./test/data/cabal-init-with-conditionals-buildable5.cabal.yaml
     ./test/data/cabal-init-with-conditionals.cabal
     ./test/data/cabal-init-with-conditionals.cabal.yaml
+    ./test/data/cabal-init-with-dot.cabal
+    ./test/data/cabal-init-with-dot.cabal.yaml
     ./test/data/cabal-init-with-executables.cabal
     ./test/data/cabal-init-with-executables.cabal.yaml
+    ./test/data/cabal-init-with-tested-with.cabal
+    ./test/data/cabal-init-with-tested-with.cabal.yaml
     ./test/data/cabal-init-with-tests.cabal
     ./test/data/cabal-init-with-tests.cabal.yaml
     ./test/data/ChangeLog.md
diff --git a/src/Hpack/Config.hs b/src/Hpack/Config.hs
--- a/src/Hpack/Config.hs
+++ b/src/Hpack/Config.hs
@@ -11,6 +11,8 @@
 #endif
 {-# LANGUAGE OverloadedLists #-}
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE OverloadedLists #-}
+{-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE UndecidableInstances #-}
diff --git a/src/Hpack/Convert.hs b/src/Hpack/Convert.hs
--- a/src/Hpack/Convert.hs
+++ b/src/Hpack/Convert.hs
@@ -1,22 +1,24 @@
-{-# LANGUAGE NamedFieldPuns #-}
-{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE NamedFieldPuns  #-}
+{-# LANGUAGE RankNTypes      #-}
 {-# LANGUAGE RecordWildCards #-}
 module Hpack.Convert where
 
-import           Prelude ()
+import           Data.Char
+import           Data.Monoid
+import           Prelude                               ()
 import           Prelude.Compat
 
 import           Data.Maybe
-import qualified Data.Version as Version
-import qualified Distribution.Compiler as Compiler
-import qualified Distribution.InstalledPackageInfo as Cabal
-import qualified Distribution.Package as Cabal
-import qualified Distribution.PackageDescription as Cabal
+import qualified Data.Version                          as Version
+import qualified Distribution.Compiler                 as Compiler
+import qualified Distribution.InstalledPackageInfo     as Cabal
+import qualified Distribution.Package                  as Cabal
+import qualified Distribution.PackageDescription       as Cabal
 import qualified Distribution.PackageDescription.Parse as Cabal
-import qualified Distribution.Text as Cabal
-import qualified Distribution.Version as Cabal
-import           Hpack.Config  hiding (package)
-import           Text.PrettyPrint (fsep, (<+>))
+import qualified Distribution.Text                     as Cabal
+import qualified Distribution.Version                  as Cabal
+import           Hpack.Config                          hiding (package)
+import           Text.PrettyPrint                      (fsep, (<+>))
 
 -- * Public API
 
@@ -40,8 +42,9 @@
             , packageLicense = Just (show (Cabal.disp license))
             , packageLicenseFile = listToMaybe licenseFiles
             , packageTestedWith =
+                    map toUpper .
                     show .
-                    fsep . map (\(f, vr) -> Cabal.disp f <+> Cabal.disp vr ) <$>
+                    fsep . map (\(f, vr) -> Cabal.disp f <> Cabal.disp vr ) <$>
                     nullNothing testedWith
             , packageFlags =
                     map (\Cabal.MkFlag{..} ->
@@ -85,7 +88,7 @@
     -- (
     Just SourceRepository { sourceRepositoryUrl = fromMaybe "" repoLocation
                           -- TODO - this is broken (?)
-                          , sourceRepositorySubdir = repoSubdir
+                          , sourceRepositorySubdir = fmap processDir repoSubdir
                           }
     -- TODO - Warnings
     -- , case repoLocation of
@@ -191,7 +194,7 @@
 sectionWithBuildInfo :: a -> Cabal.BuildInfo -> Section a
 sectionWithBuildInfo d Cabal.BuildInfo{..} =
     Section { sectionData = d
-            , sectionSourceDirs = hsSourceDirs
+            , sectionSourceDirs = processDirs hsSourceDirs
             , sectionDependencies = map fromDependency targetBuildDepends
             , sectionDefaultExtensions = map (show . Cabal.disp)
                                              defaultExtensions
@@ -203,9 +206,9 @@
             , sectionCppOptions = cppOptions
             , sectionCCOptions = ccOptions
             , sectionCSources = cSources
-            , sectionExtraLibDirs = extraLibDirs
+            , sectionExtraLibDirs = processDirs extraLibDirs
             , sectionExtraLibraries = extraLibs
-            , sectionIncludeDirs = includeDirs
+            , sectionIncludeDirs = processDirs includeDirs
             , sectionInstallIncludes = installIncludes
             , sectionLdOptions = ldOptions
             , sectionBuildable = Just buildable
@@ -264,3 +267,13 @@
 -- Just [1, 2, 3]
 nullNothing :: [a] -> Maybe [a]
 nullNothing s = const s <$> listToMaybe s
+
+processDirs :: [String] -> [String]
+processDirs = map processDir
+
+-- | Replaces @.@ with @./.@
+--
+-- See https://github.com/sol/hpack/issues/119
+processDir :: String -> String
+processDir "." = "./."
+processDir d = d
diff --git a/src/Hpack/Util.hs b/src/Hpack/Util.hs
--- a/src/Hpack/Util.hs
+++ b/src/Hpack/Util.hs
@@ -73,7 +73,7 @@
 toModule path = case reverse path of
   [] -> Nothing
   x : xs -> do
-    m <- stripSuffix ".hs" x <|> stripSuffix ".lhs" x
+    m <- stripSuffix ".hs" x <|> stripSuffix ".lhs" x <|> stripSuffix ".hsc" x
     let name = reverse (m : xs)
     guard (isModule name) >> return (intercalate "." name)
   where
diff --git a/test/Hpack/ConfigSpec.hs b/test/Hpack/ConfigSpec.hs
--- a/test/Hpack/ConfigSpec.hs
+++ b/test/Hpack/ConfigSpec.hs
@@ -813,10 +813,8 @@
           (do
           touch "src/Main.hs"
           touch "src/Foo.hs"
-          touch "src/Bar.hs"
-          touch "src/Baz.lhs"
           )
-          (map (executableOtherModules . sectionData) . packageExecutables >>> (`shouldBe` [["Bar", "Baz", "Foo"]]))
+          (map (executableOtherModules . sectionData) . packageExecutables >>> (`shouldBe` [["Foo"]]))
 
       it "allows to specify other-modules" $ do
         withPackageConfig [i|
@@ -993,7 +991,7 @@
               foo:
                 ain: driver/Main.hs
             |]
-          readPackageConfig file `shouldReturn` Left (file ++ ": Error in $.executables.foo: failed to parse field executables: The key \"main\" was not found")
+          readPackageConfig file >>= (`shouldSatisfy` isLeft)
 
       context "when package.yaml does not exist" $ do
         it "returns an error" $ \dir -> do
diff --git a/test/Hpack/UtilSpec.hs b/test/Hpack/UtilSpec.hs
--- a/test/Hpack/UtilSpec.hs
+++ b/test/Hpack/UtilSpec.hs
@@ -37,8 +37,14 @@
       parseMain "Foo.bar" `shouldBe` ("Foo.hs", ["-main-is Foo.bar"])
 
   describe "toModule" $ do
-    it "maps paths to module names" $ do
-      toModule ["Foo", "Bar", "Baz.hs"] `shouldBe` Just "Foo.Bar.Baz"
+    it "maps .hs paths to module names" $ do
+      toModule ["Foo", "Bar", "Baz.hs"]  `shouldBe` Just "Foo.Bar.Baz"
+
+    it "maps .lhs paths to module names" $ do
+      toModule ["Foo", "Bar", "Baz.lhs"] `shouldBe` Just "Foo.Bar.Baz"
+
+    it "maps .hsc paths to module names" $ do
+      toModule ["Foo", "Bar", "Baz.hsc"] `shouldBe` Just "Foo.Bar.Baz"
 
     it "rejects invalid module names" $ do
       toModule ["resources", "hello.hs"] `shouldBe` Nothing
diff --git a/test/data/cabal-init-with-dot.cabal b/test/data/cabal-init-with-dot.cabal
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-dot.cabal
@@ -0,0 +1,13 @@
+name:                cabal-init-minimal
+version:             0.1.0.0
+license:             PublicDomain
+author:              Pedro Tacla Yamada
+maintainer:          tacla.yamada@gmail.com
+build-type:          Simple
+extra-source-files:  ChangeLog.md
+cabal-version:       >=1.10
+
+library
+  build-depends:       base >=4.8 && <4.9
+  hs-source-dirs:      .
+  default-language:    Haskell2010
diff --git a/test/data/cabal-init-with-dot.cabal.yaml b/test/data/cabal-init-with-dot.cabal.yaml
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-dot.cabal.yaml
@@ -0,0 +1,11 @@
+name: cabal-init-minimal
+version: '0.1.0.0'
+author: Pedro Tacla Yamada
+maintainer: tacla.yamada@gmail.com
+license: PublicDomain
+extra-source-files:
+- ChangeLog.md
+dependencies:
+- base >=4.8 && <4.9
+library:
+  source-dirs: ./.
diff --git a/test/data/cabal-init-with-tested-with.cabal b/test/data/cabal-init-with-tested-with.cabal
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-tested-with.cabal
@@ -0,0 +1,14 @@
+name:                cabal-init-minimal
+version:             0.1.0.0
+license:             PublicDomain
+author:              Pedro Tacla Yamada
+maintainer:          tacla.yamada@gmail.com
+build-type:          Simple
+extra-source-files:  ChangeLog.md
+cabal-version:       >=1.10
+tested-with:        GHC==8.0.1, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
+
+library
+  build-depends:       base >=4.8 && <4.9
+  hs-source-dirs:      src
+  default-language:    Haskell2010
diff --git a/test/data/cabal-init-with-tested-with.cabal.yaml b/test/data/cabal-init-with-tested-with.cabal.yaml
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-tested-with.cabal.yaml
@@ -0,0 +1,12 @@
+name: cabal-init-minimal
+version: '0.1.0.0'
+author: Pedro Tacla Yamada
+maintainer: tacla.yamada@gmail.com
+license: PublicDomain
+tested-with: GHC==8.0.1 GHC==7.10.3 GHC==7.8.4 GHC==7.6.3 GHC==7.4.2
+extra-source-files:
+- ChangeLog.md
+dependencies:
+- base >=4.8 && <4.9
+library:
+  source-dirs: src
