Пример #1
0
 public void ShouldMatchExactlyFileName()
 {
     var workspace = new Workspace();
     workspace.BasePath = Path.Combine(basePath, "ShouldNotAllowMultipleCrakefiles");
     Directory.CreateDirectory(workspace.BasePath);
     File.Create(Path.Combine(workspace.BasePath, "crakefile"));
     File.Create(Path.Combine(workspace.BasePath, "cCrakefile"));
     workspace.LoadFiles();
     Assert.AreEqual(1, workspace.Files.Count);
 }
Пример #2
0
 public void ShouldLoadDefaultCrakefile()
 {
     var workspace = new Workspace();
     workspace.BasePath = Path.Combine(basePath, "ShouldLoadDefaultCrakefile");
     Directory.CreateDirectory(workspace.BasePath);
     File.Create(Path.Combine(workspace.BasePath, "crakefile"));
     workspace.LoadFiles();
     Assert.AreEqual(1, workspace.Files.Count);
     Assert.AreEqual(Path.Combine(workspace.BasePath, "crakefile"), workspace.Files[0]);
 }
Пример #3
0
 public void ShouldLoadFilesFromTasksSubDir()
 {
     var workspace = new Workspace();
     workspace.BasePath = Path.Combine(basePath, "ShouldLoadFilesFromTasksDir");
     Directory.CreateDirectory(workspace.BasePath);
     Directory.CreateDirectory(workspace.TasksDir);
     Directory.CreateDirectory(Path.Combine(workspace.TasksDir, "subdir"));
     File.Create(Path.Combine(workspace.TasksDir, "task1.crake"));
     File.Create(Path.Combine(Path.Combine(workspace.TasksDir, "subdir"), "task2.crake"));
     workspace.LoadFiles();
     Assert.AreEqual(2, workspace.Files.Count);
     Assert.AreEqual(Path.Combine(workspace.TasksDir, "task1.crake"), workspace.Files[0]);
     Assert.AreEqual(Path.Combine(Path.Combine(workspace.TasksDir, "subdir"),"task2.crake"), workspace.Files[1]);
 }
Пример #4
0
        public void ShouldCreateTasks()
        {
            Task.Tasks.Clear();
            var workspace = new Workspace();
            workspace.BasePath = Path.Combine(basePath, "ShouldCreateTasks");
            Directory.CreateDirectory(workspace.TasksDir);
            var f = File.Create(Path.Combine(workspace.TasksDir, "task1.crake"));
            var buf = ASCIIEncoding.ASCII.GetBytes("namespace :name1 do\ntask :todo1 do\nint i;\nSay();\nSay();\nend\nend\n public void Say() {\nConsole.WriteLine(\"oi\");\n}");
            f.Write(buf, 0, buf.Length);
            f.Close();
            workspace.LoadFiles();
            workspace.Parse();
            workspace.Compile();

            var linker = new Linker(workspace);

            Assert.AreEqual(0, Task.Tasks.Count);
            linker.CreateTasks();
            Assert.AreEqual(1, Task.Tasks.Count);
            Task.Tasks["name1:todo1"].Run();
        }
Пример #5
0
        public void ShouldCompileNLines()
        {
            var workspace = new Workspace();
            workspace.BasePath = Path.Combine(basePath, "Compile");
            Directory.CreateDirectory(workspace.TasksDir);
            var f = File.Create(Path.Combine(workspace.TasksDir, "task1.crake"));
            var buf = ASCIIEncoding.ASCII.GetBytes("namespace :name1 do\ntask :todo1 do\nint i;\nSay();\nSay();\nend\nend\n public void Say() {\nConsole.WriteLine(\"oi\");\n}");
            f.Write(buf, 0, buf.Length);
            f.Close();
            workspace.LoadFiles();
            workspace.Parse();
            workspace.Compile();

            var typeName = string.Format("Crake.Runtime.{0}", workspace.ParsedFiles[0].UniqueName);
            Type type = null;

            var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
            foreach (var asm in loadedAssemblies) {
                type = asm.GetType(typeName);
                if (type != null) break;
            }

            Assert.IsNotNull(Assembly.GetAssembly(type));
        }
Пример #6
0
 public void ShouldNotFailWhenDefaultCrakefileNotExists()
 {
     var workspace = new Workspace();
     workspace.BasePath = Path.Combine(basePath, "ShouldNotFailWhenDefaultCrakefileNotExists");
     Directory.CreateDirectory(workspace.BasePath);
     workspace.LoadFiles();
     Assert.AreEqual(0, workspace.Files.Count);
 }
Пример #7
0
        public void ShouldNotAllowMultipleCrakefiles()
        {
            var workspace = new Workspace();
            workspace.BasePath = Path.Combine(basePath, "ShouldNotAllowMultipleCrakefiles");
            Directory.CreateDirectory(workspace.BasePath);
            File.Create(Path.Combine(workspace.BasePath, "crakefile"));
            if (File.Exists(Path.Combine(workspace.BasePath, "Crakefile"))){
                Assert.Ignore("File System is not case sensitive.");
                return;
            }

            File.Create(Path.Combine(workspace.BasePath, "Crakefile"));
            workspace.LoadFiles();
        }
Пример #8
0
 public void ShouldParse()
 {
     var workspace = new Workspace();
     workspace.BasePath = Path.Combine(basePath, "Parse");
     Directory.CreateDirectory(workspace.TasksDir);
     var f = File.Create(Path.Combine(workspace.TasksDir, "parse.crake"));
     var buf = ASCIIEncoding.ASCII.GetBytes("namespace :name1 do\ntask :todo1 do\nSay();\nend\nend\n public void Say() {\nConsole.WriteLine(\"oi\");\n}");
     f.Write(buf, 0, buf.Length);
     f.Close();
     workspace.LoadFiles();
     workspace.Parse();
     Assert.AreEqual(1, workspace.ParsedFiles.Count);
     var actual = workspace.ParsedFiles[0];
     Assert.AreEqual(1, actual.Tasks.Count);
     Assert.AreEqual("name1:todo1", actual.Tasks[0].Name);
     Assert.AreEqual(1, actual.HelperMethods.Count);
     Assert.AreEqual("Say", actual.HelperMethods[0].Name.ToString());
 }