Пример #1
0
        public void SerializeDirectoryPackageRepository()
        {
            // just make shure test works on different platforms
            string reppath    = Path.GetTempPath();
            string reppathuri = (new Uri(reppath)).AbsoluteUri;
            // here comes the test
            DirectoryPackageRepository repository = new DirectoryPackageRepository("myrep", reppath);
            string repositorystring = WaldiSerializer.Serialize(repository);
            string expected         = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<DirectoryPackageRepository xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n  <Name>myrep</Name>\r\n  <PackageDir>" + reppathuri + "</PackageDir>\r\n</DirectoryPackageRepository>";

            Assert.AreEqual(expected, repositorystring);
        }
Пример #2
0
        public void SerializeFeature()
        {
            Feature feature = new Feature("myfeature1")
            {
                Description = "mydescription",
                Url         = "http://myurl.test/",
                Enabled     = true
            };
            string featurestring = WaldiSerializer.Serialize(feature);
            string expected      = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Feature xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n  <Name>myfeature1</Name>\r\n  <Description>mydescription</Description>\r\n  <Url>http://myurl.test/</Url>\r\n  <Enabled>true</Enabled>\r\n</Feature>";

            Assert.AreEqual(expected, featurestring);
        }
Пример #3
0
        public void DeserializeDirectoryPackageRepositoryLocalUri()
        {
            string repositorystring = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<DirectoryPackageRepository xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n  <Name>myrep</Name>\r\n  <PackageDir>file://~/packages/</PackageDir>\r\n</DirectoryPackageRepository>";
            string packagedir       = Path.Combine(Directory.GetCurrentDirectory(), "packages");

            if (!Directory.Exists(packagedir))
            {
                Directory.CreateDirectory(packagedir);
            }
            DirectoryPackageRepository repository = WaldiSerializer.DeserializePackageRepository(repositorystring) as DirectoryPackageRepository;
            DirectoryPackageRepository expected   = new DirectoryPackageRepository("myrep", packagedir);

            Assert.AreEqual(expected, repository);
        }
Пример #4
0
        public void DeserializeMultiPackageRepository()
        {
            // just make shure test works on different platforms
            string reppath    = Path.GetTempPath();
            string reppathuri = (new Uri(reppath)).AbsoluteUri;
            // here comes the test
            string repositorystring = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<MultiPackageRepository xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n  <Name>myrep</Name>\r\n  <Repositories>\r\n    <DirectoryPackageRepository>\r\n      <Name>myrep1</Name>\r\n      <PackageDir>" + reppathuri + "</PackageDir>\r\n    </DirectoryPackageRepository>\r\n    <DirectoryPackageRepository>\r\n      <Name>myrep2</Name>\r\n      <PackageDir>" + reppathuri + "</PackageDir>\r\n    </DirectoryPackageRepository>\r\n  </Repositories>\r\n</MultiPackageRepository>";
            MultiPackageRepository     repository = WaldiSerializer.DeserializePackageRepository(repositorystring) as MultiPackageRepository;
            DirectoryPackageRepository expected1  = new DirectoryPackageRepository("myrep1", reppath);
            DirectoryPackageRepository expected2  = new DirectoryPackageRepository("myrep2", reppath);
            MultiPackageRepository     expected   = new MultiPackageRepository("myrep", expected1, expected2);

            Assert.AreEqual(expected, repository);
        }
