Example #1
0
        static async Task Main(string[] args)
        {
            string authToken     = args[0];
            long   repoId        = long.Parse(args[1]);
            int    pullRequestId = int.Parse(args[2]);
            string format        = args[3];

            if (!Enum.IsDefined(typeof(OutputFormat), format))
            {
                throw new Exception($"Format must be one of 'space_delimited', 'csv', or 'json', got '{format}'.");
            }

            OutputFormat outputFormat = (OutputFormat)Enum.Parse(typeof(OutputFormat), format);

            GitHubClient gitClient = new GitHubClient(new ProductHeaderValue("Microsoft.IoT.ModelsRepository.Validator"));

            gitClient.Credentials = new Credentials(authToken);

            IModelValidationService modelValidationService = new ModelValidationService(gitClient);

            RepositoryUpdatesFormatted result = await modelValidationService.GetRepositoryUpdates(repoId, pullRequestId, outputFormat);

            Console.WriteLine($"::set-output name=all::{result.FilesAllFormatted}");
            Console.WriteLine($"::set-output name=added::{result.FilesAddedFormatted}");
            Console.WriteLine($"::set-output name=modified::{result.FilesModifiedFormatted}");
            Console.WriteLine($"::set-output name=removed::{result.FilesRemovedFormatted}");
            Console.WriteLine($"::set-output name=renamed::{result.FilesRenamedFormatted}");
            Console.WriteLine($"::set-output name=added_modified::{result.FilesAddedModifiedFormatted}");
        }
 private void AssertRepoUpdates(RepositoryUpdatesFormatted expectedRepoUpdates, RepositoryUpdatesFormatted actualRepoUpdates)
 {
     Assert.NotNull(actualRepoUpdates);
     Assert.Equal(expectedRepoUpdates.FilesAddedFormatted, actualRepoUpdates.FilesAddedFormatted);
     Assert.Equal(expectedRepoUpdates.FilesModifiedFormatted, actualRepoUpdates.FilesModifiedFormatted);
     Assert.Equal(expectedRepoUpdates.FilesRemovedFormatted, actualRepoUpdates.FilesRemovedFormatted);
     Assert.Equal(expectedRepoUpdates.FilesRenamedFormatted, actualRepoUpdates.FilesRenamedFormatted);
     Assert.Equal(expectedRepoUpdates.FilesAddedModifiedFormatted, actualRepoUpdates.FilesAddedModifiedFormatted);
     Assert.Equal(expectedRepoUpdates.FilesAllFormatted, actualRepoUpdates.FilesAllFormatted);
 }
        public async void GetRepositoryUpdates_ResultsFormatted_Json()
        {
            GitClientMoq.Setup(client => client.PullRequest.Files(RepoId, PullRequestId)).ReturnsAsync(ModelRepositoryFileUpdates);

            RepositoryUpdatesFormatted expectedRepoUpdates = new RepositoryUpdatesFormatted
            {
                FilesAddedFormatted         = "[\"dtmi/test_company_1/test_device_1_interface_1.json\",\"dtmi/test_company_1/test_device_2_interface_2.json\"]",
                FilesModifiedFormatted      = "[\"dtmi/test_company_1/test_device_1_interface_2.json\",\"dtmi/test_company_1/test_device_3_interface_2.json\"]",
                FilesRemovedFormatted       = "[\"dtmi/test_company_1/test_device_2_interface_1.json\"]",
                FilesRenamedFormatted       = "[\"dtmi/test_company_1/test_device_3_interface_1.json\"]",
                FilesAddedModifiedFormatted = "[\"dtmi/test_company_1/test_device_1_interface_1.json\",\"dtmi/test_company_1/test_device_1_interface_2.json\",\"dtmi/test_company_1/test_device_2_interface_2.json\",\"dtmi/test_company_1/test_device_3_interface_2.json\"]",
                FilesAllFormatted           = "[\"dtmi/test_company_1/test_device_1_interface_1.json\",\"dtmi/test_company_1/test_device_1_interface_2.json\",\"dtmi/test_company_1/test_device_2_interface_1.json\",\"dtmi/test_company_1/test_device_2_interface_2.json\",\"dtmi/test_company_1/test_device_3_interface_1.json\",\"dtmi/test_company_1/test_device_3_interface_2.json\",\"dtmi/test_company_1/test_device_3_interface_3.json\"]"
            };

            RepositoryUpdatesFormatted actualRepoUpdates = await ModelValidationService.GetRepositoryUpdates(RepoId, PullRequestId, OutputFormat.json);

            AssertRepoUpdates(expectedRepoUpdates, actualRepoUpdates);
        }
        public async void GetRepositoryUpdates_HandlesEmptyPullRequestFiles()
        {
            GitClientMoq.Setup(client => client.PullRequest.Files(RepoId, PullRequestId)).ReturnsAsync(new List <PullRequestFile>());

            RepositoryUpdatesFormatted expectedRepoUpdates = new RepositoryUpdatesFormatted
            {
                FilesAddedFormatted         = "",
                FilesModifiedFormatted      = "",
                FilesRemovedFormatted       = "",
                FilesRenamedFormatted       = "",
                FilesAddedModifiedFormatted = "",
                FilesAllFormatted           = ""
            };

            RepositoryUpdatesFormatted actualRepoUpdates = await ModelValidationService.GetRepositoryUpdates(RepoId, PullRequestId, OutputFormat.space_delimited);

            AssertRepoUpdates(expectedRepoUpdates, actualRepoUpdates);
        }