diff --git a/cfg/lock_test.go b/cfg/lock_test.go
deleted file mode 100644
index 63c035b..0000000
--- a/cfg/lock_test.go
+++ /dev/null
@@ -1,112 +0,0 @@
-package cfg
-
-import (
-	"sort"
-	"strings"
-	"testing"
-)
-
-func TestSortLocks(t *testing.T) {
-	c, legacy, err := ConfigFromYaml([]byte(yml))
-	if err != nil {
-		t.Error("ConfigFromYaml failed to parse yaml for TestSortDependencies")
-	}
-
-	ls := make(Locks, len(c.Imports))
-	for i := 0; i < len(c.Imports); i++ {
-		ls[i] = &lLock1{
-			Name:    c.Imports[i].Name,
-			Version: c.Imports[i].Reference,
-		}
-	}
-
-	if ls[2].Name != "github.com/Masterminds/structable" {
-		t.Error("Initial dependencies are out of order prior to sort")
-	}
-
-	sort.Sort(ls)
-
-	if ls[0].Name != "github.com/kylelemons/go-gypsy" ||
-		ls[1].Name != "github.com/Masterminds/convert" ||
-		ls[2].Name != "github.com/Masterminds/cookoo" ||
-		ls[3].Name != "github.com/Masterminds/structable" {
-		t.Error("Sorting of dependencies failed")
-	}
-}
-
-const inputSubpkgYaml = `
-imports:
-- name: github.com/gogo/protobuf
-  version: 82d16f734d6d871204a3feb1a73cb220cc92574c
-  subpackages:
-  - plugin/equal
-  - sortkeys
-  - plugin/face
-  - plugin/gostring
-  - vanity
-  - plugin/grpc
-  - plugin/marshalto
-  - plugin/populate
-  - plugin/oneofcheck
-  - plugin/size
-  - plugin/stringer
-  - plugin/defaultcheck
-  - plugin/embedcheck
-  - plugin/description
-  - plugin/enumstringer
-  - gogoproto
-  - plugin/testgen
-  - plugin/union
-  - plugin/unmarshal
-  - protoc-gen-gogo/generator
-  - protoc-gen-gogo/plugin
-  - vanity/command
-  - protoc-gen-gogo/descriptor
-  - proto
-`
-const expectSubpkgYaml = `
-imports:
-- name: github.com/gogo/protobuf
-  version: 82d16f734d6d871204a3feb1a73cb220cc92574c
-  subpackages:
-  - gogoproto
-  - plugin/defaultcheck
-  - plugin/description
-  - plugin/embedcheck
-  - plugin/enumstringer
-  - plugin/equal
-  - plugin/face
-  - plugin/gostring
-  - plugin/grpc
-  - plugin/marshalto
-  - plugin/oneofcheck
-  - plugin/populate
-  - plugin/size
-  - plugin/stringer
-  - plugin/testgen
-  - plugin/union
-  - plugin/unmarshal
-  - proto
-  - protoc-gen-gogo/descriptor
-  - protoc-gen-gogo/generator
-  - protoc-gen-gogo/plugin
-  - sortkeys
-  - vanity
-  - vanity/command
-`
-
-func TestSortSubpackages(t *testing.T) {
-	lf, err := LockfileFromYaml([]byte(inputSubpkgYaml))
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	out, err := lf.Marshal()
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	if !strings.Contains(string(out), expectSubpkgYaml) {
-		t.Errorf("Expected %q\nto contain\n%q", string(out), expectSubpkgYaml)
-	}
-}
