Verwenden des Go 1.2-Cover-Tools mit GVM

8

Ich verwende GVM, um meine Go-Installationen und Pfade zu verwalten, und alles scheint gut zu funktionieren - ich kann Tests ausführen und Builds erstellen. Ich versuche jetzt, eine Coverage-Datei zu erstellen und habe einige Schwierigkeiten.

Mein Paket ist in /home/bill/dev/server/model definiert.

Wenn ich renne:

%Vor%

Die Tests werden erfolgreich ausgeführt und eine Coverage-Datei wird erstellt. Die Pfade in der Coverage-Datei sehen jedoch so aus:

_/home/bill/dev/server/model/activity.go:19.34,21.2 1 1

Und ich bekomme den folgenden Fehler, wenn ich versuche, eine HTML-Cover-Datei zu erstellen:

%Vor%

Wie behebe ich das?

Zusätzliche Details

%Vor%

Ich habe versucht, meinen $ GOPATH manuell einzustellen, aber das hat die cover.out-Datei nicht geändert. Ich habe auch versucht, die cover.out-Datei manuell zu bearbeiten, aber ich kann nicht herausfinden, welche Pfade es eigentlich will. In der oben gezeigten Standardkonfiguration läuft go test wie erwartet.

Versuch, GOPATH zu reparieren

%Vor%

Dies sind zusätzliche Abhängigkeiten, die ich zuvor mit go get heruntergeladen habe. Sie landen in /home/bill/.gvm/pkgsets/go1.2/global/src, auf die der $ GOPATH zeigt. Also änderte ich GOPATH

%Vor%

Damit die Tests erneut ausgeführt werden, enthält die Datei cover.out immer noch die gleichen Verzeichnisse und gibt mir immer noch den gleichen Fehler.

    
Bill 16.01.2014, 23:06
quelle

4 Antworten

9

Ich hatte das gleiche Problem vor einem Monat. Ich löste es mit den folgenden Schritten.

Mein Paketname heißt alpaca

Mein Arbeitsverzeichnis (Code) ist /home/pksunkara/coding/alpaca

%Vor%

Um das Problem zu beheben, habe ich dies getan

%Vor%

Grundsätzlich muss ich den aktuellen Arbeitsordner in den Ordner $GOPATH/src einbinden und der resultierende Paketpfad für alpaca wurde github.com/pksunkara/alpaca .

Nun, der Go-Test & amp; Cover funktioniert wie folgt

%Vor%

DAS IST WICHTIG

Ich bin viel gestolpert, um das zu beheben. Ich habe alle möglichen Dinge versucht, auch die, die du versucht hast. Ich habe das Problem verstanden, indem ich über die Code-Organisation in Golang gelesen habe, was für jeden, der mit go arbeitet, ein Muss ist.

Die hier angegebene Code-Organisation ist sehr wichtig, um mit golang zu arbeiten.

Paketwege sind wichtig für Golang. Und Sie sollten niemals den lokalen Pfad verwenden, wenn Sie in Golang importieren. Sie werden funktionieren, aber es wird nicht empfohlen.

Nehmen wir an, Ihr Paketname lautet model . Sie können einfach das Verzeichnis model mit $GOPATH/src/model verknüpfen und dann haben Sie einen Paketpfad namens model , den Sie mit import "model" importieren können. Um jedoch Kollisionen zu vermeiden, empfiehlt go, einen größeren Paketpfadnamen zu verwenden.

Ich würde Ihnen empfehlen, es mit $GOPATH/src/bill.com/server/model zu verknüpfen und es als import "bill.com/server/model" zu importieren. Ähnlich mit ./query und ./util , die Sie haben.

Wenn Sie noch Zweifel haben, fragen Sie bitte. Ich werde versuchen, mehr zu erklären.

    
Pavan Kumar Sunkara 21.01.2014, 17:47
quelle
12

Hier ist der Weg, um alle Vorteile von GVM zu nutzen, ohne Ihre ideale go-Entwicklungsumgebung wie hier hier ruinieren zu müssen und ohne auf klobige Spezialfall-Symlink-Hacks zurückgreifen zu müssen.

Angenommen, ich habe meine gesamte Entwicklung entsprechend dem Standard in ~/go festgelegt (also würde das Paket foo in meinem GitHub in ~/go/github.com/gepoch/foo sein)

Zuerst werden wir ein spezielles Paket erstellen, das gerne auf unsere Entwicklungsumgebung verweist. Einfach ausführen:

%Vor%

Dies wird das pkgset hinzufügen. Als nächstes können wir etwas anpassen, wo genau es den Go-Pfad setzt. Lauf:

%Vor%

Sie sollten Ihren bevorzugten Texteditor mit einer Reihe von Umgebungsvariablendefinitionen geöffnet sehen. Ändere einfach den GOPATH Eintrag, um deinen dev root einzubinden! Zum Beispiel ändere ich das:

%Vor%

Dazu:

%Vor%

Außerdem muss gvm Ihren Pfad korrekt eingerichtet haben, indem Sie Folgendes geändert haben:

%Vor%

hinein:

%Vor%

Starten Sie Ihr Terminal neu und das war's! Wenn Sie $ gvm pkgset use dev ausführen, haben Sie einfachen Zugriff auf Ihre Entwicklungsumgebung.

Das bedeutet (neben vielen anderen Dingen), dass dies wie vorgesehen funktioniert:

%Vor%

Sie können dies zu jeder beliebigen pkgset-Umgebung hinzufügen, um einen einfachen Zugriff auf den Entwicklungsbaum zu erhalten.

    
gepoch 20.02.2014 03:10
quelle
1

Haben Sie versucht, ein Problem in die Entwickler-Website von gvm zu bringen? Ссылка (Ich bin mir nicht sicher, ob das die Hauptsite ist)

    
Daniel YC Lin 21.01.2014 09:33
quelle
0

Überprüfen Sie den Wert von $GOPATH , wie in gvm festgelegt.

Ich würde versuchen, $GOPATH manuell nur für das Testen auf /home/bill (mit einem symlink src->dev ) zu setzen, nur um zu sehen, ob ein go test -cover Dateien mit dem korrekten Dateipfad in einem cover.out erzeugt.

    
VonC 19.01.2014 09:47
quelle

Tags und Links