183 lines
3.6 KiB
Haxe
183 lines
3.6 KiB
Haxe
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;
|
|
}
|
|
}
|
|
} |