use stretcher/testify instead of juju/testing
diff --git a/Gopkg.lock b/Gopkg.lock
index 178f6e2..6edcfa0 100644
--- a/Gopkg.lock
+++ b/Gopkg.lock
@@ -2,39 +2,22 @@
 
 
 [[projects]]
-  name = "github.com/juju/errors"
-  packages = ["."]
-  revision = "1b5e39b83d1835fa480e0c2ddefb040ee82d58b3"
+  name = "github.com/davecgh/go-spew"
+  packages = ["spew"]
+  revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73"
+  version = "v1.1.1"
 
 [[projects]]
-  name = "github.com/juju/loggo"
-  packages = ["."]
-  revision = "0e0537f18a29c2f0a814dad75b1ccc577852538a"
+  name = "github.com/pmezard/go-difflib"
+  packages = ["difflib"]
+  revision = "792786c7400a136282c1664665ae0a8db921c6c2"
+  version = "v1.0.0"
 
 [[projects]]
-  name = "github.com/juju/testing"
-  packages = [".","checkers"]
-  revision = "321edad6b2d1ccac4af9ee05c25b8ad734d40546"
-
-[[projects]]
-  name = "github.com/juju/utils"
-  packages = [".","clock"]
-  revision = "bdb77b07e7e3f77463d10d2b554cd1b7a78009a2"
-
-[[projects]]
-  name = "golang.org/x/crypto"
-  packages = ["pbkdf2"]
-  revision = "351dc6a5bf92a5f2ae22fadeee08eb6a45aa2d93"
-
-[[projects]]
-  name = "gopkg.in/check.v1"
-  packages = ["."]
-  revision = "4f90aeace3a26ad7021961c297b22c42160c7b25"
-
-[[projects]]
-  name = "gopkg.in/mgo.v2"
-  packages = [".","bson","internal/sasl","internal/scram"]
-  revision = "01ee097136da162d1dd3c9b44fbdf3abf4fd6552"
+  name = "github.com/stretchr/testify"
+  packages = ["assert","require"]
+  revision = "221dbe5ed46703ee255b1da0dec05086f5035f62"
+  version = "v1.4.0"
 
 [[projects]]
   name = "gopkg.in/yaml.v2"
@@ -44,6 +27,6 @@
 [solve-meta]
   analyzer-name = "dep"
   analyzer-version = 1
-  inputs-digest = "029189b0eedf6c5b686fae586bc1ad03386ed2d6b4712b6a866115c95ce0cb42"
+  inputs-digest = "4e74844cc0163f383b0d0bb6c97ad78dc4df008646534aa3a288fd8af1831c7e"
   solver-name = "gps-cdcl"
   solver-version = 1
diff --git a/diffparser.go b/diffparser.go
index 57eb41e..385648c 100644
--- a/diffparser.go
+++ b/diffparser.go
@@ -23,6 +23,7 @@
 	NEW
 )
 
+// DiffRange contains the DiffLine's
 type DiffRange struct {
 
 	// starting line number
@@ -72,7 +73,7 @@
 	Hunks      []*DiffHunk
 }
 
