mirror of
https://github.com/grafana/grafana.git
synced 2024-12-01 13:09:22 -06:00
f67e56939a
* test(jest): isolate script tests to prevent jest errors in grafana-server/tmp tests * chore(codeowners): update so generate-transformations matches in docs and tests directory
60 lines
2.1 KiB
TypeScript
60 lines
2.1 KiB
TypeScript
import { getMarkdownContent, getJavaScriptContent } from '../docs/generate-transformations.ts';
|
|
|
|
describe('makefile script tests', () => {
|
|
// If these tests fail, refer to `./docs/README.md` "Content guidelines" for more information
|
|
// about editing and building the Transformations docs.
|
|
|
|
// This test isn't playing well, it passes locally, but continues to fail in Drone.
|
|
// TODO: Investigate why this test is failing in Drone ONLY.
|
|
it.skip('should execute without error and match the content written to index.md', () => {
|
|
// Normalize and compare.
|
|
expect(contentDoesMatch(getJavaScriptContent(), getMarkdownContent())).toBe(true);
|
|
});
|
|
|
|
it('should be able to tell if the content DOES NOT match', () => {
|
|
const wrongContent = getJavaScriptContent().concat('additional content to mismatch');
|
|
// Normalize and compare.
|
|
expect(contentDoesMatch(wrongContent, getMarkdownContent())).toBe(false);
|
|
});
|
|
});
|
|
|
|
export function contentDoesMatch(jsContent: string, mdContent: string): Boolean {
|
|
return normalizeContent(jsContent) === normalizeContent(mdContent);
|
|
}
|
|
|
|
/*
|
|
Normalize content by removing all whitespace (spaces, tabs, newlines, carriage returns,
|
|
form feeds, and vertical tabs) and special characters.
|
|
|
|
NOTE: There are numerous unpredictable formatting oddities when transforming JavaScript to Markdown;
|
|
almost all of them are irrelevant to the actual content of the file, which is why we strip them out here.
|
|
|
|
For example:
|
|
|
|
In JavaScript, the following string table
|
|
|
|
| A | B | C |
|
|
| - | - | - |
|
|
| 1 | 3 | 5 |
|
|
| 2 | 4 | 6 |
|
|
| 3 | 5 | 7 |
|
|
| 4 | 6 | 8 |
|
|
| 5 | 7 | 9 |
|
|
|
|
parses to Markdown as
|
|
|
|
| A | B | C |
|
|
| --- | --- | --- | <--------- notice the extra hyphens
|
|
| 1 | 3 | 5 | <--------- notice the extra spaces
|
|
| 2 | 4 | 6 |
|
|
| 3 | 5 | 7 |
|
|
| 4 | 6 | 8 |
|
|
| 5 | 7 | 9 |
|
|
|
|
This is one of many arbitrary formatting anomalies that we can ignore by normalizing the
|
|
content before comparing the JavaScript template literals and the final Markdown.
|
|
*/
|
|
function normalizeContent(content: string): string {
|
|
return content.replace(/\s+|[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/g, '').trim();
|
|
}
|