First commit
This commit is contained in:
+183
@@ -0,0 +1,183 @@
|
||||
package tests;
|
||||
|
||||
import sys.FileSystem;
|
||||
import haxe.io.*;
|
||||
|
||||
import haxelib.client.Vcs;
|
||||
|
||||
class TestVcsNotFound extends TestBase
|
||||
{
|
||||
//----------- properties, fields ------------//
|
||||
|
||||
static inline var REPO_ROOT = "test/libraries";
|
||||
static inline var REPO_DIR = "vcs-no";
|
||||
static var CWD:String = null;
|
||||
|
||||
//--------------- constructor ---------------//
|
||||
public function new()
|
||||
{
|
||||
super();
|
||||
CWD = Sys.getCwd();
|
||||
}
|
||||
|
||||
|
||||
//--------------- initialize ----------------//
|
||||
|
||||
override public function setup():Void
|
||||
{
|
||||
Sys.setCwd(Path.join([CWD, REPO_ROOT]));
|
||||
|
||||
if(FileSystem.exists(REPO_DIR)) {
|
||||
deleteDirectory(REPO_DIR);
|
||||
}
|
||||
FileSystem.createDirectory(REPO_DIR);
|
||||
|
||||
Sys.setCwd(REPO_DIR);
|
||||
}
|
||||
|
||||
override public function tearDown():Void
|
||||
{
|
||||
// restore original CWD & PATH:
|
||||
Sys.setCwd(CWD);
|
||||
|
||||
deleteDirectory(Path.join([CWD, REPO_ROOT, REPO_DIR]));
|
||||
}
|
||||
|
||||
//----------------- tests -------------------//
|
||||
|
||||
|
||||
public function testAvailableHg():Void
|
||||
{
|
||||
assertFalse(getHg().available);
|
||||
}
|
||||
|
||||
public function testAvailableGit():Void
|
||||
{
|
||||
assertFalse(getGit().available);
|
||||
}
|
||||
|
||||
|
||||
public function testCloneHg():Void
|
||||
{
|
||||
var vcs = getHg();
|
||||
try
|
||||
{
|
||||
vcs.clone(vcs.directory, "https://bitbucket.org/fzzr/hx.signal");
|
||||
assertFalse(true);
|
||||
}
|
||||
catch(error:VcsError)
|
||||
{
|
||||
switch(error)
|
||||
{
|
||||
case VcsError.CantCloneRepo(_, repo, stderr): assertTrue(true);
|
||||
default: assertFalse(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testCloneGit():Void
|
||||
{
|
||||
var vcs = getGit();
|
||||
try
|
||||
{
|
||||
vcs.clone(vcs.directory, "https://github.com/fzzr-/hx.signal.git");
|
||||
assertFalse(true);
|
||||
}
|
||||
catch(error:VcsError)
|
||||
{
|
||||
switch(error)
|
||||
{
|
||||
case VcsError.CantCloneRepo(_, repo, stderr): assertTrue(true);
|
||||
default: assertFalse(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//----------------- tools -------------------//
|
||||
|
||||
inline function getHg():Vcs
|
||||
{
|
||||
return new WrongHg({quiet: true});
|
||||
}
|
||||
|
||||
inline function getGit():Vcs
|
||||
{
|
||||
return new WrongGit({quiet: true});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
class WrongHg extends Mercurial
|
||||
{
|
||||
public function new(settings:Settings)
|
||||
{
|
||||
super(settings);
|
||||
this.directory = "no-hg";
|
||||
this.executable = "no-hg";
|
||||
this.name = "Mercurial-not-found";
|
||||
}
|
||||
|
||||
// copy of Mercurial.searchExecutablebut have a one change - regexp.
|
||||
override private function searchExecutable():Void
|
||||
{
|
||||
super.searchExecutable();
|
||||
|
||||
if(available)
|
||||
return;
|
||||
|
||||
// if we have already msys git/cmd in our PATH
|
||||
var match = ~/(.*)no-hg-no([\\|\/])cmd$/;
|
||||
for(path in Sys.getEnv("PATH").split(";"))
|
||||
{
|
||||
if(match.match(path.toLowerCase()))
|
||||
{
|
||||
var newPath = match.matched(1) + executable + match.matched(2) + "bin";
|
||||
Sys.putEnv("PATH", Sys.getEnv("PATH") + ";" + newPath);
|
||||
}
|
||||
}
|
||||
checkExecutable();
|
||||
}
|
||||
}
|
||||
|
||||
class WrongGit extends Git
|
||||
{
|
||||
public function new(settings:Settings)
|
||||
{
|
||||
super(settings);
|
||||
this.directory = "no-git";
|
||||
this.executable = "no-git";
|
||||
this.name = "Git-not-found";
|
||||
}
|
||||
|
||||
// copy of Mercurial.searchExecutablebut have a one change - regexp.
|
||||
override private function searchExecutable():Void
|
||||
{
|
||||
super.searchExecutable();
|
||||
|
||||
if(available)
|
||||
return;
|
||||
|
||||
// if we have already msys git/cmd in our PATH
|
||||
var match = ~/(.*)no-git-no([\\|\/])cmd$/;
|
||||
for(path in Sys.getEnv("PATH").split(";"))
|
||||
{
|
||||
if(match.match(path.toLowerCase()))
|
||||
{
|
||||
var newPath = match.matched(1) + executable + match.matched(2) + "bin";
|
||||
Sys.putEnv("PATH", Sys.getEnv("PATH") + ";" + newPath);
|
||||
}
|
||||
}
|
||||
if(checkExecutable())
|
||||
return;
|
||||
// look at a few default paths
|
||||
for(path in ["C:\\Program Files (x86)\\Git\\bin", "C:\\Progra~1\\Git\\bin"])
|
||||
if(FileSystem.exists(path))
|
||||
{
|
||||
Sys.putEnv("PATH", Sys.getEnv("PATH") + ";" + path);
|
||||
if(checkExecutable())
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user