-//Diff is the collection of DiffFiles
+// Diff is the collection of DiffFiles
 type Diff struct {
 	Files []*DiffFile
 	Raw   string `sql:"type:text"`
diff --git a/diffparser_test.go b/diffparser_test.go
index ea9839b..75aeca1 100644
--- a/diffparser_test.go
+++ b/diffparser_test.go
@@ -1,135 +1,118 @@
 // Copyright (c) 2015 Jesse Meek <https://github.com/waigani>
 // This program is Free Software see LICENSE file for details.
 
-package diffparser_test
+package diffparser
 
 import (
 	"io/ioutil"
 	"testing"
 
-	jt "github.com/juju/testing"
-	jc "github.com/juju/testing/checkers"
-	"github.com/waigani/diffparser"
-	gc "gopkg.in/check.v1"
+	"github.com/stretchr/testify/require"
 )
 
-func Test(t *testing.T) {
-	gc.TestingT(t)
-}
-
-type suite struct {
-	jt.CleanupSuite
-	rawdiff string
-	diff    *diffparser.Diff
-}
-
-var _ = gc.Suite(&suite{})
-
-func (s *suite) SetUpSuite(c *gc.C) {
-	byt, err := ioutil.ReadFile("example.diff")
-	c.Assert(err, jc.ErrorIsNil)
-	s.rawdiff = string(byt)
-}
-
 // TODO(waigani) tests are missing more creative names (spaces, special
 // chars), and diffed files that are not in the current directory.
 
-func (s *suite) TestFileModeAndNaming(c *gc.C) {
-	diff, err := diffparser.Parse(s.rawdiff)
-	c.Assert(err, jc.ErrorIsNil)
-	c.Assert(diff.Files, gc.HasLen, 6)
+func setup(t *testing.T) *Diff {
+	byt, err := ioutil.ReadFile("example.diff")
+	require.NoError(t, err)
 
+	diff, err := Parse(string(byt))
+	require.NoError(t, err)
+	require.Equal(t, len(diff.Files), 6)
+
+	return diff
+}
+func TestFileModeAndNaming(t *testing.T) {
+	diff := setup(t)
 	for i, expected := range []struct {
-		mode     diffparser.FileMode
+		mode     FileMode
 		origName string
 		newName  string
 	}{
 		{
-			mode:     diffparser.MODIFIED,
+			mode:     MODIFIED,
 			origName: "file1",
 			newName:  "file1",
 		},
 		{
-			mode:     diffparser.DELETED,
+			mode:     DELETED,
 			origName: "file2",
 			newName:  "",
 		},
 		{
-			mode:     diffparser.DELETED,
+			mode:     DELETED,
 			origName: "file3",
 			newName:  "",
 		},
 		{
-			mode:     diffparser.NEW,
+			mode:     NEW,
 			origName: "",
 			newName:  "file4",
 		},
 		{
-			mode:     diffparser.NEW,
+			mode:     NEW,
 			origName: "",
 			newName:  "newname",
 		},
 		{
-			mode:     diffparser.DELETED,
+			mode:     DELETED,
 			origName: "symlink",
 			newName:  "",
 		},
 	} {
 		file := diff.Files[i]
-		c.Logf("testing file: %v", file)
-		c.Assert(file.Mode, gc.Equals, expected.mode)
-		c.Assert(file.OrigName, gc.Equals, expected.origName)
-		c.Assert(file.NewName, gc.Equals, expected.newName)
+		t.Logf("testing file: %v", file)
+		require.Equal(t, expected.mode, file.Mode)
+		require.Equal(t, expected.origName, file.OrigName)
+		require.Equal(t, expected.newName, file.NewName)
 	}
 }
 
-func (s *suite) TestHunk(c *gc.C) {
-	diff, err := diffparser.Parse(s.rawdiff)
-	c.Assert(err, jc.ErrorIsNil)
-	c.Assert(diff.Files, gc.HasLen, 6)
-
-	expectedOrigLines := []diffparser.DiffLine{
+func TestHunk(t *testing.T) {
+	diff := setup(t)
+	expectedOrigLines := []DiffLine{
 		{
-			Mode:     diffparser.UNCHANGED,
+			Mode:     UNCHANGED,
 			Number:   1,
 			Content:  "some",
 			Position: 2,
 		}, {
-			Mode:     diffparser.UNCHANGED,
+			Mode:     UNCHANGED,
 			Number:   2,
 			Content:  "lines",
 			Position: 3,
 		}, {
-			Mode:     diffparser.REMOVED,
+			Mode:     REMOVED,
 			Number:   3,
 			Content:  "in",
 			Position: 4,
 		}, {
-			Mode:     diffparser.UNCHANGED,
+			Mode:     UNCHANGED,
 			Number:   4,
 			Content:  "file1",
 			Position: 5,
 		},
 	}
 
-	expectedNewLines := []diffparser.DiffLine{
+	expectedNewLines := []DiffLine{
 		{
-			Mode:     diffparser.ADDED,
+			Mode:     ADDED,
 			Number:   1,
 			Content:  "add a line",
 			Position: 1,
 		}, {
-			Mode:     diffparser.UNCHANGED,
+			Mode:     UNCHANGED,
 			Number:   2,
 			Content:  "some",
 			Position: 2,
 		}, {
-			Mode:     diffparser.UNCHANGED,
+			Mode:     UNCHANGED,
 			Number:   3,
 			Content:  "lines",
 			Position: 3,
 		}, {
-			Mode:     diffparser.UNCHANGED,
+			Mode:     UNCHANGED,
 			Number:   4,
 			Content:  "file1",
 			Position: 5,
@@ -140,15 +123,15 @@
 	origRange := file.Hunks[0].OrigRange
 	newRange := file.Hunks[0].NewRange
 
-	c.Assert(origRange.Start, gc.Equals, 1)
-	c.Assert(origRange.Length, gc.Equals, 4)
-	c.Assert(newRange.Start, gc.Equals, 1)
-	c.Assert(newRange.Length, gc.Equals, 4)
+	require.Equal(t, 1, origRange.Start)
+	require.Equal(t, 4, origRange.Length)
+	require.Equal(t, 1, newRange.Start)
+	require.Equal(t, 4, newRange.Length)
 
 	for i, line := range expectedOrigLines {
-		c.Assert(*origRange.Lines[i], gc.DeepEquals, line)
+		require.Equal(t, line, *origRange.Lines[i])
 	}
 	for i, line := range expectedNewLines {
-		c.Assert(*newRange.Lines[i], gc.DeepEquals, line)
+		require.Equal(t, line, *newRange.Lines[i])
 	}
 }
diff --git a/go.mod b/go.mod
index a938c2e..67d0b2d 100644
--- a/go.mod
+++ b/go.mod
@@ -3,12 +3,8 @@
 go 1.12
 
 require (
-	github.com/juju/errors v0.0.0-20150916125642-1b5e39b83d18
-	github.com/juju/loggo v0.0.0-20160511211902-0e0537f18a29
-	github.com/juju/testing v0.0.0-20160203233110-321edad6b2d1
-	github.com/juju/utils v0.0.0-20160815113839-bdb77b07e7e3
-	golang.org/x/crypto v0.0.0-20160824173033-351dc6a5bf92
-	gopkg.in/check.v1 v1.0.0-20160105164936-4f90aeace3a2
-	gopkg.in/mgo.v2 v2.0.0-20150529124711-01ee097136da
-	gopkg.in/yaml.v2 v2.0.0-20160715033755-e4d366fc3c79
+	github.com/davecgh/go-spew v1.1.1
+	github.com/pmezard/go-difflib v1.0.0
+	github.com/stretchr/testify v1.4.0
+	gopkg.in/yaml.v2 v2.2.2
 )
diff --git a/go.sum b/go.sum
index cc56c14..6369a51 100644
--- a/go.sum
+++ b/go.sum
@@ -1,16 +1,12 @@
-github.com/juju/errors v0.0.0-20150916125642-1b5e39b83d18 h1:Sem5Flzxj8ZdAgY2wfHBUlOYyP4wrpIfM8IZgANNGh8=
-github.com/juju/errors v0.0.0-20150916125642-1b5e39b83d18/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q=
-github.com/juju/loggo v0.0.0-20160511211902-0e0537f18a29 h1:wXuXWz7gZy8UQSiFy34IhHOdeV45qSO4fAG3p0DrRRA=
-github.com/juju/loggo v0.0.0-20160511211902-0e0537f18a29/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U=
-github.com/juju/testing v0.0.0-20160203233110-321edad6b2d1 h1:0WbpCsj5kC5p6YSWl0Y6THSMeD2eTCx2rLKYQ7/3aS4=
-github.com/juju/testing v0.0.0-20160203233110-321edad6b2d1/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA=
-github.com/juju/utils v0.0.0-20160815113839-bdb77b07e7e3 h1:UmZwEQJiCr97I7qMfUB9VqS2BzRNQXx4VuAoHIfTQyA=
-github.com/juju/utils v0.0.0-20160815113839-bdb77b07e7e3/go.mod h1:6/KLg8Wz/y2KVGWEpkK9vMNGkOnu4k/cqs8Z1fKjTOk=
-golang.org/x/crypto v0.0.0-20160824173033-351dc6a5bf92 h1:6HmDSTSU7PVgeKBom4W04S2VmgzLOtZlfUiJuF+txm4=
-golang.org/x/crypto v0.0.0-20160824173033-351dc6a5bf92/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-gopkg.in/check.v1 v1.0.0-20160105164936-4f90aeace3a2 h1:+j1SppRob9bAgoYmsdW9NNBdKZfgYuWpqnYHv78Qt8w=
-gopkg.in/check.v1 v1.0.0-20160105164936-4f90aeace3a2/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/mgo.v2 v2.0.0-20150529124711-01ee097136da h1:k2jXxOPVI4OLmisXza2wym08Pz6x+ky/f71oJBuA8zg=
-gopkg.in/mgo.v2 v2.0.0-20150529124711-01ee097136da/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
-gopkg.in/yaml.v2 v2.0.0-20160715033755-e4d366fc3c79 h1:mENkfeXGmLV7lIyBeNdwYWdONek7pH9yHaHMgZyvIWE=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v2 v2.0.0-20160715033755-e4d366fc3c79/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
+gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=