mirror of
https://github.com/ivuorinen/gh-action-readme.git
synced 2026-01-26 03:04:10 +00:00
285 lines
7.4 KiB
Go
285 lines
7.4 KiB
Go
// Package testutil provides testing fixtures for gh-action-readme.
|
|
package testutil
|
|
|
|
// GitHub API response fixtures for testing.
|
|
|
|
// GitHubReleaseResponse is a mock GitHub release API response.
|
|
const GitHubReleaseResponse = `{
|
|
"id": 123456,
|
|
"tag_name": "v4.1.1",
|
|
"name": "v4.1.1",
|
|
"body": "## What's Changed\n* Fix checkout bug\n* Improve performance",
|
|
"draft": false,
|
|
"prerelease": false,
|
|
"created_at": "2023-11-01T10:00:00Z",
|
|
"published_at": "2023-11-01T10:00:00Z",
|
|
"tarball_url": "https://api.github.com/repos/actions/checkout/tarball/v4.1.1",
|
|
"zipball_url": "https://api.github.com/repos/actions/checkout/zipball/v4.1.1"
|
|
}`
|
|
|
|
// GitHubTagResponse is a mock GitHub tag API response.
|
|
const GitHubTagResponse = `{
|
|
"name": "v4.1.1",
|
|
"zipball_url": "https://github.com/actions/checkout/zipball/v4.1.1",
|
|
"tarball_url": "https://github.com/actions/checkout/tarball/v4.1.1",
|
|
"commit": {
|
|
"sha": "8f4b7f84bd579b95d7f0b90f8d8b6e5d9b8a7f6e",
|
|
"url": "https://api.github.com/repos/actions/checkout/commits/8f4b7f84bd579b95d7f0b90f8d8b6e5d9b8a7f6e"
|
|
},
|
|
"node_id": "REF_kwDOAJy2KM9yZXJlZnMvdGFncy92NC4xLjE"
|
|
}`
|
|
|
|
// GitHubRepoResponse is a mock GitHub repository API response.
|
|
const GitHubRepoResponse = `{
|
|
"id": 216219028,
|
|
"name": "checkout",
|
|
"full_name": "actions/checkout",
|
|
"description": "Action for checking out a repo",
|
|
"private": false,
|
|
"html_url": "https://github.com/actions/checkout",
|
|
"clone_url": "https://github.com/actions/checkout.git",
|
|
"git_url": "git://github.com/actions/checkout.git",
|
|
"ssh_url": "git@github.com:actions/checkout.git",
|
|
"default_branch": "main",
|
|
"created_at": "2019-10-16T19:40:57Z",
|
|
"updated_at": "2023-11-01T10:00:00Z",
|
|
"pushed_at": "2023-11-01T09:30:00Z",
|
|
"stargazers_count": 4521,
|
|
"watchers_count": 4521,
|
|
"forks_count": 1234,
|
|
"open_issues_count": 42,
|
|
"topics": ["github-actions", "checkout", "git"]
|
|
}`
|
|
|
|
// GitHubCommitResponse is a mock GitHub commit API response.
|
|
const GitHubCommitResponse = `{
|
|
"sha": "8f4b7f84bd579b95d7f0b90f8d8b6e5d9b8a7f6e",
|
|
"node_id": "C_kwDOAJy2KNoAKDhmNGI3Zjg0YmQ1NzliOTVkN2YwYjkwZjhkOGI2ZTVkOWI4YTdmNmU",
|
|
"commit": {
|
|
"message": "Fix checkout bug and improve performance",
|
|
"author": {
|
|
"name": "GitHub Actions",
|
|
"email": "actions@github.com",
|
|
"date": "2023-11-01T09:30:00Z"
|
|
},
|
|
"committer": {
|
|
"name": "GitHub Actions",
|
|
"email": "actions@github.com",
|
|
"date": "2023-11-01T09:30:00Z"
|
|
}
|
|
},
|
|
"html_url": "https://github.com/actions/checkout/commit/8f4b7f84bd579b95d7f0b90f8d8b6e5d9b8a7f6e"
|
|
}`
|
|
|
|
// GitHubRateLimitResponse is a mock GitHub rate limit API response.
|
|
const GitHubRateLimitResponse = `{
|
|
"resources": {
|
|
"core": {
|
|
"limit": 5000,
|
|
"used": 1,
|
|
"remaining": 4999,
|
|
"reset": 1699027200
|
|
},
|
|
"search": {
|
|
"limit": 30,
|
|
"used": 0,
|
|
"remaining": 30,
|
|
"reset": 1699027200
|
|
}
|
|
},
|
|
"rate": {
|
|
"limit": 5000,
|
|
"used": 1,
|
|
"remaining": 4999,
|
|
"reset": 1699027200
|
|
}
|
|
}`
|
|
|
|
// GitHubErrorResponse is a mock GitHub error API response.
|
|
const GitHubErrorResponse = `{
|
|
"message": "Not Found",
|
|
"documentation_url": "https://docs.github.com/rest"
|
|
}`
|
|
|
|
// MockGitHubResponses returns a map of URL patterns to mock responses.
|
|
func MockGitHubResponses() map[string]string {
|
|
return map[string]string{
|
|
"GET https://api.github.com/repos/actions/checkout/releases/latest": GitHubReleaseResponse,
|
|
"GET https://api.github.com/repos/actions/checkout/tags": `[` + GitHubTagResponse + `]`,
|
|
"GET https://api.github.com/repos/actions/checkout": GitHubRepoResponse,
|
|
"GET https://api.github.com/repos/actions/checkout/commits/" +
|
|
"8f4b7f84bd579b95d7f0b90f8d8b6e5d9b8a7f6e": GitHubCommitResponse,
|
|
"GET https://api.github.com/rate_limit": GitHubRateLimitResponse,
|
|
"GET https://api.github.com/repos/actions/setup-node/releases/latest": `{
|
|
"id": 123457,
|
|
"tag_name": "v4.0.0",
|
|
"name": "v4.0.0",
|
|
"body": "## What's Changed\n* Update Node.js versions\n* Fix compatibility issues",
|
|
"draft": false,
|
|
"prerelease": false,
|
|
"created_at": "2023-10-15T10:00:00Z",
|
|
"published_at": "2023-10-15T10:00:00Z"
|
|
}`,
|
|
"GET https://api.github.com/repos/actions/setup-node/tags": `[{
|
|
"name": "v4.0.0",
|
|
"commit": {
|
|
"sha": "1a4e6d7c9f8e5b2a3c4d5e6f7a8b9c0d1e2f3a4b",
|
|
"url": "https://api.github.com/repos/actions/setup-node/commits/1a4e6d7c9f8e5b2a3c4d5e6f7a8b9c0d1e2f3a4b"
|
|
}
|
|
}]`,
|
|
}
|
|
}
|
|
|
|
// Sample action.yml files for testing.
|
|
|
|
// SimpleActionYML is a basic GitHub Action YAML.
|
|
const SimpleActionYML = `name: 'Simple Action'
|
|
description: 'A simple test action'
|
|
inputs:
|
|
input1:
|
|
description: 'First input'
|
|
required: true
|
|
input2:
|
|
description: 'Second input'
|
|
required: false
|
|
default: 'default-value'
|
|
outputs:
|
|
output1:
|
|
description: 'First output'
|
|
runs:
|
|
using: 'node20'
|
|
main: 'index.js'
|
|
branding:
|
|
icon: 'activity'
|
|
color: 'blue'
|
|
`
|
|
|
|
// CompositeActionYML is a composite GitHub Action with dependencies.
|
|
const CompositeActionYML = `name: 'Composite Action'
|
|
description: 'A composite action with dependencies'
|
|
inputs:
|
|
version:
|
|
description: 'Version to use'
|
|
required: true
|
|
runs:
|
|
using: 'composite'
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
- name: Setup Node
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: '${{ inputs.version }}'
|
|
- name: Run tests
|
|
run: npm test
|
|
shell: bash
|
|
`
|
|
|
|
// DockerActionYML is a Docker-based GitHub Action.
|
|
const DockerActionYML = `name: 'Docker Action'
|
|
description: 'A Docker-based action'
|
|
inputs:
|
|
dockerfile:
|
|
description: 'Path to Dockerfile'
|
|
required: false
|
|
default: 'Dockerfile'
|
|
outputs:
|
|
image:
|
|
description: 'Built image name'
|
|
runs:
|
|
using: 'docker'
|
|
image: 'Dockerfile'
|
|
env:
|
|
CUSTOM_VAR: 'value'
|
|
branding:
|
|
icon: 'package'
|
|
color: 'purple'
|
|
`
|
|
|
|
// InvalidActionYML is an invalid action.yml for error testing.
|
|
const InvalidActionYML = `name: 'Invalid Action'
|
|
# Missing required description field
|
|
inputs:
|
|
invalid_input:
|
|
# Missing required description
|
|
required: true
|
|
runs:
|
|
# Invalid using value
|
|
using: 'invalid-runtime'
|
|
`
|
|
|
|
// MinimalActionYML is a minimal valid action.yml.
|
|
const MinimalActionYML = `name: 'Minimal Action'
|
|
description: 'Minimal test action'
|
|
runs:
|
|
using: 'node20'
|
|
main: 'index.js'
|
|
`
|
|
|
|
// Configuration file fixtures.
|
|
|
|
// DefaultConfigYAML is a default configuration file.
|
|
const DefaultConfigYAML = `theme: github
|
|
output_format: md
|
|
output_dir: .
|
|
verbose: false
|
|
quiet: false
|
|
`
|
|
|
|
// CustomConfigYAML is a custom configuration file.
|
|
const CustomConfigYAML = `theme: professional
|
|
output_format: html
|
|
output_dir: docs
|
|
template: custom-template.tmpl
|
|
schema: custom-schema.json
|
|
verbose: true
|
|
quiet: false
|
|
github_token: test-token-from-config
|
|
`
|
|
|
|
// RepoSpecificConfigYAML is a repository-specific configuration.
|
|
const RepoSpecificConfigYAML = `theme: minimal
|
|
output_format: json
|
|
branding:
|
|
icon: star
|
|
color: green
|
|
dependencies:
|
|
pin_versions: true
|
|
auto_update: false
|
|
`
|
|
|
|
// GitIgnoreContent is a sample .gitignore file.
|
|
const GitIgnoreContent = `# Dependencies
|
|
node_modules/
|
|
*.log
|
|
|
|
# Build output
|
|
dist/
|
|
build/
|
|
|
|
# OS files
|
|
.DS_Store
|
|
Thumbs.db
|
|
`
|
|
|
|
// PackageJSONContent is a sample package.json file.
|
|
const PackageJSONContent = `{
|
|
"name": "test-action",
|
|
"version": "1.0.0",
|
|
"description": "Test GitHub Action",
|
|
"main": "index.js",
|
|
"scripts": {
|
|
"test": "jest",
|
|
"build": "webpack"
|
|
},
|
|
"dependencies": {
|
|
"@actions/core": "^1.10.0",
|
|
"@actions/github": "^5.1.1"
|
|
},
|
|
"devDependencies": {
|
|
"jest": "^29.0.0",
|
|
"webpack": "^5.0.0"
|
|
}
|
|
}
|
|
`
|