コード例 #1
0
        public override bool Execute(StorytellerInput input)
        {
            if (!Directory.Exists(input.FixturePath))
            {
                Console.WriteLine("Creating directory " + input.FixturePath);
                Directory.CreateDirectory(input.FixturePath);
            }

            var running = RunningSystem.Create(input.System);

            using (running.System)
            {
                var fixtures = input.BuildFixturesWithOverrides(running.RecycledMessage);

                foreach (var fixture in fixtures)
                {
                    var file = input.FixturePath.AppendPath(fixture.key + ".md");
                    try
                    {
                        FixtureWriter.Write(fixture, file);
                    }
                    catch (Exception e)
                    {
                        ConsoleWriter.Write(ConsoleColor.Red, $"Could not export fixture {fixture.key}");
                        ConsoleWriter.Write(ConsoleColor.Yellow, e.ToString());
                    }
                }
            }


            return(true);
        }
コード例 #2
0
        private void roundTrip <T>() where T : Fixture, new()
        {
            var fixture = new T();
            var model   = fixture.Compile(CellHandling.Basic());

            var markdown1 = FixtureWriter.Write(model);


            Console.WriteLine("Fixture " + typeof(T).Name);
            Console.WriteLine("----------------------------------------------------------------");
            Console.WriteLine(markdown1);
            Console.WriteLine("----------------------------------------------------------------");
            Console.WriteLine();
            Console.WriteLine();



            var model2 = FixtureReader.ReadFrom(markdown1);

            var markdown2 = FixtureWriter.Write(model2);

            var grammars1 = model.grammars.Where(x => x.key != "TODO").OrderBy(x => x.key).Select(x => x.key);
            var grammars2 = model2.grammars.OrderBy(x => x.key).Select(x => x.key);

            grammars2.ShouldHaveTheSameElementsAs(grammars1.ToArray());

            markdown2.ShouldBe(markdown1);
        }
コード例 #3
0
        public void ExportAllFixtures()
        {
            _watcher.Latch(() =>
            {
                if (!Directory.Exists(_fixturePath))
                {
                    Directory.CreateDirectory(_fixturePath);
                }

                var fixtures = CombinedFixtures();
                foreach (var fixture in fixtures)
                {
                    var file = _fixturePath.AppendPath(fixture.key + ".md");
                    try
                    {
                        FixtureWriter.Write(fixture, file);
                    }
                    catch (Exception e)
                    {
                        ConsoleWriter.Write(ConsoleColor.Red, $"Could not export fixture {fixture.key}");
                        ConsoleWriter.Write(ConsoleColor.Yellow, e.ToString());
                    }
                }
            });
        }
コード例 #4
0
        public string CreateFixture(string keyOrTitle)
        {
            var fixture = FixtureModel.BuildFromKeyOrTitle(keyOrTitle);
            var file    = FileFor(fixture.key);

            if (File.Exists(file))
            {
                ConsoleWriter.Write(ConsoleColor.White, $"Fixture file '{file}' already exists");
            }
            else
            {
                _watcher.Latch(() =>
                {
                    FixtureWriter.Write(fixture, file);
                });

                _overrides.Models[fixture.key] = fixture;

                sendUpdatesToClient();

                ConsoleWriter.Write(ConsoleColor.Green, $"Successfully created a new Fixture {fixture.key}: {fixture.title}");
            }

            return(file);
        }
コード例 #5
0
        public override bool Execute(DumpFixturesInput input)
        {
            if (!Directory.Exists(input.FixturePath))
            {
                Console.WriteLine("Creating directory " + input.FixturePath);
                Directory.CreateDirectory(input.FixturePath);
            }

            using (var controller = input.BuildEngine())
            {
                var combined = BuildCombinedFixtureLibrary(input, controller);

                foreach (var fixture in combined.Models)
                {
                    var file = input.FixturePath.AppendPath(fixture.key + ".md");
                    try
                    {
                        FixtureWriter.Write(fixture, file);
                    }
                    catch (Exception e)
                    {
                        ConsoleWriter.Write(ConsoleColor.Red, $"Could not export fixture {fixture.key}");
                        ConsoleWriter.Write(ConsoleColor.Yellow, e.ToString());
                    }
                }
            }

            return(true);
        }
コード例 #6
0
        public void Export(string key)
        {
            var file = FileFor(key);

            var fixture = CombinedFixtures().FirstOrDefault(x => x.key == key) ?? new FixtureModel(key);

            try
            {
                _watcher.Latch(() => FixtureWriter.Write(fixture, file));
            }
            catch (Exception e)
            {
                ConsoleWriter.Write(ConsoleColor.Red, "Failed to write file " + file);
                ConsoleWriter.Write(ConsoleColor.Yellow, e.ToString());
            }
        }
コード例 #7
0
        public void does_not_overwrite_an_existing_fixture()
        {
            var file     = theFixtureDirectory.AppendPath("One.md");
            var original = new FixtureModel("One")
            {
                title = "a fancier title"
            };

            FixtureWriter.Write(original, file);

            theController.CreateFixture("One");

            FixtureReader.ReadFromFile(file)
            .title.ShouldBe(original.title);

            theClient.ReceivedCalls().Any().ShouldBeFalse();
        }
コード例 #8
0
        protected override void WriteBody(XmlWriter writer)
        {
            // Module data
            writer.WriteStartElement("ModuleData");
            writer.WriteRaw(ModuleDataSet.Serialize());
            writer.WriteEndElement();             // ModuleData

            // Fixtures
            FixtureWriter fixtureWriter = new FixtureWriter();

            writer.WriteStartElement("Fixtures");
            foreach (Fixture fixture in Fixtures)
            {
                fixtureWriter.Fixture = fixture;
                fixtureWriter.Write(writer);
            }
            writer.WriteEndElement();             // Fixtures
        }