diff options
| author | Joseph Hunkeler <jhunkeler@users.noreply.github.com> | 2025-02-18 15:14:57 -0500 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-18 15:14:57 -0500 | 
| commit | 2ffd817603ecc713988fe2796c9562a857a92ef4 (patch) | |
| tree | 9a5e26fe0b3bc2e17019567eb45c3bfe254a6798 /src | |
| parent | ff2ce71b7f860d9af4bccb8041ecf1f6c66eb535 (diff) | |
| parent | 2670a59ccbad947df72815d057d3b047cccb69df (diff) | |
| download | stasis-2ffd817603ecc713988fe2796c9562a857a92ef4.tar.gz | |
Merge pull request #98 from jhunkeler/indexer-minor-fixups
Indexer minor fixups
Diffstat (limited to 'src')
| -rw-r--r-- | src/cli/stasis_indexer/helpers.c | 19 | ||||
| -rw-r--r-- | src/cli/stasis_indexer/junitxml_report.c | 22 | ||||
| -rw-r--r-- | src/cli/stasis_indexer/readmes.c | 34 | 
3 files changed, 58 insertions, 17 deletions
diff --git a/src/cli/stasis_indexer/helpers.c b/src/cli/stasis_indexer/helpers.c index e337787..76d50f9 100644 --- a/src/cli/stasis_indexer/helpers.c +++ b/src/cli/stasis_indexer/helpers.c @@ -192,11 +192,26 @@ int sort_by_latest_rc(const void *a, const void *b) {      const struct Delivery *bb = b;      if (aa->meta.rc > bb->meta.rc) {          return -1; +    } else if (aa->meta.rc < bb->meta.rc) { +        return 1;      } -    if (aa->meta.rc < bb->meta.rc) { + +    if (strcmp(aa->system.platform[DELIVERY_PLATFORM_RELEASE], bb->system.platform[DELIVERY_PLATFORM_RELEASE]) > 0) {          return 1; +    } else if (strcmp(aa->system.platform[DELIVERY_PLATFORM_RELEASE], bb->system.platform[DELIVERY_PLATFORM_RELEASE]) < 0) { +        return -1; +    } + +    char *err = NULL; +    unsigned pyc_a = strtoul(aa->meta.python_compact, &err, 10); +    unsigned pyc_b = strtoul(bb->meta.python_compact, &err, 10); +    if (pyc_a > pyc_b) { +        return -1; +    } else if (pyc_b < pyc_a) { +        return 1; +    } else { +        return 0;      } -    return 0;  }  struct Delivery *get_latest_deliveries(struct Delivery ctx[], size_t nelem) { diff --git a/src/cli/stasis_indexer/junitxml_report.c b/src/cli/stasis_indexer/junitxml_report.c index fbb36af..904a3e5 100644 --- a/src/cli/stasis_indexer/junitxml_report.c +++ b/src/cli/stasis_indexer/junitxml_report.c @@ -44,7 +44,10 @@ static int write_report_output(struct Delivery *ctx, FILE *destfp, const char *x          replace_text(short_name, "results-", "", 0);          guard_free(short_name_pattern); -        fprintf(destfp, "|[%s](%s.html)|%0.4f|%d|%d|%d|%d|%d|\n", short_name, bname, +        fprintf(destfp, "|%s ([log](%s.md)) ([xml](%s.xml))|%0.4f|%d|%d|%d|%d|%d|\n", +                short_name, +                bname, +                bname,                  testsuite->time, testsuite->tests,                  testsuite->passed, testsuite->failures,                  testsuite->skipped, testsuite->errors); @@ -79,7 +82,11 @@ static int write_report_output(struct Delivery *ctx, FILE *destfp, const char *x              fprintf(resultfp, "### %s %s :: %s\n", type_str,                      testsuite->testcase[i]->classname, testsuite->testcase[i]->name);              fprintf(resultfp, "\nDuration: %0.04fs\n", testsuite->testcase[i]->time); -            fprintf(resultfp, "\n```\n%s\n```\n\n", message); +            if (message && strlen(message)) { +                fprintf(resultfp, "\n```\n%s\n```\n\n", message); +            } else { +                fprintf(resultfp, "\n"); +            }          }          junitxml_testsuite_free(&testsuite);          fclose(resultfp); @@ -107,16 +114,21 @@ int indexer_junitxml_report(struct Delivery ctx[], const size_t nelem) {          }          printf("Index %s opened for writing\n", indexfile); +        int current_rc = ctx->meta.rc;          for (size_t d = 0; d < nelem; d++) {              char pattern[PATH_MAX] = {0};              snprintf(pattern, sizeof(pattern) - 1, "*%s*", ctx[d].info.release_name); -            // if result directory contains this release name, print it -            fprintf(indexfp, "### %s\n", ctx[d].info.release_name); +            // if the result directory contains tests for this release name, print them              if (!is_file_in_listing(file_listing, pattern)) { -                fprintf(indexfp, "No test results\n"); +                // no test results                  continue;              } +            if (current_rc > ctx[d].meta.rc) { +                current_rc = ctx[d].meta.rc; +                fprintf(indexfp, "\n\n---\n\n"); +            } +            fprintf(indexfp, "### %s\n", ctx[d].info.release_name);              fprintf(indexfp, "\n|Suite|Duration|Total|Pass|Fail|Skip|Error|\n");              fprintf(indexfp, "|:----|:------:|:---:|:--:|:--:|:--:|:---:|\n"); diff --git a/src/cli/stasis_indexer/readmes.c b/src/cli/stasis_indexer/readmes.c index 51472df..413a6a3 100644 --- a/src/cli/stasis_indexer/readmes.c +++ b/src/cli/stasis_indexer/readmes.c @@ -23,6 +23,9 @@ int indexer_readmes(struct Delivery ctx[], const size_t nelem) {      fprintf(indexfp, "# %s-%s\n\n", ctx->meta.name, ctx->meta.version);      fprintf(indexfp, "## Current Release\n\n"); +    strlist_sort(platforms, STASIS_SORT_ALPHA); +    strlist_sort(archs, STASIS_SORT_ALPHA); +    strlist_reverse(archs);      for (size_t p = 0; p < strlist_count(platforms); p++) {          char *platform = strlist_item(platforms, p);          for (size_t a = 0; a < strlist_count(archs); a++) { @@ -57,16 +60,24 @@ int indexer_readmes(struct Delivery ctx[], const size_t nelem) {                      fprintf(indexfp, "  - Info: [README](%s)\n", readme_name);                      fprintf(indexfp, "  - Release: [Conda Environment YAML](%s)\n", link_name);                      fprintf(indexfp, "  - Receipt: [STASIS input file](%s)\n", conf_name_relative); -                    fprintf(indexfp, "  - Docker: "); -                    struct StrList *docker_images = get_docker_images(&latest_deliveries[i], ""); + +                    char *pattern = NULL; +                    asprintf(&pattern, "*%s*%s*", +                             latest_deliveries[i].info.build_number, +                             strstr(ctx->rules.release_fmt, "%p") ? latest_deliveries[i].meta.python_compact : "" ); +                    if (!pattern) { +                        SYSERROR("%s", "Unable to allocate bytes for pattern"); +                        return -1; +                    } +                    struct StrList *docker_images = get_docker_images(&latest_deliveries[i], pattern);                      if (docker_images                          && strlist_count(docker_images)                          && !strcmp(latest_deliveries[i].system.platform[DELIVERY_PLATFORM_RELEASE], "linux")) { +                        fprintf(indexfp, "  - Docker: ");                          fprintf(indexfp, "[Archive](../packages/docker/%s)\n", path_basename(strlist_item(docker_images, 0))); -                    } else { -                        fprintf(indexfp, "N/A\n");                      } -                    guard_free(docker_images); +                    guard_strlist_free(&docker_images); +                    guard_free(pattern);                  }              }              fprintf(indexfp, "\n"); @@ -75,13 +86,17 @@ int indexer_readmes(struct Delivery ctx[], const size_t nelem) {      }      fprintf(indexfp, "## Releases\n"); +    int current_rc = ctx->meta.rc;      for (size_t i = 0; ctx[i].meta.name != NULL; i++) {          struct Delivery *current = &ctx[i]; +        if (current_rc > current->meta.rc) { +            current_rc = current->meta.rc; +            fprintf(indexfp, "\n\n---\n\n"); +        }          fprintf(indexfp, "### %s\n", current->info.release_name); -        fprintf(indexfp, "- Info: [README](README-%s.html)\n", current->info.release_name); +        fprintf(indexfp, "- Info: [README](README-%s.md)\n", current->info.release_name);          fprintf(indexfp, "- Release: [Conda Environment YAML](%s.yml)\n", current->info.release_name);          fprintf(indexfp, "- Receipt: [STASIS input file](../config/%s.ini)\n", current->info.release_name); -        fprintf(indexfp, "- Docker: \n");          char *pattern = NULL;          asprintf(&pattern, "*%s*%s*", @@ -96,11 +111,10 @@ int indexer_readmes(struct Delivery ctx[], const size_t nelem) {          if (docker_images                  && strlist_count(docker_images)                  && !strcmp(current->system.platform[DELIVERY_PLATFORM_RELEASE], "linux")) { +            fprintf(indexfp, "- Docker: \n");              fprintf(indexfp, "[Archive](../packages/docker/%s)\n", path_basename(strlist_item(docker_images, 0))); -        } else { -            fprintf(indexfp, "N/A\n");          } -        guard_free(docker_images); +        guard_strlist_free(&docker_images);          guard_free(pattern);      }      fprintf(indexfp, "\n");  | 