Пример #5
0
        public void DeserializePackage()
        {
            string       packagestring = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Package xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n  <Name>mypackage1</Name>\r\n  <Description>mydescription</Description>\r\n  <Url>http://myurl.test/</Url>\r\n  <IsMaster>true</IsMaster>\r\n  <Versions>\r\n    <Version>\r\n      <Name>1.0</Name>\r\n    </Version>\r\n    <Version>\r\n      <Name>2.3</Name>\r\n    </Version>\r\n    <Version>\r\n      <Name>2.4</Name>\r\n    </Version>\r\n  </Versions>\r\n  <Dependencies>\r\n    <Dependency>\r\n      <Name>mypackage2.myfeature1</Name>\r\n      <Version>\r\n        <Name>*</Name>\r\n      </Version>\r\n      <IsOptional>false</IsOptional>\r\n    </Dependency>\r\n    <Dependency>\r\n      <Name>mypackage2.myfeature2</Name>\r\n      <Version>\r\n        <Name>*</Name>\r\n      </Version>\r\n      <IsOptional>false</IsOptional>\r\n    </Dependency>\r\n    <Dependency>\r\n      <Name>mypackage3.myfeature1</Name>\r\n      <Version>\r\n        <Name>*</Name>\r\n      </Version>\r\n      <IsOptional>false</IsOptional>\r\n    </Dependency>\r\n  </Dependencies>\r\n  <SelectedVersion>\r\n    <Name>2.4</Name>\r\n  </SelectedVersion>\r\n  <Features>\r\n    <Feature>\r\n      <Name>myfeature1</Name>\r\n      <Enabled>false</Enabled>\r\n    </Feature>\r\n    <Feature>\r\n      <Name>myfeature2</Name>\r\n      <Enabled>false</Enabled>\r\n    </Feature>\r\n  </Features>\r\n</Package>";
            IPackage     package       = WaldiSerializer.DeserializePackage(packagestring);
            BasicPackage expected      = new BasicPackage("mypackage1")
            {
                Description     = "mydescription",
                Url             = "http://myurl.test/",
                IsMaster        = true,
                SelectedVersion = new PackageVersion("2.4")
            };

            expected.Versions.Add(new PackageVersion("1.0"));
            expected.Versions.Add(new PackageVersion("2.3"));
            expected.Versions.Add(new PackageVersion("2.4"));
            expected.Dependencies.Add(new Dependency("mypackage2.myfeature1"));
            expected.Dependencies.Add(new Dependency("mypackage2.myfeature2"));
            expected.Dependencies.Add(new Dependency("mypackage3.myfeature1"));
            expected.Features.Add(new Feature("myfeature1"));
            expected.Features.Add(new Feature("myfeature2"));
            Assert.AreEqual(expected as IPackage, package as IPackage);
        }
Пример #6
0
        public static void Load()
        {
            string configpath = IO.Path.Combine(Environment.CurrentDirectory, "waldiconfig.xml");

            if (!IO.File.Exists(configpath))
            {
                throw new ConfigException("Could not find configuration file in current directory.");
            }
            WaldiSerializer.MapType(typeof(ConfigDtoDto), typeof(ConfigDto));
            ConfigDto serobj;

            try
            {
                string serstr = System.IO.File.ReadAllText(configpath);
                serobj = WaldiSerializer.Deserialize(serstr, typeof(ConfigDto), typeof(ConfigDtoDto)) as ConfigDto;
            }
            catch (Exception ex)
            {
                throw new ConfigException("Could load config from configuration file in current directory.", ex);
            }
            Config.LocalRepository  = serobj.LocalRepository;
            Config.RemoteRepository = serobj.RemoteRepository;
        }
Пример #7
0
        public void AddPackage(IPackage pkg, string pathtosourcedir)
        {
            if (pkg == null)
            {
                throw new ArgumentNullException("pkg");
            }
            if (this.GetPackage(pkg.Name) != null)
            {
                throw new ArgumentException("A package named " + pkg.Name + " already exists.", "pkgname");
            }
            DirectoryInfo sourcedir = new DirectoryInfo(pathtosourcedir);

            if (!sourcedir.Exists)
            {
                throw new DirectoryNotFoundException();
            }
            string        pkgdirpath = Path.Combine(this.PackageDir.FullName, pkg.Name);
            DirectoryInfo destdir    = new DirectoryInfo(pkgdirpath);

            if (!destdir.Exists)
            {
                destdir.Create();
            }
            if (!destdir.IsEmpty())
            {
                throw new PackageIoException("New package directory is not empty: " + destdir.Name);
            }
            sourcedir.CopyTo(destdir.FullName, true);

            // create package definition file
            string pkgdefpath = Path.Combine(destdir.FullName, "package.wpdef");

            using (Stream str = System.IO.File.OpenWrite(pkgdefpath))
            {
                WaldiSerializer.Serialize(pkg, str);
            }
        }
Пример #8
0
        protected IPackage ReadPackageDir(DirectoryInfo dir)
        {
            if (!dir.Exists)
            {
                throw new PackageIoException("Package directory for package " + dir.Name + " does not exist.");
            }
            FileInfo definitionfile = new FileInfo(Path.Combine(dir.FullName, "package.wpdef"));

            if (definitionfile.Exists)
            {
                using (StreamReader stream = new StreamReader(definitionfile.FullName))
                {
                    try
                    {
                        return(WaldiSerializer.DeserializePackage(stream));
                    }
                    catch (Exception ex)
                    {
                        throw new PackageIoException("Could not read package definition for package " + dir.Name + ".", dir.Name, ex);
                    }
                }
            }
            return(null);
        }