Merge branch 'next' into issue-692
This commit is contained in:
commit
64784e2582
101
.github/workflows/build_and_test.yml
vendored
Normal file
101
.github/workflows/build_and_test.yml
vendored
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
################################################################################
|
||||||
|
# Build and Test tidy on the latest versions of all of the major platforms.
|
||||||
|
#
|
||||||
|
# - Build on multiple operating systems, and where possible, multiple
|
||||||
|
# architectures. On Windows, we will also build and test MingGW in
|
||||||
|
# addition to MSVC.
|
||||||
|
#
|
||||||
|
# - Report the version number for each binary that is built.
|
||||||
|
#
|
||||||
|
# - Run each binary against the regression test suite.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
name: Build and Test
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
- 'src/**'
|
||||||
|
- 'include/**'
|
||||||
|
- '.github/workflows/**'
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- 'src/**'
|
||||||
|
- 'include/**'
|
||||||
|
- '.github/workflows/**'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build_and_test:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
|
||||||
|
- os: ubuntu-latest
|
||||||
|
flags:
|
||||||
|
vers_command: "./tidy --version"
|
||||||
|
test_command: "ruby test.rb test"
|
||||||
|
|
||||||
|
- os: macOS-latest
|
||||||
|
flags: "'-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64'"
|
||||||
|
vers_command: "./tidy --version"
|
||||||
|
test_command: "ruby test.rb test"
|
||||||
|
|
||||||
|
- os: windows-latest
|
||||||
|
flags:
|
||||||
|
vers_command: "./tidy.exe --version"
|
||||||
|
test_command: "ruby test.rb test"
|
||||||
|
|
||||||
|
- os: windows-2016
|
||||||
|
flags: "-G 'MinGW Makefiles'"
|
||||||
|
vers_command: "./tidy --version"
|
||||||
|
test_command: "ruby test.rb test"
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
|
||||||
|
# We'll use the windows-2016 instance to perform a MinGW build.
|
||||||
|
# Of course, we only want to install if this is the correct target.
|
||||||
|
- name: Install MinGW-w64
|
||||||
|
if: ${{matrix.os == 'windows-2016'}}
|
||||||
|
uses: egor-tensin/setup-mingw@v2
|
||||||
|
with:
|
||||||
|
platform: x64
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
working-directory: ${{github.workspace}}/build/cmake
|
||||||
|
run: cmake ../.. -DCMAKE_BUILD_TYPE=Release ${{matrix.flags}}
|
||||||
|
|
||||||
|
- name: Make
|
||||||
|
working-directory: ${{github.workspace}}/build/cmake
|
||||||
|
run: cmake --build . --config Release
|
||||||
|
|
||||||
|
# Windows MSVC is the only oddball here; why does it install the
|
||||||
|
# binary into a subfolder, unlike all of the other builds? Let's
|
||||||
|
# make everything else easier by relocating it to the same spot
|
||||||
|
# as all the other build locations.
|
||||||
|
- name: Move the exe to someplace sensible
|
||||||
|
if: ${{matrix.os == 'windows-latest'}}
|
||||||
|
run: move-item -path "${{github.workspace}}/build/cmake/Release/tidy.exe" -destination "${{github.workspace}}/build/cmake/"
|
||||||
|
|
||||||
|
- name: Show Version
|
||||||
|
working-directory: ${{github.workspace}}/build/cmake
|
||||||
|
run: ${{matrix.vers_command}}
|
||||||
|
|
||||||
|
- uses: ruby/setup-ruby@v1
|
||||||
|
with:
|
||||||
|
ruby-version: 2.7
|
||||||
|
bundler-cache: true
|
||||||
|
|
||||||
|
- name: Bundle Install
|
||||||
|
working-directory: ${{github.workspace}}/regression_testing
|
||||||
|
run: bundle install
|
||||||
|
|
||||||
|
- name: Run Regression Test
|
||||||
|
working-directory: ${{github.workspace}}/regression_testing
|
||||||
|
run: ${{matrix.test_command}}
|
||||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -16,3 +16,4 @@ temp*
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.idea
|
.idea
|
||||||
*.old
|
*.old
|
||||||
|
/regression_testing/cases/*-results/
|
||||||
|
|
|
@ -394,7 +394,11 @@ install(TARGETS ${name}
|
||||||
LIBRARY DESTINATION ${LIB_INSTALL_DIR}
|
LIBRARY DESTINATION ${LIB_INSTALL_DIR}
|
||||||
)
|
)
|
||||||
install( FILES ${HFILES} DESTINATION ${INCLUDE_INSTALL_DIR} )
|
install( FILES ${HFILES} DESTINATION ${INCLUDE_INSTALL_DIR} )
|
||||||
|
if(MSVC)
|
||||||
|
# install(FILES $<TARGET_PDB_FILE:${name}> DESTINATION lib OPTIONAL)
|
||||||
|
INSTALL(FILES ${PROJECT_BINARY_DIR}/${name}.dir/Debug/${name}.pdb
|
||||||
|
DESTINATION lib CONFIGURATIONS Debug )
|
||||||
|
endif()
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
# Dynamic Library
|
# Dynamic Library
|
||||||
|
@ -412,9 +416,7 @@ if (BUILD_SHARED_LIB)
|
||||||
VERSION ${LIBTIDY_VERSION}
|
VERSION ${LIBTIDY_VERSION}
|
||||||
SOVERSION ${TIDY_MAJOR_VERSION} )
|
SOVERSION ${TIDY_MAJOR_VERSION} )
|
||||||
set_target_properties( ${name} PROPERTIES
|
set_target_properties( ${name} PROPERTIES
|
||||||
COMPILE_FLAGS "-DBUILD_SHARED_LIB" )
|
COMPILE_FLAGS "-DBUILD_SHARED_LIB -DBUILDING_SHARED_LIB")
|
||||||
set_target_properties( ${name} PROPERTIES
|
|
||||||
COMPILE_FLAGS "-DBUILDING_SHARED_LIB" )
|
|
||||||
install(TARGETS ${name}
|
install(TARGETS ${name}
|
||||||
RUNTIME DESTINATION ${BIN_INSTALL_DIR}
|
RUNTIME DESTINATION ${BIN_INSTALL_DIR}
|
||||||
ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
|
ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
|
||||||
|
@ -439,6 +441,14 @@ if (SUPPORT_CONSOLE_APP)
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
set_target_properties( ${name} PROPERTIES DEBUG_POSTFIX d )
|
set_target_properties( ${name} PROPERTIES DEBUG_POSTFIX d )
|
||||||
endif ()
|
endif ()
|
||||||
|
if (APPLE)
|
||||||
|
string(TIMESTAMP CURRENT_YEAR "%Y")
|
||||||
|
configure_file(
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/console/Info.plist.in
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/Info.plist
|
||||||
|
)
|
||||||
|
target_link_options(${name} PRIVATE LINKER:-sectcreate,__TEXT,__info_plist,Info.plist)
|
||||||
|
endif ()
|
||||||
if (NOT TIDY_CONSOLE_SHARED)
|
if (NOT TIDY_CONSOLE_SHARED)
|
||||||
set_target_properties( ${name} PROPERTIES
|
set_target_properties( ${name} PROPERTIES
|
||||||
COMPILE_FLAGS "-DTIDY_STATIC" )
|
COMPILE_FLAGS "-DTIDY_STATIC" )
|
||||||
|
|
10
README.md
10
README.md
|
@ -32,13 +32,14 @@ When you’re ready to add a great new feature, these write-ups may be useful.
|
||||||
- Discover how to add new tags to Tidy in [README/TAGS.md][130].
|
- Discover how to add new tags to Tidy in [README/TAGS.md][130].
|
||||||
- If you want to add new messages to Tidy, read [README/MESSAGE.md][150].
|
- If you want to add new messages to Tidy, read [README/MESSAGE.md][150].
|
||||||
- Configuration options can be added according to [README/OPTIONS.md][155].
|
- Configuration options can be added according to [README/OPTIONS.md][155].
|
||||||
|
- Pull Requests must pass all existing regression tests, or you must change existing regression test expectations with a good explanation. New features require that you add new regression tests. See [README/TESTING.md][165] for more details.
|
||||||
|
|
||||||
### Language Localization Guides
|
### Language Localization Guides
|
||||||
|
|
||||||
Tidy supports localization, and welcomes translations into various languages. Please read up on how to localize HTML Tidy.
|
Tidy supports localization, and welcomes translations into various languages. Please read up on how to localize HTML Tidy.
|
||||||
|
|
||||||
- The general README for localizing can be found in [/README/LOCALIZE.md][140].
|
- The general README for localizing can be found in [README/LOCALIZE.md][140].
|
||||||
- And [/localize/README.md][145] contains specific instructions for localizing.
|
- And [localize/README.md][145] contains specific instructions for localizing.
|
||||||
|
|
||||||
|
|
||||||
## Other Important Links
|
## Other Important Links
|
||||||
|
@ -88,9 +89,10 @@ HTML Tidy and LibTidy are free and open source software with a permissive licens
|
||||||
[125]: README/CONTRIBUTING.md
|
[125]: README/CONTRIBUTING.md
|
||||||
[130]: README/TAGS.md
|
[130]: README/TAGS.md
|
||||||
[135]: README/LICENSE.md
|
[135]: README/LICENSE.md
|
||||||
[140]: /README/LOCALIZE.md
|
[140]: README/LOCALIZE.md
|
||||||
[145]: /localize/README.md
|
[145]: localize/README.md
|
||||||
[150]: README/MESSAGE.md
|
[150]: README/MESSAGE.md
|
||||||
[155]: README/OPTIONS.md
|
[155]: README/OPTIONS.md
|
||||||
[160]: README/VERSION.md
|
[160]: README/VERSION.md
|
||||||
|
[165]: README/TESTING.md
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ Starting with **HTML Tidy** 5.4.0, HTACG will adopt a new branch management stra
|
||||||
|
|
||||||
As described thoroughly in our [VERSION.md](VERSION.md) document, this means that **master** will always consist of an even-numbered minor version, and activity will remain relatively quiet unless we backport a critical bug fix from **next**.
|
As described thoroughly in our [VERSION.md](VERSION.md) document, this means that **master** will always consist of an even-numbered minor version, and activity will remain relatively quiet unless we backport a critical bug fix from **next**.
|
||||||
|
|
||||||
The **next** branch, then will host the majority of our development activity, and any contributions and PR’s should be again this branch. This means that **next** will always consist of an odd minor version number.
|
The **next** branch, then will host the majority of our development activity, and any contributions and PR’s should be against this branch. This means that **next** will always consist of an odd minor version number.
|
||||||
|
|
||||||
|
|
||||||
## About Versioning
|
## About Versioning
|
||||||
|
|
|
@ -50,7 +50,7 @@ See the `CMakeLists.txt` file for other CMake **options** offered.
|
||||||
|
|
||||||
## Build PHP with the tidy-html5 library
|
## Build PHP with the tidy-html5 library
|
||||||
|
|
||||||
Due to API changes in the PHP source, `buffio.h` needs to be renamed to `tidybuffio.h` in the file `ext/tidy/tidy.c` in PHP's source.
|
Before PHP 7.1, due to API changes in the PHP source, `buffio.h` needs to be renamed to `tidybuffio.h` in the file `ext/tidy/tidy.c` in PHP's source.
|
||||||
|
|
||||||
That is - prior to configuring PHP run this in the PHP source directory:
|
That is - prior to configuring PHP run this in the PHP source directory:
|
||||||
~~~
|
~~~
|
||||||
|
|
|
@ -6,16 +6,18 @@ So you want to contribute to Tidy? Fantastic! Here's a brief overview on how bes
|
||||||
|
|
||||||
If you are having trouble running console `Tidy`, or using the `LibTidy` API in your own project, then maybe the best places to get help is either via a comment in [Tidy Issues](https://github.com/htacg/tidy-html5/issues), or on the [Tidy Mail Archive](https://lists.w3.org/Archives/Public/html-tidy/) list.
|
If you are having trouble running console `Tidy`, or using the `LibTidy` API in your own project, then maybe the best places to get help is either via a comment in [Tidy Issues](https://github.com/htacg/tidy-html5/issues), or on the [Tidy Mail Archive](https://lists.w3.org/Archives/Public/html-tidy/) list.
|
||||||
|
|
||||||
|
And please do a **search** using different **key** words - see [searching](https://help.github.com/articles/searching-issues-and-pull-requests/) - to make sure it is **not** a duplicate. If something similar has been discussed before, but you still feel this is **different**, then add that related reference in your post...
|
||||||
|
|
||||||
In either place please start with a short subject to describe the issue. If it involves running Tidy on an html file, or if it’s an API question, make sure to include:
|
In either place please start with a short subject to describe the issue. If it involves running Tidy on an html file, or if it’s an API question, make sure to include:
|
||||||
|
|
||||||
- the version: `$ tidy -v`
|
- the version: `$ tidy -v`
|
||||||
- what was the configuration used
|
- what was the configuration used
|
||||||
- a small sample input
|
- a small sample input
|
||||||
- the output
|
- the output
|
||||||
- the _expected_ output expected
|
- the _expected_ output
|
||||||
- some sample code (if an API question).
|
- some sample code (if an API question).
|
||||||
|
|
||||||
These data will make replication of your issue much simpler for us.
|
This information will make replication of your issue much simpler for us.
|
||||||
|
|
||||||
If you do add sample HTML input, then it can also be very helpful if that sample **passes** the W3C [validator](https://validator.w3.org/#validate_by_upload). Tidy attempts to follow all current W3C standards.
|
If you do add sample HTML input, then it can also be very helpful if that sample **passes** the W3C [validator](https://validator.w3.org/#validate_by_upload). Tidy attempts to follow all current W3C standards.
|
||||||
|
|
||||||
|
@ -39,17 +41,25 @@ Concerning the “Tidy Code Style,” checkout [CODESTYLE.md](CODESTYLE.md), but
|
||||||
|
|
||||||
### Using Git appropriately
|
### Using Git appropriately
|
||||||
|
|
||||||
1. Fork the repository to your GitHub account.
|
1. Fork tidy to your own github account. Use top right `Fork` icon.
|
||||||
2. Optionally create a **topical branch**, a branch whose name is succint but explains what you're doing, such as "feature/add-new-lines".
|
2. Optional: Generate a SSH Key, and add it to your `https://github.com/<name>` settings, SSH and GPG keys
|
||||||
3. Make your changes, committing at logical breaks.
|
3. Clone your own fork - `$ git clone git@github.com:<name>/tidy-html5.git [tidy-fork]` Or using `https`.
|
||||||
4. Push your work to your personal account.
|
4. Create a branch - `$ cd tidy-fork; $ git checkout -b <branch-name>`
|
||||||
5. [Create a pull request](https://help.github.com/articles/using-pull-requests).
|
5. Edit, and commit your changes to this `branch` of your fork.
|
||||||
6. Watch for comments or acceptance.
|
6. Test your changes, and if appropriate run [regression](https://github.com/htacg/tidy-html5-tests/blob/next/README/RUNTESTS.md) tests.
|
||||||
|
7. Publish the branch - `$ git push -u origin <branch-name.` - to your remote fork.
|
||||||
|
8. Create a [Pull Request](https://help.github.com/articles/about-pull-requests/), a **PR**, here.
|
||||||
|
9. Watch for comments, acceptance.
|
||||||
|
|
||||||
Please note - if you want to change multiple things that don't depend on each
|
Item 2., SSH Key, is optional, and only required if you want to use `clone git@github.com...`. And if you generate the ssh without a `passphrase`, things like `git push` can be done without a password. Just convenience. Alternatively you can use the `HTTPS` protocol...
|
||||||
other, it is better to use `branches`, and make sure you check the master branch back out before making more changes - that way we can take in each change seperately, otherwise Github has a tendancy to combine your requests into one.
|
|
||||||
|
|
||||||
If you are a continuing contributor then you will need to `rebase` your fork, to htacg `next`, **before** doing any more work, and likewise branches, otherwise we may not be able to cleanly merge your PR. This is a simple process:
|
Concerning 5., editing and committing your changes, **generally** it is better to `commit` changes often, adding an appropriate commit message to each, like `$ git commit -m "Is. #NNN - reason for change" <file[s]>`. This also aids in the **PR** review.
|
||||||
|
|
||||||
|
But the situation varies. Like adding say an option, which can mean several files have to be edited, where it is likely appropriate to combine a considerable number of edits into one commit. There can be no hard and fast rules on this.
|
||||||
|
|
||||||
|
Please note, if you want to change **multiple** things that don't depend on each other, use **different** `branches`, and make sure you check the `next` branch back out, before making more changes in a **new** branch name. That way we can take in each **change** separately, otherwise Github will **combine** all your branch commits into one **PR**.
|
||||||
|
|
||||||
|
See below on keeping your forks `next` fully in sync with here, called `upstream` - **this is important**.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ git remote add upstream git@github.com:htacg/tidy-html5.git # once only
|
$ git remote add upstream git@github.com:htacg/tidy-html5.git # once only
|
||||||
|
@ -62,8 +72,28 @@ $ git stash pop # if required, and fix conflicts
|
||||||
$ git push # update the fork next
|
$ git push # update the fork next
|
||||||
```
|
```
|
||||||
|
|
||||||
This can be repeated for other branches, too.
|
This has to be repeated for other branches, too. `$ git checkout <your-branch>`, `$ git rebase next`, fix conflict, if any, and `$ git push`, for **each** branch. It is **not** fun to keep multiple `branches` fully up-to-date with an active `upstream`...
|
||||||
|
|
||||||
|
Of course, the **regression** tests, 6., are really only if you have made `code` changes, but it is a good habit to get into. As can be seen the `tests` are in a **separate** repo, so you must also clone that, or **fork** and clone that, to be able to present a **PR**. This is best done in the same `root` folder where where you cloned `tidy-html5`, and your `tidy-fork`. See [RUNTESTS.md](https://github.com/htacg/tidy-html5-tests/blob/next/README/RUNTESTS.md).
|
||||||
|
|
||||||
|
In brief, for unix, to use your potentially **new** `tidy-fork` tidy executable -
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git clone git@github.com:htacg/tidy-html5-tests.git
|
||||||
|
$ cd tidy-html5-tests/tools-sh
|
||||||
|
$ ./testall.sh ../../tidy-fork/build/cmake/tidy
|
||||||
|
$ diff -u ../cases/testbase-expects ../cases/testbase-results
|
||||||
|
```
|
||||||
|
|
||||||
|
Use folder `tools-cmd` for windows. Run `alltest.bat --help`.
|
||||||
|
|
||||||
|
If the `tests` shows a different exit value, or there are differences between the `expects` and `results`, these **must** be studied, and checked, very carefully. There may be cases where the **new** `results` are correct, in which case a simultaneous **PR** for the forked `tests` **must** be created to match your forked source **PR**.
|
||||||
|
|
||||||
|
Do **NOT** change either the root `version.txt` here, nor the `cases/_version.txt` in `tests`. This will be handled by the person that does the **PR** merge. To differentiate your modified `tidy` there is a cmake option, like `-DTIDY_RC_NUMBER=I123`, which will appear in `tidy -v` as `5.7.16.I123`. The number can be anything, but using the relevant issue value is a good choice.
|
||||||
|
|
||||||
|
Add an `issue` if you need further **help**... thanks...
|
||||||
|
|
||||||
### Help Tidy Get Better
|
### Help Tidy Get Better
|
||||||
|
|
||||||
It goes without saying **all help is appreciated**. We need to work together to make Tidy better!
|
It goes without saying **all help is appreciated**. We need to work together to make Tidy better!
|
||||||
|
|
||||||
|
|
46
README/RELEASE.md
Normal file
46
README/RELEASE.md
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
# HTACG HTML Tidy
|
||||||
|
|
||||||
|
The **Release Process** is made up of many little steps. These have been documented before in issues like [394-1](https://github.com/htacg/tidy-html5/issues/394#issuecomment-206952915), and [394-2](https://github.com/htacg/tidy-html5/issues/394#issuecomment-207814834), and others, but this is to further **document** the process...
|
||||||
|
|
||||||
|
This assumes the current `next` branch is version 5.7.XXX. See VERSION.md for chosen version scheme.
|
||||||
|
|
||||||
|
## Release Process for 5.8.0
|
||||||
|
|
||||||
|
### Lead up:
|
||||||
|
|
||||||
|
- Create the next release milestone, 5.10, if not already done...
|
||||||
|
- Decide on PR's to include, bumping version.txt, accordingly...
|
||||||
|
- Decide on any show-stopper outstanding issues, and action...
|
||||||
|
- Change milestone of all excluded this time issues to the next 5.10 milestone, or to indefinite...
|
||||||
|
- Decide target date for release...
|
||||||
|
|
||||||
|
### The Release:
|
||||||
|
|
||||||
|
1. Update version.txt to 5.8.0, and date... commit
|
||||||
|
2. Create branch, `$ git checkout -b release/5.8`
|
||||||
|
3. Update README/vershist.log... perl script... commit
|
||||||
|
4. Add `$ git tag 5.8.0`
|
||||||
|
5. Publish `$ git push -u origin release/5.8 --tags`
|
||||||
|
6. Generate release 5.8.0.html... perl script... copy to...
|
||||||
|
7. Create Github release v5.8.0 - becomes [Latest Release](https://github.com/htacg/tidy-html5/releases)
|
||||||
|
8. Other things?
|
||||||
|
- Generate release binaries
|
||||||
|
- Add [binaries](http://binaries.html-tidy.org/)
|
||||||
|
- Add api [docs](http://api.html-tidy.org/#part_apiref)
|
||||||
|
- Update web pages [html-tidy.org](http://www.html-tidy.org/)
|
||||||
|
|
||||||
|
### Post:
|
||||||
|
|
||||||
|
- Update `master` branch to `release`
|
||||||
|
- Update `next` version.txt to 5.9.0, open for new fixes...
|
||||||
|
- Add more binaries...
|
||||||
|
|
||||||
|
## Notes on `Release Process`:
|
||||||
|
|
||||||
|
This **HTACG HTML Tidy** `official` release process must be supplemented with distribution by others.
|
||||||
|
|
||||||
|
Of course, if possible, we recomend building tidy from the git source, it is easy, but also in some OS'es others offer distribution in various ways...
|
||||||
|
|
||||||
|
See [Get Tidy](http://www.html-tidy.org/#homepage19700601get_tidy) - This page really needs expanding. There are some suggestions pending, and more feedback welcome...
|
||||||
|
|
||||||
|
; eof
|
72
README/TESTING.md
Normal file
72
README/TESTING.md
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
# Testing
|
||||||
|
|
||||||
|
It‘s critical that changes you introduce do not cause regressions, i.e., that
|
||||||
|
Tidy’s output remains consistent with the introduction of your changes, except
|
||||||
|
for very specific circumstances.
|
||||||
|
|
||||||
|
Additionally, changes that you introduce to Tidy must usually be accompanied by
|
||||||
|
one or more test cases demonstrating the new feature or changed behavior.
|
||||||
|
|
||||||
|
Both of these concerns can be addressed with the Tidy repository’s automated
|
||||||
|
regression testing features, which are enabled by Github Actions. Any pull
|
||||||
|
request you make will automatically test your PR against the existing set of
|
||||||
|
test cases, and any failures are prima facie grounds for rejecting the PR.
|
||||||
|
|
||||||
|
You _must_ test your changes locally using the tools and test cases provided in
|
||||||
|
the `regression_testing/` directory prior to submitting a PR, including adding
|
||||||
|
test cases to this directory as needed.
|
||||||
|
|
||||||
|
|
||||||
|
## Changes to Existing Output
|
||||||
|
|
||||||
|
If your changes affect existing output, it’s critical to understand _why_, and
|
||||||
|
if necessary, regenerate the `-expects` files so that the regression testing
|
||||||
|
tool will pass with your new changes. These `-expects` changes, of course,
|
||||||
|
become part of your Pull Request, and will be subject to review and conversation
|
||||||
|
in the Pull Request thread.
|
||||||
|
|
||||||
|
If you do cause such regressions, please be prepared to defend why they are
|
||||||
|
needed.
|
||||||
|
|
||||||
|
## New Tests
|
||||||
|
|
||||||
|
If you’re adding new features to Tidy, code reviewers need to be able to see the
|
||||||
|
intended effect of your changes via some type of demonstration. As such, please
|
||||||
|
write at least one test case in `github-cases` and put the expected results in
|
||||||
|
`github-expects`. These also constitute a part of your Pull Request, and more
|
||||||
|
importantly, will become part of the standard regression testing suite once the
|
||||||
|
PR is merged.
|
||||||
|
|
||||||
|
Try to keep your test case(s) as succint as possible, and do try to put some HTML
|
||||||
|
comments in the file explaining the purpose of the test case, and if applicable,
|
||||||
|
the Github issue and/or PR number.
|
||||||
|
|
||||||
|
Note that the files generated in `github-results` for your new test cases are
|
||||||
|
suitable for use in `github-expects` when you are satisfied with the results.
|
||||||
|
|
||||||
|
A sample `case-123a@0.html` might represent issue #123, test **a** in a series
|
||||||
|
of multiple tests for this issue number, expecting Tidy exit code 0, and might
|
||||||
|
look something like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<!--
|
||||||
|
This test case represents HTML Tidy issue #123, and demonstrates
|
||||||
|
the use of new feature #xxx. Tidy should exit with status code 0.
|
||||||
|
The reason this change is needed is because WHATWG suddently
|
||||||
|
determined that a standards change #yyyy impacts us because of zzz.
|
||||||
|
-->
|
||||||
|
<head>
|
||||||
|
<title>Case #123a</title>
|
||||||
|
</head>
|
||||||
|
<p>The quick brown fox jumps over the lazy dog.<//p>
|
||||||
|
<body>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Regression Testing Specifics
|
||||||
|
|
||||||
|
The regression testing mechanism is described more fully in [regression_testing/README.md](../regression_testing/README.md).
|
1
build/cmake/.gitignore
vendored
1
build/cmake/.gitignore
vendored
|
@ -33,3 +33,4 @@ tidy1.xsl
|
||||||
tidy.pc
|
tidy.pc
|
||||||
*.vcproj
|
*.vcproj
|
||||||
.pkg
|
.pkg
|
||||||
|
Info.plist
|
||||||
|
|
|
@ -4,11 +4,15 @@
|
||||||
@set TMPPRJ=tidy
|
@set TMPPRJ=tidy
|
||||||
@set TMPSRC=..\..
|
@set TMPSRC=..\..
|
||||||
@set TMPBGN=%TIME%
|
@set TMPBGN=%TIME%
|
||||||
@set TMPINS=..\..\..\software
|
@set TMPINS=D:\Projects\3rdParty
|
||||||
@set TMPLOG=bldlog-1.txt
|
@set TMPLOG=bldlog-1.txt
|
||||||
@set DOPAUSE=1
|
@set DOPAUSE=1
|
||||||
|
@set TMPGEN=Visual Studio 16 2019
|
||||||
|
@set TMPBR=next
|
||||||
|
@set TMPINDBG=0
|
||||||
|
|
||||||
@set TMPOPTS=-DCMAKE_INSTALL_PREFIX=%TMPINS%
|
@set TMPOPTS=-G "%TMPGEN%" -A Win32
|
||||||
|
@set TMPOPTS=%TMPOPTS% -DCMAKE_INSTALL_PREFIX=%TMPINS%
|
||||||
@set TMPOPTS=%TMPOPTS% -DBUILD_SHARED_LIB=ON
|
@set TMPOPTS=%TMPOPTS% -DBUILD_SHARED_LIB=ON
|
||||||
|
|
||||||
:RPT
|
:RPT
|
||||||
|
@ -23,9 +27,11 @@
|
||||||
:GOTCMD
|
:GOTCMD
|
||||||
|
|
||||||
@call chkmsvc %TMPPRJ%
|
@call chkmsvc %TMPPRJ%
|
||||||
@call chkbranch master
|
@if "%TMPBR%x" == "x" goto DNBR
|
||||||
|
@call chkbranch %TMPBR%
|
||||||
|
:DNBR
|
||||||
|
|
||||||
@echo Build %DATE% %TIME% > %TMPLOG%
|
@echo Build %TMPPRJ% 32-bits %DATE% %TIME%, in %CD%, to %TMPLOG% > %TMPLOG%
|
||||||
|
|
||||||
@if NOT EXIST %TMPSRC%\nul goto NOSRC
|
@if NOT EXIST %TMPSRC%\nul goto NOSRC
|
||||||
|
|
||||||
|
@ -57,6 +63,11 @@
|
||||||
@call elapsed %TMPBGN%
|
@call elapsed %TMPBGN%
|
||||||
@echo Appears a successful build... see %TMPLOG%
|
@echo Appears a successful build... see %TMPLOG%
|
||||||
@echo Note install location %TMPINS%
|
@echo Note install location %TMPINS%
|
||||||
|
@if "%TMPINDBG%x" == "1x" (
|
||||||
|
@echo Will install Debug and Release
|
||||||
|
) else {
|
||||||
|
@echo Will only intall Release
|
||||||
|
)
|
||||||
@echo.
|
@echo.
|
||||||
|
|
||||||
@REM ##############################################
|
@REM ##############################################
|
||||||
|
@ -86,10 +97,12 @@
|
||||||
:DOINST
|
:DOINST
|
||||||
@echo Proceeding with INSTALL...
|
@echo Proceeding with INSTALL...
|
||||||
@echo.
|
@echo.
|
||||||
|
@if NOT "%TMPINDBG%x" == "1x" goto DNDBGIN
|
||||||
@echo Doing: 'cmake --build . --config Debug --target INSTALL'
|
@echo Doing: 'cmake --build . --config Debug --target INSTALL'
|
||||||
@echo Doing: 'cmake --build . --config Debug --target INSTALL' >> %TMPLOG% 2>&1
|
@echo Doing: 'cmake --build . --config Debug --target INSTALL' >> %TMPLOG% 2>&1
|
||||||
@cmake --build . --config Debug --target INSTALL >> %TMPLOG% 2>&1
|
@cmake --build . --config Debug --target INSTALL >> %TMPLOG% 2>&1
|
||||||
@if ERRORLEVEL 1 goto ERR4
|
@if ERRORLEVEL 1 goto ERR4
|
||||||
|
:DNDBGIN
|
||||||
|
|
||||||
@echo Doing: 'cmake --build . --config Release --target INSTALL'
|
@echo Doing: 'cmake --build . --config Release --target INSTALL'
|
||||||
@echo Doing: 'cmake --build . --config Release --target INSTALL' >> %TMPLOG% 2>&1
|
@echo Doing: 'cmake --build . --config Release --target INSTALL' >> %TMPLOG% 2>&1
|
||||||
|
|
139
build/cmake/gen-html.sh
Executable file
139
build/cmake/gen-html.sh
Executable file
|
@ -0,0 +1,139 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#< gen-html.sh 2021/03/26, from gen-html.bat
|
||||||
|
BN=`basename $0`
|
||||||
|
|
||||||
|
ask()
|
||||||
|
{
|
||||||
|
pause
|
||||||
|
if [ ! "$?" = "0" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# @REM Build HTML from log of 'version.txt'
|
||||||
|
# @REM Versify the tools used
|
||||||
|
echo "$BN: Doing: 'verhist.pl -? >/dev/null'"
|
||||||
|
verhist.pl -? >/dev/null
|
||||||
|
if [ ! "$?" = "0" ]; then
|
||||||
|
echo "Unable to run 'verhist.pl'! *** FIX ME ***"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "$BN: Doing: 'emailobfuscate.pl -? >/dev/null'"
|
||||||
|
emailobfuscate.pl -? >/dev/null
|
||||||
|
if [ ! "$?" = "0" ]; then
|
||||||
|
echo "Unable to run 'emailobfuscate.pl'! *** FIX ME ***"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
TMPFIL1="../../version.txt"
|
||||||
|
if [ ! -f "$TMPFIL1" ]; then
|
||||||
|
echo "Can NOT locate $TMPFIL1, in $(pwd) - *** FIX ME ***"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$BN: Doing: 'dirmin $TMPFIL1'"
|
||||||
|
ls -l "$TMPFIL1"
|
||||||
|
|
||||||
|
# TMPVER=$(cat $TMPFIL1)
|
||||||
|
TMPCNT=0
|
||||||
|
while read -r a; do
|
||||||
|
TMPCNT=`expr $TMPCNT + 1`;
|
||||||
|
if [ ! -z "$a" ]; then
|
||||||
|
echo "$TMPCNT: '$a'"
|
||||||
|
if [ "$TMPCNT" = "1" ]; then
|
||||||
|
export TMPVER="$a";
|
||||||
|
fi
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
done < $TMPFIL1
|
||||||
|
|
||||||
|
echo "Current version '$TMPVER' ..."
|
||||||
|
TMPLOG1="../../../temp-$TMPVER.log"
|
||||||
|
TMPLOG2="../../../temp2-$TMPVER.log"
|
||||||
|
TMPLOG3="../../../temp3-$TMPVER.log"
|
||||||
|
|
||||||
|
if [ ! -f "$TMPLOG1" ]; then
|
||||||
|
echo "$BN: Doing: 'git log -p $TMPFIL1 > $TMPLOG1'"
|
||||||
|
git log -p $TMPFIL1 > $TMPLOG1
|
||||||
|
if [ ! -f "$TMPLOG1" ]; then
|
||||||
|
echo "Gen of $TMPLOG1 FAILED! *** FIX ME ***"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$BN: Got log 1 '$TMPLOG1' ..."
|
||||||
|
ls -l "$TMPLOG1"
|
||||||
|
|
||||||
|
if [ ! -f "$TMPLOG2" ]; then
|
||||||
|
echo "$BN: Doing: 'verhist.pl $TMPLOG1 -o $TMPLOG2'"
|
||||||
|
verhist.pl $TMPLOG1 -o $TMPLOG2
|
||||||
|
if [ ! -f "$TMPLOG2" ]; then
|
||||||
|
echo "Gen of $TMPLOG2 FAILED! *** FIX ME ***"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$BN: Got log 2 '$TMPLOG2' ..."
|
||||||
|
ls -l $TMPLOG2
|
||||||
|
|
||||||
|
TMPV="$1"
|
||||||
|
if [ -z "$TMPV" ]; then
|
||||||
|
echo "Give the cut-off version, like 5.6.0, to continue.."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$BN: Doing: 'grep $TMPV $TMPLOG2'"
|
||||||
|
grep $TMPV $TMPLOG2
|
||||||
|
if [ ! "$?" = "0" ]; then
|
||||||
|
echo "Failed to find '$TMPV'... check the file '$TMPLOG2'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
TMPD="$2"
|
||||||
|
if [ -z "$TMPD" ]; then
|
||||||
|
echo "Give the DATE of the cut-off, like 'Sat Nov 25 14:50:00 2017 +0100', to continue..."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$TMPLOG3" ]; then
|
||||||
|
echo "$BN: Doing: 'git log "--decorate=full" "--since=$TMPD" > $TMPLOG3'"
|
||||||
|
git log "--decorate=full" "--since=$TMPD" > $TMPLOG3
|
||||||
|
if [ ! -f "$TMPLOG3" ]; then
|
||||||
|
echo "Failed to generate 'git log ...' - *** FIX ME ***"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$BN: Got log 3 '$TMPLOG3' ..."
|
||||||
|
ls -l "$TMPLOG3"
|
||||||
|
|
||||||
|
# @REM at last generate the release HTML
|
||||||
|
|
||||||
|
TMPHTM="../../../temp-$TMPVER.html"
|
||||||
|
if [ ! -f "$TMPHTM" ]; then
|
||||||
|
echo "$BN: Doing: 'emailobfuscate.pl $TMPLOG3 -o $TMPHTM -a $TMPVER -i'"
|
||||||
|
emailobfuscate.pl $TMPLOG3 -o $TMPHTM -a $TMPVER -i
|
||||||
|
if [ ! -f "$TMPHTM" ]; then
|
||||||
|
echo "FAILED to generate $TMPHTM! *** FIX ME ***"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$BN: Got HTML file '$TMPHTM' ..."
|
||||||
|
ls -l "$TMPHTM"
|
||||||
|
|
||||||
|
echo "$BN: Generation appears ok, check file '$TMPHTM' in browser..."
|
||||||
|
### start $TMPHTM
|
||||||
|
TMPVFIL="../../README/verhist.log"
|
||||||
|
if [ ! -f "$TMPVFIL" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "$BN: *** WARNING *** - Missing existing '$TMPVFIL'"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
echo "$BN: Is all OK, final actions, for release are -"
|
||||||
|
echo "copy $TMPLOG2 to $TMPVFIL - push this to repo..."
|
||||||
|
echo "copy $TMPHTM to the binaries repo..."
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# @REM eof
|
2
build/win64/.gitignore
vendored
2
build/win64/.gitignore
vendored
|
@ -21,3 +21,5 @@ install_manifest.txt
|
||||||
_CPack_Packages/*
|
_CPack_Packages/*
|
||||||
dir
|
dir
|
||||||
*.VC.db
|
*.VC.db
|
||||||
|
.vs/*
|
||||||
|
tidy.pc
|
||||||
|
|
202
build/win64/build-me-v14.bat
Normal file
202
build/win64/build-me-v14.bat
Normal file
|
@ -0,0 +1,202 @@
|
||||||
|
@setlocal
|
||||||
|
@REM 20170702 - Check branch
|
||||||
|
@set TMPBR=next
|
||||||
|
@REM 20161002 - Change to msvc140 build
|
||||||
|
@set VCVERS=14
|
||||||
|
@set GENERATOR=Visual Studio %VCVERS% Win64
|
||||||
|
@REM 20160324 - Change to relative, and use choice
|
||||||
|
@set TMPPRJ=tidy
|
||||||
|
@echo Build %TMPPRJ% project, in 64-bits
|
||||||
|
@set TMPLOG=bldlog-1.txt
|
||||||
|
@set BLDDIR=%CD%
|
||||||
|
@set TMPROOT=..\..\..
|
||||||
|
@set SET_BAT=%ProgramFiles(x86)%\Microsoft Visual Studio %VCVERS%.0\VC\vcvarsall.bat
|
||||||
|
@if NOT EXIST "%SET_BAT%" goto NOBAT
|
||||||
|
@REM if NOT EXIST %TMPROOT%\nul goto NOROOT
|
||||||
|
@set TMPSRC=..\..
|
||||||
|
@if NOT EXIST %TMPSRC%\CMakeLists.txt goto NOCM
|
||||||
|
@set DOPAUSE=1
|
||||||
|
|
||||||
|
@if /I "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" (
|
||||||
|
@set TMPINST=%TMPROOT%\software.x64
|
||||||
|
) ELSE (
|
||||||
|
@if /I "%PROCESSOR_ARCHITECTURE%" EQU "x86_64" (
|
||||||
|
@set TMPINST=%TMPROOT%\software.x64
|
||||||
|
) ELSE (
|
||||||
|
@echo ERROR: Appears 64-bit is NOT available... aborting...
|
||||||
|
@goto ISERR
|
||||||
|
)
|
||||||
|
)
|
||||||
|
@if NOT EXIST %TMPINST%\nul goto NOINST
|
||||||
|
|
||||||
|
@echo Doing build output to %TMPLOG%
|
||||||
|
@echo Doing build output to %TMPLOG% > %TMPLOG%
|
||||||
|
|
||||||
|
@echo Doing: 'call "%SET_BAT%" %PROCESSOR_ARCHITECTURE%'
|
||||||
|
@echo Doing: 'call "%SET_BAT%" %PROCESSOR_ARCHITECTURE%' >> %TMPLOG%
|
||||||
|
@call "%SET_BAT%" %PROCESSOR_ARCHITECTURE% >> %TMPLOG% 2>&1
|
||||||
|
@if ERRORLEVEL 1 goto ERR0
|
||||||
|
@REM call setupqt64
|
||||||
|
@cd %BLDDIR%
|
||||||
|
|
||||||
|
@REM :DNARCH
|
||||||
|
|
||||||
|
@REM ############################################
|
||||||
|
@REM NOTE: SPECIAL INSTALL LOCATION
|
||||||
|
@REM Adjust to suit your environment
|
||||||
|
@REM ##########################################
|
||||||
|
@REM set TMPINST=F:\Projects\software.x64
|
||||||
|
@set TMPOPTS=-DCMAKE_INSTALL_PREFIX=%TMPINST%
|
||||||
|
@set TMPOPTS=%TMPOPTS% -G "%GENERATOR%"
|
||||||
|
@REM set TMPOPTS=%TMPOPTS% -DTIDY_CONFIG_FILE="C:\MDOS\tidy5.cfg"
|
||||||
|
@REM set TMPOPTS=%TMPOPTS% -DTIDY_USER_CONFIG_FILE="C:\MDOS\tidy5.cfg"
|
||||||
|
@set TMPOPTS=%TMPOPTS% -DBUILD_SHARED_LIB:BOOL=OFF
|
||||||
|
|
||||||
|
:RPT
|
||||||
|
@if "%~1x" == "x" goto GOTCMD
|
||||||
|
@if "%~1x" == "NOPAUSEx" (
|
||||||
|
@set DOPAUSE=0
|
||||||
|
) else (
|
||||||
|
@set TMPOPTS=%TMPOPTS% %1
|
||||||
|
)
|
||||||
|
@shift
|
||||||
|
@goto RPT
|
||||||
|
:GOTCMD
|
||||||
|
|
||||||
|
@call chkmsvc %TMPPRJ%
|
||||||
|
@call chkbranch %TMPBR%
|
||||||
|
@if ERRORLEVEL 1 goto BADBR
|
||||||
|
:GOTBR
|
||||||
|
|
||||||
|
@echo Begin %DATE% %TIME%, output to %TMPLOG%
|
||||||
|
@echo Begin %DATE% %TIME% >> %TMPLOG%
|
||||||
|
|
||||||
|
@echo Doing: 'cmake %TMPSRC% %TMPOPTS%'
|
||||||
|
@echo Doing: 'cmake %TMPSRC% %TMPOPTS%' >> %TMPLOG%
|
||||||
|
@cmake %TMPSRC% %TMPOPTS% >> %TMPLOG% 2>&1
|
||||||
|
@if ERRORLEVEL 1 goto ERR1
|
||||||
|
|
||||||
|
@echo Doing: 'cmake --build . --config debug'
|
||||||
|
@echo Doing: 'cmake --build . --config debug' >> %TMPLOG%
|
||||||
|
@cmake --build . --config debug >> %TMPLOG%
|
||||||
|
@if ERRORLEVEL 1 goto ERR2
|
||||||
|
|
||||||
|
@echo Doing: 'cmake --build . --config release'
|
||||||
|
@echo Doing: 'cmake --build . --config release' >> %TMPLOG%
|
||||||
|
@cmake --build . --config release >> %TMPLOG% 2>&1
|
||||||
|
@if ERRORLEVEL 1 goto ERR3
|
||||||
|
:DNREL
|
||||||
|
|
||||||
|
@echo Appears a successful build
|
||||||
|
@echo Note install location %TMPINST%
|
||||||
|
@echo.
|
||||||
|
|
||||||
|
@REM ##############################################
|
||||||
|
@REM Check if should continue with install
|
||||||
|
@REM ##############################################
|
||||||
|
@if "%DOPAUSE%x" == "0x" goto DOINST
|
||||||
|
@choice /? >nul 2>&1
|
||||||
|
@if ERRORLEVEL 1 goto NOCHOICE
|
||||||
|
@choice /D N /T 10 /M "Pausing for 10 seconds. Def=N"
|
||||||
|
@if ERRORLEVEL 2 goto GOTNO
|
||||||
|
@goto DOINST
|
||||||
|
:NOCHOICE
|
||||||
|
@echo Appears OS does not have the 'choice' command!
|
||||||
|
@ask *** CONTINUE with install? *** Only y continues
|
||||||
|
@if ERRORLEVEL 2 goto NOASK
|
||||||
|
@if ERRORLEVEL 1 goto DOINST
|
||||||
|
@echo Skipping install to %TMPINST% at this time...
|
||||||
|
@echo.
|
||||||
|
@goto END
|
||||||
|
:NOASK
|
||||||
|
@echo 'ask' utility not found in path...
|
||||||
|
@echo.
|
||||||
|
@echo *** CONTINUE with install? *** Only Ctrl+c aborts...
|
||||||
|
@echo.
|
||||||
|
@pause
|
||||||
|
|
||||||
|
:DOINST
|
||||||
|
@echo Proceeding with INSTALL...
|
||||||
|
@echo.
|
||||||
|
@REM cmake -P cmake_install.cmake
|
||||||
|
@echo Doing: 'cmake --build . --config debug --target INSTALL'
|
||||||
|
@echo Doing: 'cmake --build . --config debug --target INSTALL' >> %TMPLOG%
|
||||||
|
@cmake --build . --config debug --target INSTALL >> %TMPLOG% 2>&1
|
||||||
|
|
||||||
|
@echo Doing: 'cmake --build . --config release --target INSTALL'
|
||||||
|
@echo Doing: 'cmake --build . --config release --target INSTALL' >> %TMPLOG%
|
||||||
|
@cmake --build . --config release --target INSTALL >> %TMPLOG% 2>&1
|
||||||
|
|
||||||
|
@fa4 " -- " %TMPLOG%
|
||||||
|
|
||||||
|
@echo Done build and install of %TMPPRJ%...
|
||||||
|
|
||||||
|
@goto END
|
||||||
|
|
||||||
|
:GOTNO
|
||||||
|
@echo.
|
||||||
|
@echo No install at this time, but there may be an updexe.bat to copy the EXE to c:\MDOS...
|
||||||
|
@echo.
|
||||||
|
@goto END
|
||||||
|
|
||||||
|
:NOBAT
|
||||||
|
@echo Can NOT locate MSVC setup batch "%SET_BAT%"! *** FIX ME ***
|
||||||
|
@goto ISERR
|
||||||
|
|
||||||
|
@REM :NOROOT
|
||||||
|
@REM @echo Can NOT locate %TMPROOT%! *** FIX ME ***
|
||||||
|
@REM @goto ISERR
|
||||||
|
|
||||||
|
:NOCM
|
||||||
|
@echo Can NOT locate %TMPSRC%\CMakeLists.txt! *** FIX ME ***
|
||||||
|
@goto ISERR
|
||||||
|
|
||||||
|
:NOINST
|
||||||
|
@echo Can NOT locate directory %TMPINST%! *** FIX ME ***
|
||||||
|
@goto ISERR
|
||||||
|
|
||||||
|
:ERR0
|
||||||
|
@echo MSVC 10 setup error
|
||||||
|
@goto ISERR
|
||||||
|
|
||||||
|
:ERR1
|
||||||
|
@echo cmake config, generation error
|
||||||
|
@goto ISERR
|
||||||
|
|
||||||
|
:ERR2
|
||||||
|
@echo debug build error
|
||||||
|
@goto ISERR
|
||||||
|
|
||||||
|
:ERR3
|
||||||
|
@fa4 "mt.exe : general error c101008d:" %TMPLOG% >nul
|
||||||
|
@if ERRORLEVEL 1 goto ERR32
|
||||||
|
:ERR33
|
||||||
|
@echo release build error
|
||||||
|
@goto ISERR
|
||||||
|
:ERR32
|
||||||
|
@echo Stupid error... trying again...
|
||||||
|
@echo Doing: 'cmake --build . --config release'
|
||||||
|
@echo Doing: 'cmake --build . --config release' >> %TMPLOG%
|
||||||
|
@cmake --build . --config release >> %TMPLOG% 2>&1
|
||||||
|
@if ERRORLEVEL 1 goto ERR33
|
||||||
|
@goto DNREL
|
||||||
|
|
||||||
|
:BADBR
|
||||||
|
@call git checkout %TMPBR%
|
||||||
|
@call chkbranch %TMPBR%
|
||||||
|
@if ERRORLEVEL 1 goto BADBR2
|
||||||
|
@goto GOTBR
|
||||||
|
:BADBR2
|
||||||
|
@call shwbranch
|
||||||
|
@echo Not on correct branch %TMPBR%
|
||||||
|
@goto ISERR
|
||||||
|
|
||||||
|
:ISERR
|
||||||
|
@endlocal
|
||||||
|
@exit /b 1
|
||||||
|
|
||||||
|
:END
|
||||||
|
@endlocal
|
||||||
|
@exit /b 0
|
||||||
|
|
||||||
|
@REM eof
|
|
@ -1,56 +1,19 @@
|
||||||
@setlocal
|
@setlocal
|
||||||
@REM 20170702 - Check branch
|
|
||||||
@set TMPBR=next
|
@set TMPVER=1
|
||||||
@REM 20161002 - Change to msvc140 build
|
|
||||||
@set VCVERS=14
|
|
||||||
@set GENERATOR=Visual Studio %VCVERS% Win64
|
|
||||||
@REM 20160324 - Change to relative, and use choice
|
|
||||||
@set TMPPRJ=tidy
|
@set TMPPRJ=tidy
|
||||||
@echo Build %TMPPRJ% project, in 64-bits
|
|
||||||
@set TMPLOG=bldlog-1.txt
|
|
||||||
@set BLDDIR=%CD%
|
|
||||||
@set TMPROOT=..\..\..
|
|
||||||
@set SET_BAT=%ProgramFiles(x86)%\Microsoft Visual Studio %VCVERS%.0\VC\vcvarsall.bat
|
|
||||||
@if NOT EXIST "%SET_BAT%" goto NOBAT
|
|
||||||
@REM if NOT EXIST %TMPROOT%\nul goto NOROOT
|
|
||||||
@set TMPSRC=..\..
|
@set TMPSRC=..\..
|
||||||
@if NOT EXIST %TMPSRC%\CMakeLists.txt goto NOCM
|
@set TMPBGN=%TIME%
|
||||||
|
@set TMPINS=D:\Projects\3rdParty.x64
|
||||||
|
@set TMPLOG=bldlog-1.txt
|
||||||
@set DOPAUSE=1
|
@set DOPAUSE=1
|
||||||
|
@set TMPGEN=Visual Studio 16 2019
|
||||||
|
@set TMPBR=next
|
||||||
|
@set TMPINDBG=1
|
||||||
|
|
||||||
@if /I "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" (
|
@set TMPOPTS=-G "%TMPGEN%" -A x64
|
||||||
@set TMPINST=%TMPROOT%\software.x64
|
@set TMPOPTS=%TMPOPTS% -DCMAKE_INSTALL_PREFIX=%TMPINS%
|
||||||
) ELSE (
|
@set TMPOPTS=%TMPOPTS% -DBUILD_SHARED_LIB=ON
|
||||||
@if /I "%PROCESSOR_ARCHITECTURE%" EQU "x86_64" (
|
|
||||||
@set TMPINST=%TMPROOT%\software.x64
|
|
||||||
) ELSE (
|
|
||||||
@echo ERROR: Appears 64-bit is NOT available... aborting...
|
|
||||||
@goto ISERR
|
|
||||||
)
|
|
||||||
)
|
|
||||||
@if NOT EXIST %TMPINST%\nul goto NOINST
|
|
||||||
|
|
||||||
@echo Doing build output to %TMPLOG%
|
|
||||||
@echo Doing build output to %TMPLOG% > %TMPLOG%
|
|
||||||
|
|
||||||
@echo Doing: 'call "%SET_BAT%" %PROCESSOR_ARCHITECTURE%'
|
|
||||||
@echo Doing: 'call "%SET_BAT%" %PROCESSOR_ARCHITECTURE%' >> %TMPLOG%
|
|
||||||
@call "%SET_BAT%" %PROCESSOR_ARCHITECTURE% >> %TMPLOG% 2>&1
|
|
||||||
@if ERRORLEVEL 1 goto ERR0
|
|
||||||
@REM call setupqt64
|
|
||||||
@cd %BLDDIR%
|
|
||||||
|
|
||||||
@REM :DNARCH
|
|
||||||
|
|
||||||
@REM ############################################
|
|
||||||
@REM NOTE: SPECIAL INSTALL LOCATION
|
|
||||||
@REM Adjust to suit your environment
|
|
||||||
@REM ##########################################
|
|
||||||
@REM set TMPINST=F:\Projects\software.x64
|
|
||||||
@set TMPOPTS=-DCMAKE_INSTALL_PREFIX=%TMPINST%
|
|
||||||
@set TMPOPTS=%TMPOPTS% -G "%GENERATOR%"
|
|
||||||
@REM set TMPOPTS=%TMPOPTS% -DTIDY_CONFIG_FILE="C:\MDOS\tidy5.cfg"
|
|
||||||
@REM set TMPOPTS=%TMPOPTS% -DTIDY_USER_CONFIG_FILE="C:\MDOS\tidy5.cfg"
|
|
||||||
@set TMPOPTS=%TMPOPTS% -DBUILD_SHARED_LIB:BOOL=OFF
|
|
||||||
|
|
||||||
:RPT
|
:RPT
|
||||||
@if "%~1x" == "x" goto GOTCMD
|
@if "%~1x" == "x" goto GOTCMD
|
||||||
|
@ -64,31 +27,48 @@
|
||||||
:GOTCMD
|
:GOTCMD
|
||||||
|
|
||||||
@call chkmsvc %TMPPRJ%
|
@call chkmsvc %TMPPRJ%
|
||||||
|
@if "%TMPBR%x" == "x" goto DNBR
|
||||||
@call chkbranch %TMPBR%
|
@call chkbranch %TMPBR%
|
||||||
@if ERRORLEVEL 1 goto BADBR
|
@if ERRORLEVEL 1 goto BAD_BR
|
||||||
:GOTBR
|
:DNBR
|
||||||
|
|
||||||
@echo Begin %DATE% %TIME%, output to %TMPLOG%
|
@echo Build %TMPPRJ% 64-bits %DATE% %TIME%, in %CD%, to %TMPLOG% > %TMPLOG%
|
||||||
@echo Begin %DATE% %TIME% >> %TMPLOG%
|
|
||||||
|
|
||||||
@echo Doing: 'cmake %TMPSRC% %TMPOPTS%'
|
@if NOT EXIST %TMPSRC%\nul goto NOSRC
|
||||||
@echo Doing: 'cmake %TMPSRC% %TMPOPTS%' >> %TMPLOG%
|
|
||||||
@cmake %TMPSRC% %TMPOPTS% >> %TMPLOG% 2>&1
|
@echo Build source %TMPSRC%... all output to build log %TMPLOG%
|
||||||
|
@echo Build source %TMPSRC%... all output to build log %TMPLOG% >> %TMPLOG%
|
||||||
|
|
||||||
|
@if EXIST build-cmake.bat (
|
||||||
|
@call build-cmake >> %TMPLOG%
|
||||||
|
)
|
||||||
|
|
||||||
|
@if NOT EXIST %TMPSRC%\CMakeLists.txt goto NOCM
|
||||||
|
|
||||||
|
@echo Doing: 'cmake -S %TMPSRC% %TMPOPTS%'
|
||||||
|
@echo Doing: 'cmake -S %TMPSRC% %TMPOPTS%' >> %TMPLOG% 2>&1
|
||||||
|
@cmake -S %TMPSRC% %TMPOPTS% >> %TMPLOG% 2>&1
|
||||||
@if ERRORLEVEL 1 goto ERR1
|
@if ERRORLEVEL 1 goto ERR1
|
||||||
|
|
||||||
@echo Doing: 'cmake --build . --config debug'
|
@echo Doing: 'cmake --build . --config Debug'
|
||||||
@echo Doing: 'cmake --build . --config debug' >> %TMPLOG%
|
@echo Doing: 'cmake --build . --config Debug' >> %TMPLOG% 2>&1
|
||||||
@cmake --build . --config debug >> %TMPLOG%
|
@cmake --build . --config Debug >> %TMPLOG% 2>&1
|
||||||
@if ERRORLEVEL 1 goto ERR2
|
@if ERRORLEVEL 1 goto ERR2
|
||||||
|
|
||||||
@echo Doing: 'cmake --build . --config release'
|
@echo Doing: 'cmake --build . --config Release'
|
||||||
@echo Doing: 'cmake --build . --config release' >> %TMPLOG%
|
@echo Doing: 'cmake --build . --config Release' >> %TMPLOG% 2>&1
|
||||||
@cmake --build . --config release >> %TMPLOG% 2>&1
|
@cmake --build . --config Release >> %TMPLOG% 2>&1
|
||||||
@if ERRORLEVEL 1 goto ERR3
|
@if ERRORLEVEL 1 goto ERR3
|
||||||
:DNREL
|
|
||||||
|
|
||||||
@echo Appears a successful build
|
@fa4 "***" %TMPLOG%
|
||||||
@echo Note install location %TMPINST%
|
@call elapsed %TMPBGN%
|
||||||
|
@echo Appears a successful build... see %TMPLOG%
|
||||||
|
@echo Note install location %TMPINS%
|
||||||
|
@if "%TMPINDBG%x" == "1x" (
|
||||||
|
@echo Will install Debug and Release
|
||||||
|
) else (
|
||||||
|
@echo Will only intall Release
|
||||||
|
)
|
||||||
@echo.
|
@echo.
|
||||||
|
|
||||||
@REM ##############################################
|
@REM ##############################################
|
||||||
|
@ -118,80 +98,90 @@
|
||||||
:DOINST
|
:DOINST
|
||||||
@echo Proceeding with INSTALL...
|
@echo Proceeding with INSTALL...
|
||||||
@echo.
|
@echo.
|
||||||
@REM cmake -P cmake_install.cmake
|
@if NOT "%TMPINDBG%x" == "1x" goto DNDBGIN
|
||||||
@echo Doing: 'cmake --build . --config debug --target INSTALL'
|
@if EXIST install_manifest.txt @del install_manifest.txt
|
||||||
@echo Doing: 'cmake --build . --config debug --target INSTALL' >> %TMPLOG%
|
@echo Doing: 'cmake --build . --config Debug --target INSTALL'
|
||||||
@cmake --build . --config debug --target INSTALL >> %TMPLOG% 2>&1
|
@echo Doing: 'cmake --build . --config Debug --target INSTALL' >> %TMPLOG% 2>&1
|
||||||
|
@cmake --build . --config Debug --target INSTALL >> %TMPLOG% 2>&1
|
||||||
|
@if ERRORLEVEL 1 goto ERR4
|
||||||
|
@if EXIST install_manifest.txt (
|
||||||
|
@copy install_manifest.txt install_manifest_debug.txt >nul
|
||||||
|
@call add2installs install_manifest.txt -o %TMPINS%\install_manifest.txt >> %TMPLOG%
|
||||||
|
)
|
||||||
|
:DNDBGIN
|
||||||
|
|
||||||
@echo Doing: 'cmake --build . --config release --target INSTALL'
|
@if EXIST install_manifest.txt @del install_manifest.txt
|
||||||
@echo Doing: 'cmake --build . --config release --target INSTALL' >> %TMPLOG%
|
@echo Doing: 'cmake --build . --config Release --target INSTALL'
|
||||||
@cmake --build . --config release --target INSTALL >> %TMPLOG% 2>&1
|
@echo Doing: 'cmake --build . --config Release --target INSTALL' >> %TMPLOG% 2>&1
|
||||||
|
@cmake --build . --config Release --target INSTALL >> %TMPLOG% 2>&1
|
||||||
|
@if ERRORLEVEL 1 goto ERR5
|
||||||
|
@if EXIST install_manifest.txt (
|
||||||
|
@copy install_manifest.txt install_manifest_release.txt >nul
|
||||||
|
@call add2installs install_manifest.txt -o %TMPINS%\install_manifest.txt >> %TMPLOG%
|
||||||
|
)
|
||||||
|
|
||||||
@fa4 " -- " %TMPLOG%
|
@fa4 " -- " %TMPLOG%
|
||||||
|
|
||||||
@echo Done build and install of %TMPPRJ%...
|
@call elapsed %TMPBGN%
|
||||||
|
@echo All done... see %TMPLOG%
|
||||||
|
|
||||||
@goto END
|
@goto END
|
||||||
|
|
||||||
|
:BAD_BR
|
||||||
|
@echo Try to do 'git checkout %TMPBR%'
|
||||||
|
@git checkout %TMPBR% >> %TMPLOG% 2>&1
|
||||||
|
@call chkbranch %TMPBR%
|
||||||
|
@if ERRORLEVEL 1 goto NO_BR
|
||||||
|
@goto DNBR
|
||||||
|
:NO_BR
|
||||||
|
@echo.
|
||||||
|
@echo Unable to check out %TMPBR%! *** FIX ME ***
|
||||||
|
@echo.
|
||||||
|
@goto ISERR
|
||||||
|
|
||||||
:GOTNO
|
:GOTNO
|
||||||
@echo.
|
@echo.
|
||||||
@echo No install at this time, but there may be an updexe.bat to copy the EXE to c:\MDOS...
|
@echo No install at this time, but there may be an updexe.bat to copy the EXE to c:\MDOS...
|
||||||
@echo.
|
@echo.
|
||||||
@goto END
|
@goto END
|
||||||
|
|
||||||
:NOBAT
|
:NOSRC
|
||||||
@echo Can NOT locate MSVC setup batch "%SET_BAT%"! *** FIX ME ***
|
@echo Can NOT locate source %TMPSRC%! *** FIX ME ***
|
||||||
|
@echo Can NOT locate source %TMPSRC%! *** FIX ME *** >> %TMPLOG%
|
||||||
@goto ISERR
|
@goto ISERR
|
||||||
|
|
||||||
@REM :NOROOT
|
|
||||||
@REM @echo Can NOT locate %TMPROOT%! *** FIX ME ***
|
|
||||||
@REM @goto ISERR
|
|
||||||
|
|
||||||
:NOCM
|
:NOCM
|
||||||
@echo Can NOT locate %TMPSRC%\CMakeLists.txt! *** FIX ME ***
|
@echo Can NOT locate %TMPSRC%\CMakeLists.txt!
|
||||||
@goto ISERR
|
@echo Can NOT locate %TMPSRC%\CMakeLists.txt! >> %TMPLOG%
|
||||||
|
|
||||||
:NOINST
|
|
||||||
@echo Can NOT locate directory %TMPINST%! *** FIX ME ***
|
|
||||||
@goto ISERR
|
|
||||||
|
|
||||||
:ERR0
|
|
||||||
@echo MSVC 10 setup error
|
|
||||||
@goto ISERR
|
@goto ISERR
|
||||||
|
|
||||||
:ERR1
|
:ERR1
|
||||||
@echo cmake config, generation error
|
@echo cmake configuration or generations ERROR
|
||||||
|
@echo cmake configuration or generations ERROR >> %TMPLOG%
|
||||||
@goto ISERR
|
@goto ISERR
|
||||||
|
|
||||||
:ERR2
|
:ERR2
|
||||||
@echo debug build error
|
@echo ERROR: Cmake build Debug FAILED!
|
||||||
|
@echo ERROR: Cmake build Debug FAILED! >> %TMPLOG%
|
||||||
@goto ISERR
|
@goto ISERR
|
||||||
|
|
||||||
:ERR3
|
:ERR3
|
||||||
@fa4 "mt.exe : general error c101008d:" %TMPLOG% >nul
|
@echo ERROR: Cmake build Release FAILED!
|
||||||
@if ERRORLEVEL 1 goto ERR32
|
@echo ERROR: Cmake build Release FAILED! >> %TMPLOG%
|
||||||
:ERR33
|
|
||||||
@echo release build error
|
|
||||||
@goto ISERR
|
@goto ISERR
|
||||||
:ERR32
|
|
||||||
@echo Stupid error... trying again...
|
|
||||||
@echo Doing: 'cmake --build . --config release'
|
|
||||||
@echo Doing: 'cmake --build . --config release' >> %TMPLOG%
|
|
||||||
@cmake --build . --config release >> %TMPLOG% 2>&1
|
|
||||||
@if ERRORLEVEL 1 goto ERR33
|
|
||||||
@goto DNREL
|
|
||||||
|
|
||||||
:BADBR
|
:ERR4
|
||||||
@call git checkout %TMPBR%
|
@echo ERROR: Install Debug FAILED!
|
||||||
@call chkbranch %TMPBR%
|
@echo ERROR: Install Debug FAILED! >> %TMPLOG%
|
||||||
@if ERRORLEVEL 1 goto BADBR2
|
@goto ISERR
|
||||||
@goto GOTBR
|
|
||||||
:BADBR2
|
:ERR5
|
||||||
@call shwbranch
|
@echo ERROR: Install Release FAILED!
|
||||||
@echo Not on correct branch %TMPBR%
|
@echo ERROR: Install Release FAILED! >> %TMPLOG%
|
||||||
@goto ISERR
|
@goto ISERR
|
||||||
|
|
||||||
:ISERR
|
:ISERR
|
||||||
|
@echo See %TMPLOG% for details...
|
||||||
@endlocal
|
@endlocal
|
||||||
@exit /b 1
|
@exit /b 1
|
||||||
|
|
||||||
|
|
93
build/win64/gen-html.bat
Normal file
93
build/win64/gen-html.bat
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
@setlocal
|
||||||
|
@REM Build HTML from log of 'version.txt'
|
||||||
|
@REM Versify the tools used
|
||||||
|
@call verhist -? >nul
|
||||||
|
@if ERRORLEVEL 1 (
|
||||||
|
@echo Unable to run 'verhist.pl'! *** FIX ME ***
|
||||||
|
@exit /b 1
|
||||||
|
)
|
||||||
|
@call emailobfuscate -? >nul
|
||||||
|
@if ERRORLEVEL 1 (
|
||||||
|
@echo Unable to run 'emailobfuscate.pl'! *** FIX ME ***
|
||||||
|
@exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
@set TMPFIL1=..\..\version.txt
|
||||||
|
@if NOT EXIST %TMPFIL1% (
|
||||||
|
@echo Can NOT locate %TMPFIL1%, in %CD% - *** FIX ME ***
|
||||||
|
@exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
@call dirmin %TMPFIL1%
|
||||||
|
|
||||||
|
@set /P TMPVER=<%TMPFIL1%
|
||||||
|
|
||||||
|
@echo Current version '%TMPVER%' ...
|
||||||
|
@set TMPLOG1=..\..\..\temp-%TMPVER%.log
|
||||||
|
@set TMPLOG2=..\..\..\temp2-%TMPVER%.log
|
||||||
|
@set TMPLOG3=..\..\..\temp3-%TMPVER%.log
|
||||||
|
|
||||||
|
@if EXIST %TMPLOG1% goto GOTL1
|
||||||
|
@call git log -p %TMPFIL1% > %TMPLOG1%
|
||||||
|
@if NOT EXIST %TMPLOG1% (
|
||||||
|
@echo Gen of %TMPLOG1% FAILED! *** FIX ME ***
|
||||||
|
@exit /b 1
|
||||||
|
)
|
||||||
|
:GOTL1
|
||||||
|
@echo Got log 1 '%TMPLOG1%' ...
|
||||||
|
@call dirmin %TMPLOG1%
|
||||||
|
|
||||||
|
@if EXIST %TMPLOG2% goto GOTL2
|
||||||
|
@call verhist %TMPLOG1% -o %TMPLOG2%
|
||||||
|
@if EXIST %TMPLOG2% goto GOTL2
|
||||||
|
@echo Gen of %TMPLOG2% FAILED! *** FIX ME ***
|
||||||
|
@exit /b 1
|
||||||
|
:GOTL2
|
||||||
|
@echo Got log 2 '%TMPLOG2%' ...
|
||||||
|
@call dirmin %TMPLOG2%
|
||||||
|
|
||||||
|
@set TMPV=%1
|
||||||
|
@if "%TMPV%x" == "x" (
|
||||||
|
@echo Give the cut-off version, like 5.6.0, to continue..
|
||||||
|
@exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
@echo Doing: 'call grep %TMPV% %TMPLOG2%' ...
|
||||||
|
@call grep %TMPV% %TMPLOG2%
|
||||||
|
@if ERRORLEVEL 1 (
|
||||||
|
@echo Failed to find '%TMPV%'... check the file '%TMPLOG2%'
|
||||||
|
@exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
@set TMPD=%~2
|
||||||
|
@if "%TMPD%x" == "x" (
|
||||||
|
@echo Give the DATE of the cut-off, like 'Sat Nov 25 14:50:00 2017 +0100', to continue...
|
||||||
|
@exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
@if EXIST %TMPLOG3% goto GOTL3
|
||||||
|
@call git log "--decorate=full" "--since=%TMPD%" > %TMPLOG3%
|
||||||
|
@if EXIST %TMPLOG3% goto GOTL3
|
||||||
|
@echo Failed to generate 'git log ...' - *** FIX ME ***
|
||||||
|
@exit /b 1
|
||||||
|
:GOTL3
|
||||||
|
@echo Got log 3 '%TMPLOG3%' ...
|
||||||
|
@call dirmin %TMPLOG3%
|
||||||
|
|
||||||
|
@REM at last generate the release HTML
|
||||||
|
|
||||||
|
@set TMPHTM=..\..\..\temp-%TMPVER%.html
|
||||||
|
@if EXIST %TMPHTM% goto GOTL4
|
||||||
|
@call emailobfuscate %TMPLOG3% -o %TMPHTM% -a %TMPVER% -i
|
||||||
|
@if EXIST %TMPHTM% goto GOTL4
|
||||||
|
@echo FAILED to generate %TMPHTM%! *** FIX ME ***
|
||||||
|
@exit /b 1
|
||||||
|
:GOTL4
|
||||||
|
@echo Got HTML '%TMPHTM%' ...
|
||||||
|
@call dirmin %TMPHTM%
|
||||||
|
|
||||||
|
@REM All success - check image
|
||||||
|
@call start %TMPHTM%
|
||||||
|
|
||||||
|
@REM eof
|
||||||
|
|
18
console/Info.plist.in
Normal file
18
console/Info.plist.in
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDisplayName</key>
|
||||||
|
<string>HTML Tidy</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>org.htacg.html-tidy.tidy5</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>@LIBTIDY_VERSION@</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>@LIBTIDY_DATE@</string>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string>©@CURRENT_YEAR@ HTACG and Contributors</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
115
console/tidy.c
115
console/tidy.c
|
@ -845,7 +845,6 @@ static void help(TidyDoc tdoc, /**< The tidy document for which help is showing.
|
||||||
tmbstr temp_string = NULL;
|
tmbstr temp_string = NULL;
|
||||||
uint width = 78;
|
uint width = 78;
|
||||||
|
|
||||||
printf("\n");
|
|
||||||
printf( tidyLocalizedString(TC_TXT_HELP_1), get_final_name(prog), tidyLibraryVersion() );
|
printf( tidyLocalizedString(TC_TXT_HELP_1), get_final_name(prog), tidyLibraryVersion() );
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
|
@ -1445,6 +1444,24 @@ static void printOptionValues(TidyDoc ARG_UNUSED(tdoc), /**< The Tidy document.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case TidyPriorityAttributes: /* Is #697 - This case seems missing */
|
||||||
|
{
|
||||||
|
TidyIterator itAttr = tidyOptGetPriorityAttrList(tdoc);
|
||||||
|
if (itAttr && (itAttr != (TidyIterator)-1))
|
||||||
|
{
|
||||||
|
while (itAttr)
|
||||||
|
{
|
||||||
|
d->def = tidyOptGetNextPriorityAttr(tdoc, &itAttr);
|
||||||
|
if (itAttr)
|
||||||
|
{
|
||||||
|
printf(fmt, d->name, d->type, d->def);
|
||||||
|
d->name = "";
|
||||||
|
d->type = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1484,6 +1501,33 @@ static void optionvalues( TidyDoc tdoc )
|
||||||
** @{
|
** @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Is #697 - specialised service to 'invert' a buffers content
|
||||||
|
split on a space character */
|
||||||
|
static void invertBuffer(TidyBuffer *src, TidyBuffer *dst)
|
||||||
|
{
|
||||||
|
uint len = src->size;
|
||||||
|
char *in = (char *)src->bp;
|
||||||
|
char *cp;
|
||||||
|
if (!in)
|
||||||
|
return;
|
||||||
|
while (len)
|
||||||
|
{
|
||||||
|
unsigned char uc;
|
||||||
|
len--;
|
||||||
|
uc = in[len];
|
||||||
|
if (uc == ' ')
|
||||||
|
{
|
||||||
|
in[len] = 0;
|
||||||
|
cp = &in[len + 1];
|
||||||
|
if (dst->size)
|
||||||
|
tidyBufAppend(dst, " ", 1);
|
||||||
|
tidyBufAppend(dst, cp, strlen(cp));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (dst->size)
|
||||||
|
tidyBufAppend(dst, " ", 1);
|
||||||
|
tidyBufAppend(dst, in, strlen(in));
|
||||||
|
}
|
||||||
|
|
||||||
/** Prints the option value for a given option.
|
/** Prints the option value for a given option.
|
||||||
*/
|
*/
|
||||||
|
@ -1493,6 +1537,7 @@ static void printOptionExportValues(TidyDoc ARG_UNUSED(tdoc), /**< The Tidy doc
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
TidyOptionId optId = tidyOptGetId( topt );
|
TidyOptionId optId = tidyOptGetId( topt );
|
||||||
|
TidyBuffer buf1, buf2;
|
||||||
|
|
||||||
if ( tidyOptGetCategory(topt) == TidyInternalCategory )
|
if ( tidyOptGetCategory(topt) == TidyInternalCategory )
|
||||||
return;
|
return;
|
||||||
|
@ -1505,18 +1550,56 @@ static void printOptionExportValues(TidyDoc ARG_UNUSED(tdoc), /**< The Tidy doc
|
||||||
case TidyPreTags:
|
case TidyPreTags:
|
||||||
{
|
{
|
||||||
TidyIterator pos = tidyOptGetDeclTagList( tdoc );
|
TidyIterator pos = tidyOptGetDeclTagList( tdoc );
|
||||||
while ( pos )
|
if ( pos ) /* Is #697 - one or more values */
|
||||||
{
|
{
|
||||||
d->def = tidyOptGetNextDeclTag(tdoc, optId, &pos);
|
tidyBufInit(&buf1);
|
||||||
if ( pos )
|
tidyBufInit(&buf2);
|
||||||
|
while (pos)
|
||||||
{
|
{
|
||||||
printf( "%s: %s\n", d->name, d->def );
|
d->def = tidyOptGetNextDeclTag(tdoc, optId, &pos);
|
||||||
d->name = "";
|
if (d->def)
|
||||||
d->type = "";
|
{
|
||||||
|
if (buf1.size)
|
||||||
|
tidyBufAppend(&buf1, " ", 1);
|
||||||
|
tidyBufAppend(&buf1, (void *)d->def, strlen(d->def));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
invertBuffer(&buf1, &buf2); /* Is #697 - specialised service to invert words */
|
||||||
|
tidyBufAppend(&buf2, (void *)"\0", 1); /* is this really required? */
|
||||||
|
printf("%s: %s\n", d->name, buf2.bp);
|
||||||
|
d->name = "";
|
||||||
|
d->type = "";
|
||||||
|
d->def = 0;
|
||||||
|
tidyBufFree(&buf1);
|
||||||
|
tidyBufFree(&buf2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case TidyPriorityAttributes: /* Is #697 - This case seems missing */
|
||||||
|
{
|
||||||
|
TidyIterator itAttr = tidyOptGetPriorityAttrList(tdoc);
|
||||||
|
if (itAttr && (itAttr != (TidyIterator)-1))
|
||||||
|
{
|
||||||
|
tidyBufInit(&buf1);
|
||||||
|
while (itAttr)
|
||||||
|
{
|
||||||
|
d->def = tidyOptGetNextPriorityAttr(tdoc, &itAttr);
|
||||||
|
if (d->def)
|
||||||
|
{
|
||||||
|
if (buf1.size)
|
||||||
|
tidyBufAppend(&buf1, " ", 1);
|
||||||
|
tidyBufAppend(&buf1, (void *)d->def, strlen(d->def));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tidyBufAppend(&buf1, (void *)"\0", 1); /* is this really required? */
|
||||||
|
printf("%s: %s\n", d->name, buf1.bp);
|
||||||
|
d->name = "";
|
||||||
|
d->type = "";
|
||||||
|
d->def = 0;
|
||||||
|
tidyBufFree(&buf1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1657,6 +1740,10 @@ static void printXMLCrossRefEqConsole(TidyDoc tdoc, /**< The Tidy document. */
|
||||||
free((tmbstr)localHit.name3);
|
free((tmbstr)localHit.name3);
|
||||||
free(localName);
|
free(localName);
|
||||||
}
|
}
|
||||||
|
if ( localHit.eqconfig ) /* Is. #791 */
|
||||||
|
{
|
||||||
|
free((tmbstr)localHit.eqconfig);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1803,6 +1890,7 @@ static void xml_help( void )
|
||||||
if (localPos.name1) free((tmbstr)localPos.name1);
|
if (localPos.name1) free((tmbstr)localPos.name1);
|
||||||
if (localPos.name2) free((tmbstr)localPos.name2);
|
if (localPos.name2) free((tmbstr)localPos.name2);
|
||||||
if (localPos.name3) free((tmbstr)localPos.name3);
|
if (localPos.name3) free((tmbstr)localPos.name3);
|
||||||
|
if (localPos.eqconfig) free((tmbstr)localPos.eqconfig); /* Is. #791 */
|
||||||
}
|
}
|
||||||
|
|
||||||
printf( "</cmdline>\n" );
|
printf( "</cmdline>\n" );
|
||||||
|
@ -2405,8 +2493,17 @@ int main( int argc, char** argv )
|
||||||
if ( argc > 1 )
|
if ( argc > 1 )
|
||||||
{
|
{
|
||||||
htmlfil = argv[1];
|
htmlfil = argv[1];
|
||||||
DEBUG_LOG( SPRTF("Tidying '%s'\n", htmlfil) );
|
#ifdef ENABLE_DEBUG_LOG
|
||||||
if ( tidyOptGetBool(tdoc, TidyEmacs) )
|
SPRTF("Tidy: '%s'\n", htmlfil);
|
||||||
|
#else /* !ENABLE_DEBUG_LOG */
|
||||||
|
/* Is #713 - show-filename option */
|
||||||
|
if (tidyOptGetBool(tdoc, TidyShowFilename))
|
||||||
|
{
|
||||||
|
fprintf(errout, "Tidy: '%s'", htmlfil);
|
||||||
|
fprintf(errout, "\n");
|
||||||
|
}
|
||||||
|
#endif /* ENABLE_DEBUG_LOG yes/no */
|
||||||
|
if ( tidyOptGetBool(tdoc, TidyEmacs) || tidyOptGetBool(tdoc, TidyShowFilename))
|
||||||
tidySetEmacsFile( tdoc, htmlfil );
|
tidySetEmacsFile( tdoc, htmlfil );
|
||||||
status = tidyParseFile( tdoc, htmlfil );
|
status = tidyParseFile( tdoc, htmlfil );
|
||||||
}
|
}
|
||||||
|
|
|
@ -481,16 +481,16 @@ TIDY_EXPORT void TIDY_CALL tidyGeneralInfo( TidyDoc tdoc );
|
||||||
|
|
||||||
|
|
||||||
/** Load an ASCII Tidy configuration file and set the configuration per its
|
/** Load an ASCII Tidy configuration file and set the configuration per its
|
||||||
** contents.
|
** contents. Reports config option errors, which can be filtered.
|
||||||
** @result Returns 0 upon success, or any other value if there was an error.
|
** @result Returns 0 upon success, or any other value if there was an option error.
|
||||||
*/
|
*/
|
||||||
TIDY_EXPORT int TIDY_CALL tidyLoadConfig(TidyDoc tdoc, /**< The TidyDoc to which to apply the configuration. */
|
TIDY_EXPORT int TIDY_CALL tidyLoadConfig(TidyDoc tdoc, /**< The TidyDoc to which to apply the configuration. */
|
||||||
ctmbstr configFile /**< The complete path to the file to load. */
|
ctmbstr configFile /**< The complete path to the file to load. */
|
||||||
);
|
);
|
||||||
|
|
||||||
/** Load a Tidy configuration file with the specified character encoding, and
|
/** Load a Tidy configuration file with the specified character encoding, and
|
||||||
** set the configuration per its contents.
|
** set the configuration per its contents. Reports config option errors, which can be filtered.
|
||||||
** @result Returns 0 upon success, or any other value if there was an error.
|
** @result Returns 0 upon success, or any other value if there was an option error.
|
||||||
*/
|
*/
|
||||||
TIDY_EXPORT int TIDY_CALL tidyLoadConfigEnc(TidyDoc tdoc, /**< The TidyDoc to which to apply the configuration. */
|
TIDY_EXPORT int TIDY_CALL tidyLoadConfigEnc(TidyDoc tdoc, /**< The TidyDoc to which to apply the configuration. */
|
||||||
ctmbstr configFile, /**< The complete path to the file to load. */
|
ctmbstr configFile, /**< The complete path to the file to load. */
|
||||||
|
@ -2053,7 +2053,7 @@ TIDY_EXPORT ctmbstr TIDY_CALL tidyGetLanguage(void);
|
||||||
** @{
|
** @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @struct tidyLocalMapItem
|
/** @struct tidyLocaleMapItem
|
||||||
** Represents an opaque type we can use for tidyLocaleMapItem, which
|
** Represents an opaque type we can use for tidyLocaleMapItem, which
|
||||||
** is used to iterate through the language list, and used to access
|
** is used to iterate through the language list, and used to access
|
||||||
** the windowsName() and the posixName().
|
** the windowsName() and the posixName().
|
||||||
|
@ -2088,17 +2088,17 @@ TIDY_EXPORT TidyIterator TIDY_CALL getWindowsLanguageList(void);
|
||||||
*/
|
*/
|
||||||
TIDY_EXPORT const tidyLocaleMapItem* TIDY_CALL getNextWindowsLanguage( TidyIterator* iter );
|
TIDY_EXPORT const tidyLocaleMapItem* TIDY_CALL getNextWindowsLanguage( TidyIterator* iter );
|
||||||
|
|
||||||
/** Given a `tidyLocalMapItem`, return the Windows name.
|
/** Given a `tidyLocaleMapItem`, return the Windows name.
|
||||||
** @param item An instance of tidyLocalMapItem to query.
|
** @param item An instance of tidyLocaleMapItem to query.
|
||||||
** @result Returns a string with the Windows name of the mapping.
|
** @result Returns a string with the Windows name of the mapping.
|
||||||
*/
|
*/
|
||||||
TIDY_EXPORT const ctmbstr TIDY_CALL TidyLangWindowsName( const tidyLocaleMapItem *item );
|
TIDY_EXPORT ctmbstr TIDY_CALL TidyLangWindowsName( const tidyLocaleMapItem *item );
|
||||||
|
|
||||||
/** Given a `tidyLocalMapItem`, return the POSIX name.
|
/** Given a `tidyLocaleMapItem`, return the POSIX name.
|
||||||
** @param item An instance of tidyLocalMapItem to query.
|
** @param item An instance of tidyLocaleMapItem to query.
|
||||||
** @result Returns a string with the POSIX name of the mapping.
|
** @result Returns a string with the POSIX name of the mapping.
|
||||||
*/
|
*/
|
||||||
TIDY_EXPORT const ctmbstr TIDY_CALL TidyLangPosixName( const tidyLocaleMapItem *item );
|
TIDY_EXPORT ctmbstr TIDY_CALL TidyLangPosixName( const tidyLocaleMapItem *item );
|
||||||
|
|
||||||
/** @}
|
/** @}
|
||||||
** @name Getting Localized Strings
|
** @name Getting Localized Strings
|
||||||
|
|
|
@ -107,6 +107,7 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
#define FOREACH_MSG_MISC(FN) \
|
#define FOREACH_MSG_MISC(FN) \
|
||||||
/** line %d column %d */ FN(LINE_COLUMN_STRING) \
|
/** line %d column %d */ FN(LINE_COLUMN_STRING) \
|
||||||
|
/** %s: line %d column %d */ FN(FN_LINE_COLUMN_STRING) \
|
||||||
/** discarding */ FN(STRING_DISCARDING) \
|
/** discarding */ FN(STRING_DISCARDING) \
|
||||||
/** error and errors */ FN(STRING_ERROR_COUNT_ERROR) \
|
/** error and errors */ FN(STRING_ERROR_COUNT_ERROR) \
|
||||||
/** warning and warnings */ FN(STRING_ERROR_COUNT_WARNING) \
|
/** warning and warnings */ FN(STRING_ERROR_COUNT_WARNING) \
|
||||||
|
@ -171,6 +172,7 @@ extern "C" {
|
||||||
#define FOREACH_REPORT_MSG(FN) \
|
#define FOREACH_REPORT_MSG(FN) \
|
||||||
FN(ADDED_MISSING_CHARSET) \
|
FN(ADDED_MISSING_CHARSET) \
|
||||||
FN(ANCHOR_NOT_UNIQUE) \
|
FN(ANCHOR_NOT_UNIQUE) \
|
||||||
|
FN(ANCHOR_DUPLICATED) \
|
||||||
FN(APOS_UNDEFINED) \
|
FN(APOS_UNDEFINED) \
|
||||||
FN(ATTR_VALUE_NOT_LCASE) \
|
FN(ATTR_VALUE_NOT_LCASE) \
|
||||||
FN(ATTRIBUTE_IS_NOT_ALLOWED) \
|
FN(ATTRIBUTE_IS_NOT_ALLOWED) \
|
||||||
|
@ -608,7 +610,7 @@ typedef enum
|
||||||
TidyLiteralAttribs, /**< If true attributes may use newlines */
|
TidyLiteralAttribs, /**< If true attributes may use newlines */
|
||||||
TidyLogicalEmphasis, /**< Replace i by em and b by strong */
|
TidyLogicalEmphasis, /**< Replace i by em and b by strong */
|
||||||
TidyLowerLiterals, /**< Folds known attribute values to lower case */
|
TidyLowerLiterals, /**< Folds known attribute values to lower case */
|
||||||
TidyMakeBare, /**< Make bare HTML: remove Microsoft cruft */
|
TidyMakeBare, /**< Replace smart quotes, em dashes, etc with ASCII */
|
||||||
TidyMakeClean, /**< Replace presentational clutter by style rules */
|
TidyMakeClean, /**< Replace presentational clutter by style rules */
|
||||||
TidyMark, /**< Add meta element indicating tidied doc */
|
TidyMark, /**< Add meta element indicating tidied doc */
|
||||||
TidyMergeDivs, /**< Merge multiple DIVs */
|
TidyMergeDivs, /**< Merge multiple DIVs */
|
||||||
|
@ -635,6 +637,7 @@ typedef enum
|
||||||
TidyQuoteNbsp, /**< Output non-breaking space as entity */
|
TidyQuoteNbsp, /**< Output non-breaking space as entity */
|
||||||
TidyReplaceColor, /**< Replace hex color attribute values with names */
|
TidyReplaceColor, /**< Replace hex color attribute values with names */
|
||||||
TidyShowErrors, /**< Number of errors to put out */
|
TidyShowErrors, /**< Number of errors to put out */
|
||||||
|
TidyShowFilename, /**< If true, the input filename is displayed with the error messages */
|
||||||
TidyShowInfo, /**< If true, info-level messages are shown */
|
TidyShowInfo, /**< If true, info-level messages are shown */
|
||||||
TidyShowMarkup, /**< If false, normal output is suppressed */
|
TidyShowMarkup, /**< If false, normal output is suppressed */
|
||||||
TidyShowMetaChange, /**< show when meta http-equiv content charset was changed - compatibility */
|
TidyShowMetaChange, /**< show when meta http-equiv content charset was changed - compatibility */
|
||||||
|
@ -654,7 +657,7 @@ typedef enum
|
||||||
TidyWrapAttVals, /**< Wrap within attribute values */
|
TidyWrapAttVals, /**< Wrap within attribute values */
|
||||||
TidyWrapJste, /**< Wrap within JSTE pseudo elements */
|
TidyWrapJste, /**< Wrap within JSTE pseudo elements */
|
||||||
TidyWrapLen, /**< Wrap margin */
|
TidyWrapLen, /**< Wrap margin */
|
||||||
TidyWrapPhp, /**< Wrap within PHP pseudo elements */
|
TidyWrapPhp, /**< Wrap consecutive PHP pseudo elements */
|
||||||
TidyWrapScriptlets, /**< Wrap within JavaScript string literals */
|
TidyWrapScriptlets, /**< Wrap within JavaScript string literals */
|
||||||
TidyWrapSection, /**< Wrap within <![ ... ]> section tags */
|
TidyWrapSection, /**< Wrap within <![ ... ]> section tags */
|
||||||
TidyWriteBack, /**< If true then output tidied markup */
|
TidyWriteBack, /**< If true then output tidied markup */
|
||||||
|
@ -968,6 +971,7 @@ typedef enum
|
||||||
TidyTag_BDI, /**< BDI */
|
TidyTag_BDI, /**< BDI */
|
||||||
TidyTag_CANVAS, /**< CANVAS */
|
TidyTag_CANVAS, /**< CANVAS */
|
||||||
TidyTag_COMMAND, /**< COMMAND */
|
TidyTag_COMMAND, /**< COMMAND */
|
||||||
|
TidyTag_DATA, /**< DATA */
|
||||||
TidyTag_DATALIST, /**< DATALIST */
|
TidyTag_DATALIST, /**< DATALIST */
|
||||||
TidyTag_DETAILS, /**< DETAILS */
|
TidyTag_DETAILS, /**< DETAILS */
|
||||||
TidyTag_DIALOG, /**< DIALOG */
|
TidyTag_DIALOG, /**< DIALOG */
|
||||||
|
@ -990,6 +994,7 @@ typedef enum
|
||||||
TidyTag_TIME, /**< TIME */
|
TidyTag_TIME, /**< TIME */
|
||||||
TidyTag_TRACK, /**< TRACK */
|
TidyTag_TRACK, /**< TRACK */
|
||||||
TidyTag_VIDEO, /**< VIDEO */
|
TidyTag_VIDEO, /**< VIDEO */
|
||||||
|
TidyTag_SLOT, /**< SLOT */
|
||||||
|
|
||||||
N_TIDY_TAGS /**< Must be last */
|
N_TIDY_TAGS /**< Must be last */
|
||||||
} TidyTagId;
|
} TidyTagId;
|
||||||
|
@ -1338,7 +1343,25 @@ typedef enum
|
||||||
TidyAttr_AS, /**< AS= */
|
TidyAttr_AS, /**< AS= */
|
||||||
|
|
||||||
TidyAttr_XMLNSXLINK, /**< svg xmls:xlink="url" */
|
TidyAttr_XMLNSXLINK, /**< svg xmls:xlink="url" */
|
||||||
|
TidyAttr_SLOT, /**< SLOT= */
|
||||||
|
TidyAttr_LOADING, /**< LOADING= */
|
||||||
|
|
||||||
|
/* SVG paint attributes (SVG 1.1) */
|
||||||
|
TidyAttr_FILL, /**< FILL= */
|
||||||
|
TidyAttr_FILLRULE, /**< FILLRULE= */
|
||||||
|
TidyAttr_STROKE, /**< STROKE= */
|
||||||
|
TidyAttr_STROKEDASHARRAY, /**< STROKEDASHARRAY= */
|
||||||
|
TidyAttr_STROKEDASHOFFSET, /**< STROKEDASHOFFSET= */
|
||||||
|
TidyAttr_STROKELINECAP, /**< STROKELINECAP= */
|
||||||
|
TidyAttr_STROKELINEJOIN, /**< STROKELINEJOIN= */
|
||||||
|
TidyAttr_STROKEMITERLIMIT, /**< STROKEMITERLIMIT= */
|
||||||
|
TidyAttr_STROKEWIDTH, /**< STROKEWIDTH= */
|
||||||
|
TidyAttr_COLORINTERPOLATION, /**< COLORINTERPOLATION= */
|
||||||
|
TidyAttr_COLORRENDERING, /**< COLORRENDERING= */
|
||||||
|
TidyAttr_OPACITY, /**< OPACITY= */
|
||||||
|
TidyAttr_STROKEOPACITY, /**< STROKEOPACITY= */
|
||||||
|
TidyAttr_FILLOPACITY, /**< FILLOPACITY= */
|
||||||
|
|
||||||
N_TIDY_ATTRIBS /**< Must be last */
|
N_TIDY_ATTRIBS /**< Must be last */
|
||||||
} TidyAttrId;
|
} TidyAttrId;
|
||||||
|
|
||||||
|
|
|
@ -569,7 +569,7 @@ extern "C" {
|
||||||
typedef unsigned int uint;
|
typedef unsigned int uint;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(HPUX_OS) || defined(CYGWIN_OS) || defined(MAC_OS) || defined(BSD_BASED_OS) || defined(_WIN32)
|
#if defined(HPUX_OS) || defined(CYGWIN_OS) || defined(MAC_OS) || defined(BSD_BASED_OS) || defined(_WIN32) || defined(__ANDROID__)
|
||||||
# undef ulong
|
# undef ulong
|
||||||
typedef unsigned long ulong;
|
typedef unsigned long ulong;
|
||||||
#endif
|
#endif
|
||||||
|
|
4381
localize/translations/language_de.po
Normal file
4381
localize/translations/language_de.po
Normal file
File diff suppressed because it is too large
Load diff
|
@ -898,7 +898,17 @@ msgid ""
|
||||||
"<code><?php ... ?></code>. As always, all other tabs, or sequences of tabs, in "
|
"<code><?php ... ?></code>. As always, all other tabs, or sequences of tabs, in "
|
||||||
"the source will continue to be replaced with a space. "
|
"the source will continue to be replaced with a space. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Com <var>no</var> preconfigurado, Tidy substituirá todas as tabulações da fonte com espaços, "
|
||||||
|
"em conformidade com a opção <code>tab-size</code> e o deslocamento da linha atual. "
|
||||||
|
"Obviamente, com exceção dos blocos/elementos enumerados abaixo, isto será "
|
||||||
|
"reduzido depois a apenas um espaço "
|
||||||
|
"<br/>"
|
||||||
|
"Se configurado para <var>yes</var> essa opção determina que Tidy deve manter "
|
||||||
|
"certas tabulaçõess encontradas na fonte, mas apenas "
|
||||||
|
"em blocos preformatados como <code><pre></code> e outros elementos CDATA como "
|
||||||
|
"<code><script></code>, <code><style></code> e outros pseudo-elementos como "
|
||||||
|
"<code><?php ... ?></code>. Como sempre, todas as demais tabulações ou "
|
||||||
|
"sequências de tabulações na fonte continuarão a ser substituídas por um espaço. "
|
||||||
#. Important notes for translators:
|
#. Important notes for translators:
|
||||||
#. - Use only <code></code>, <var></var>, <em></em>, <strong></strong>, and
|
#. - Use only <code></code>, <var></var>, <em></em>, <strong></strong>, and
|
||||||
#. <br/>.
|
#. <br/>.
|
||||||
|
@ -1618,7 +1628,13 @@ msgid ""
|
||||||
"<code>mute-id</code> configuration option and examining Tidy's "
|
"<code>mute-id</code> configuration option and examining Tidy's "
|
||||||
"output. "
|
"output. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Use esta opção para impedir que Tidy mostre certos tipos de "
|
||||||
|
"relatórios, por exemplo, para condições que você deseja ignorar. "
|
||||||
|
"<br/>"
|
||||||
|
"Essa opção recebe uma lista de uma ou mais chaves que indicam o tipo de "
|
||||||
|
"mensagem a ser silenciada. Você pode descobrir as chaves destas mensagens "
|
||||||
|
"usando a opção de configuração <code>mute-id</code> e examinando o resultado "
|
||||||
|
"produzido por Tidy. "
|
||||||
#. Important notes for translators:
|
#. Important notes for translators:
|
||||||
#. - Use only <code></code>, <var></var>, <em></em>, <strong></strong>, and
|
#. - Use only <code></code>, <var></var>, <em></em>, <strong></strong>, and
|
||||||
#. <br/>.
|
#. <br/>.
|
||||||
|
@ -1634,7 +1650,10 @@ msgid ""
|
||||||
"use the <code>mute</code> configuration option in order to filter "
|
"use the <code>mute</code> configuration option in order to filter "
|
||||||
"out certain report messages. "
|
"out certain report messages. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Essa opção determina se Tidy deve apresentar ou não os IDs da mensagem "
|
||||||
|
"com cada um de seus relatórios de erros. Pode ser útil se você quiser "
|
||||||
|
"usar a opção de configuração <code>mute</code> a fim de filtrar "
|
||||||
|
"certas mensagens do relatório. "
|
||||||
#. Important notes for translators:
|
#. Important notes for translators:
|
||||||
#. - Use only <code></code>, <var></var>, <em></em>, <strong></strong>, and
|
#. - Use only <code></code>, <var></var>, <em></em>, <strong></strong>, and
|
||||||
#. <br/>.
|
#. <br/>.
|
||||||
|
@ -2196,7 +2215,7 @@ msgstr ""
|
||||||
|
|
||||||
msgctxt "TidyWarning"
|
msgctxt "TidyWarning"
|
||||||
msgid "Warning: "
|
msgid "Warning: "
|
||||||
msgstr "Acesso: "
|
msgstr "Aviso: "
|
||||||
|
|
||||||
msgctxt "TidyConfig"
|
msgctxt "TidyConfig"
|
||||||
msgid "Config: "
|
msgid "Config: "
|
||||||
|
@ -2549,6 +2568,10 @@ msgid ""
|
||||||
"this behavior, then consider setting the option \"drop-empty-elements\"\n"
|
"this behavior, then consider setting the option \"drop-empty-elements\"\n"
|
||||||
"to no.\n"
|
"to no.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Um ou mais elementos vazios estavam presentes no documento-fonte mas\n"
|
||||||
|
"foram descartados no resultado. Se esses elementos são necessários ou\n"
|
||||||
|
"se você não deseja esse comportamento, então considere configurar a opção\n"
|
||||||
|
"\"drop-empty-elements\" para no.\n"
|
||||||
|
|
||||||
#. This console output should be limited to 78 characters per line.
|
#. This console output should be limited to 78 characters per line.
|
||||||
#. - The URL should not be translated unless you find a matching URL in your language.
|
#. - The URL should not be translated unless you find a matching URL in your language.
|
||||||
|
@ -2921,15 +2944,15 @@ msgstr "hífenes adjacentes dentro de comentário"
|
||||||
|
|
||||||
msgctxt "MALFORMED_COMMENT_DROPPING"
|
msgctxt "MALFORMED_COMMENT_DROPPING"
|
||||||
msgid "dropping a possible comment due to a missing hyphen"
|
msgid "dropping a possible comment due to a missing hyphen"
|
||||||
msgstr ""
|
msgstr "descartando um possível comentário devido à falta de hífen"
|
||||||
|
|
||||||
msgctxt "MALFORMED_COMMENT_EOS"
|
msgctxt "MALFORMED_COMMENT_EOS"
|
||||||
msgid "the end of the document was reached before the end of the comment"
|
msgid "the end of the document was reached before the end of the comment"
|
||||||
msgstr ""
|
msgstr "o fim do documento foi alcançado antes do fim do comentário"
|
||||||
|
|
||||||
msgctxt "MALFORMED_COMMENT_WARN"
|
msgctxt "MALFORMED_COMMENT_WARN"
|
||||||
msgid "detected adjacent hyphens within the comment; consider fix-bad-comments"
|
msgid "detected adjacent hyphens within the comment; consider fix-bad-comments"
|
||||||
msgstr ""
|
msgstr "hífens adjacentes detectados dentro do comentário; considere fix-bad-comments"
|
||||||
|
|
||||||
msgctxt "MALFORMED_DOCTYPE"
|
msgctxt "MALFORMED_DOCTYPE"
|
||||||
msgid "discarding malformed <!DOCTYPE>"
|
msgid "discarding malformed <!DOCTYPE>"
|
||||||
|
@ -2972,7 +2995,7 @@ msgstr "faltando </%s>"
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "MISSING_ENDTAG_OPTIONAL"
|
msgctxt "MISSING_ENDTAG_OPTIONAL"
|
||||||
msgid "missing optional end tag </%s>"
|
msgid "missing optional end tag </%s>"
|
||||||
msgstr ""
|
msgstr "faltando tag final opcional </%s>"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "MISSING_IMAGEMAP"
|
msgctxt "MISSING_IMAGEMAP"
|
||||||
|
@ -2987,7 +3010,7 @@ msgstr "atributo de %s faltando aspas ao final"
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "MISSING_QUOTEMARK_OPEN"
|
msgctxt "MISSING_QUOTEMARK_OPEN"
|
||||||
msgid "value for attribute \"%s\" missing quote marks"
|
msgid "value for attribute \"%s\" missing quote marks"
|
||||||
msgstr ""
|
msgstr "valor para atributo \"%s\" faltando aspas"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "MISSING_SEMICOLON_NCR"
|
msgctxt "MISSING_SEMICOLON_NCR"
|
||||||
|
@ -3044,17 +3067,17 @@ msgstr "substituindo elemento obsoleto %s por %s"
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "OPTION_REMOVED"
|
msgctxt "OPTION_REMOVED"
|
||||||
msgid "option \"%s\" no longer exists, and no replacement could be found."
|
msgid "option \"%s\" no longer exists, and no replacement could be found."
|
||||||
msgstr ""
|
msgstr "opção \"%s\" não existe mais e nenhum substituto pôde ser encontrado."
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "OPTION_REMOVED_APPLIED"
|
msgctxt "OPTION_REMOVED_APPLIED"
|
||||||
msgid "option \"%s\" replaced with \"%s\", which Tidy has set to \"%s\"."
|
msgid "option \"%s\" replaced with \"%s\", which Tidy has set to \"%s\"."
|
||||||
msgstr ""
|
msgstr "opção \"%s\" substituída por \"%s\", que Tidy configurou para \"%s\"."
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "OPTION_REMOVED_UNAPPLIED"
|
msgctxt "OPTION_REMOVED_UNAPPLIED"
|
||||||
msgid "option \"%s\" replaced with \"%s\", but Tidy could not set it for you."
|
msgid "option \"%s\" replaced with \"%s\", but Tidy could not set it for you."
|
||||||
msgstr ""
|
msgstr "opção \"%s\" substituída por \"%s\", mas Tidy não pôde configurar para você"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "PREVIOUS_LOCATION"
|
msgctxt "PREVIOUS_LOCATION"
|
||||||
|
@ -3103,7 +3126,7 @@ msgstr "removendo espaço em branco precedendo a declaração XML"
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "STRING_ARGUMENT_BAD"
|
msgctxt "STRING_ARGUMENT_BAD"
|
||||||
msgid "option \"%s\" given bad argument \"%s\""
|
msgid "option \"%s\" given bad argument \"%s\""
|
||||||
msgstr ""
|
msgstr "opção \"%s\" recebeu argumento errado \"%s\""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "STRING_MISSING_MALFORMED"
|
msgctxt "STRING_MISSING_MALFORMED"
|
||||||
|
@ -3113,7 +3136,7 @@ msgstr "argumento faltando ou malformado para opção: %s"
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "STRING_MUTING_TYPE"
|
msgctxt "STRING_MUTING_TYPE"
|
||||||
msgid "messages of type \"%s\" will not be output"
|
msgid "messages of type \"%s\" will not be output"
|
||||||
msgstr ""
|
msgstr "mensagens de tipo \"%s\" não vão ser geradas"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgctxt "STRING_UNKNOWN_OPTION"
|
msgctxt "STRING_UNKNOWN_OPTION"
|
||||||
|
@ -3790,11 +3813,11 @@ msgstr "lista todas as opções de configuração"
|
||||||
|
|
||||||
msgctxt "TC_OPT_HELPENV"
|
msgctxt "TC_OPT_HELPENV"
|
||||||
msgid "show information about the environment and runtime configuration"
|
msgid "show information about the environment and runtime configuration"
|
||||||
msgstr ""
|
msgstr "mostra informações sobre o ambiente e a configuração de execução"
|
||||||
|
|
||||||
msgctxt "TC_OPT_HELPOPT"
|
msgctxt "TC_OPT_HELPOPT"
|
||||||
msgid "show a description of the <option>"
|
msgid "show a description of the <option>"
|
||||||
msgstr " mostra uma descrição da <opção>"
|
msgstr "mostra uma descrição da <opção>"
|
||||||
|
|
||||||
msgctxt "TC_OPT_IBM858"
|
msgctxt "TC_OPT_IBM858"
|
||||||
msgid "use IBM-858 (CP850+Euro) for input, US-ASCII for output"
|
msgid "use IBM-858 (CP850+Euro) for input, US-ASCII for output"
|
||||||
|
@ -3866,11 +3889,11 @@ msgstr "lista as definições da configuração atual"
|
||||||
|
|
||||||
msgctxt "TC_OPT_EXP_CFG"
|
msgctxt "TC_OPT_EXP_CFG"
|
||||||
msgid "list the current configuration settings, suitable for a config file"
|
msgid "list the current configuration settings, suitable for a config file"
|
||||||
msgstr ""
|
msgstr "lista as configurações atuais, apropriadas para um documento config"
|
||||||
|
|
||||||
msgctxt "TC_OPT_EXP_DEF"
|
msgctxt "TC_OPT_EXP_DEF"
|
||||||
msgid "list the default configuration settings, suitable for a config file"
|
msgid "list the default configuration settings, suitable for a config file"
|
||||||
msgstr ""
|
msgstr "lista as configurações padrões, apropriadas para um documento config"
|
||||||
|
|
||||||
msgctxt "TC_OPT_UPPER"
|
msgctxt "TC_OPT_UPPER"
|
||||||
msgid "force tags to upper case"
|
msgid "force tags to upper case"
|
||||||
|
@ -4170,7 +4193,13 @@ msgid ""
|
||||||
" %s \n"
|
" %s \n"
|
||||||
"\n"
|
"\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" Ademais, Tidy tentará automaticamente utilizar configuração especificada \n"
|
||||||
|
" nesses documentos, se presentes: \n"
|
||||||
|
"\n"
|
||||||
|
" %s \n"
|
||||||
|
" %s \n"
|
||||||
|
"\n"
|
||||||
#. This console output should be limited to 78 characters per line.
|
#. This console output should be limited to 78 characters per line.
|
||||||
#. - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated.
|
#. - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated.
|
||||||
msgctxt "TC_TXT_HELP_CONFIG"
|
msgctxt "TC_TXT_HELP_CONFIG"
|
||||||
|
@ -4232,6 +4261,17 @@ msgid ""
|
||||||
" - Options in a file specified on the command line. \n"
|
" - Options in a file specified on the command line. \n"
|
||||||
" - Options set directly on the command line. \n"
|
" - Options set directly on the command line. \n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"Tidy pode configurar valores de opções a partir de várias fontes, \n"
|
||||||
|
"na ordem abaixo. O uso subsequente da mesma opção sobreescreve \n"
|
||||||
|
"configurações anteriores. \n"
|
||||||
|
"\n"
|
||||||
|
" - Valores inbutidos padrões de Tidy. \n"
|
||||||
|
"%s" /* rc files */
|
||||||
|
" - O documento especificado na variável de ambiente $HTML_TIDY: \n"
|
||||||
|
" %s \n"
|
||||||
|
" - Opções num arquivo especificado na linha do comando. \n"
|
||||||
|
" - Opções definidas diretamente na linha de comando. \n"
|
||||||
|
|
||||||
#. This console output should be limited to 78 characters per line.
|
#. This console output should be limited to 78 characters per line.
|
||||||
#. - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated.
|
#. - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated.
|
||||||
|
@ -4243,13 +4283,16 @@ msgid ""
|
||||||
" - The user runtime configuration file: \n"
|
" - The user runtime configuration file: \n"
|
||||||
" %s \n"
|
" %s \n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
" - O documento de configuração de execução do sistema: \n"
|
||||||
|
" %s \n"
|
||||||
|
" - O documento de configuração de execução do usuário: \n"
|
||||||
|
" %s \n"
|
||||||
#. This console output should be limited to 78 characters per line.
|
#. This console output should be limited to 78 characters per line.
|
||||||
#. - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated.
|
#. - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated.
|
||||||
#. - This message indicates that a file name is not currently set.
|
#. - This message indicates that a file name is not currently set.
|
||||||
msgctxt "TC_TXT_HELP_ENV_1B"
|
msgctxt "TC_TXT_HELP_ENV_1B"
|
||||||
msgid "(not currently set)"
|
msgid "(not currently set)"
|
||||||
msgstr ""
|
msgstr "(não definido no momento)"
|
||||||
|
|
||||||
#. This console output should be limited to 78 characters per line.
|
#. This console output should be limited to 78 characters per line.
|
||||||
#. - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated.
|
#. - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated.
|
||||||
|
@ -4260,7 +4303,9 @@ msgid ""
|
||||||
"Note that because $HTML_TIDY is set, the user runtime configuration file \n"
|
"Note that because $HTML_TIDY is set, the user runtime configuration file \n"
|
||||||
"%s will not be used. \n"
|
"%s will not be used. \n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"Note que, dado que $HTML_TIDY foi definida, o documento de configuração \n"
|
||||||
|
"de execução do usuário %s não será utilizado. \n"
|
||||||
#. This console output should be limited to 78 characters per line.
|
#. This console output should be limited to 78 characters per line.
|
||||||
#. - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated.
|
#. - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated.
|
||||||
msgctxt "TC_TXT_HELP_LANG_1"
|
msgctxt "TC_TXT_HELP_LANG_1"
|
||||||
|
|
|
@ -75,8 +75,9 @@ They are listed in the first part of this section.
|
||||||
\fIConfiguration\fR options, on the other hand, can either be passed
|
\fIConfiguration\fR options, on the other hand, can either be passed
|
||||||
on the command line, starting with two dashes \fB--\fR,
|
on the command line, starting with two dashes \fB--\fR,
|
||||||
or specified in a configuration file,
|
or specified in a configuration file,
|
||||||
using the option name without the starting dashes.
|
using the option name, followed by a colon \fB:\fR, plus the value, without
|
||||||
They are listed in the second part of this section.
|
the starting dashes. They are listed in the second part of this section,
|
||||||
|
with a sample config file.
|
||||||
.LP
|
.LP
|
||||||
For \fIcommand-line\fR options that expect a numerical argument,
|
For \fIcommand-line\fR options that expect a numerical argument,
|
||||||
a default is assumed if no meaningful value can be found.
|
a default is assumed if no meaningful value can be found.
|
||||||
|
|
4
regression_testing/Gemfile
Normal file
4
regression_testing/Gemfile
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
|
gem 'thor'
|
||||||
|
gem "tty-editor"
|
30
regression_testing/Gemfile.lock
Normal file
30
regression_testing/Gemfile.lock
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
pastel (0.8.0)
|
||||||
|
tty-color (~> 0.5)
|
||||||
|
thor (1.1.0)
|
||||||
|
tty-color (0.6.0)
|
||||||
|
tty-cursor (0.7.1)
|
||||||
|
tty-editor (0.6.0)
|
||||||
|
tty-prompt (~> 0.22)
|
||||||
|
tty-prompt (0.23.1)
|
||||||
|
pastel (~> 0.8)
|
||||||
|
tty-reader (~> 0.8)
|
||||||
|
tty-reader (0.9.0)
|
||||||
|
tty-cursor (~> 0.7)
|
||||||
|
tty-screen (~> 0.8)
|
||||||
|
wisper (~> 2.0)
|
||||||
|
tty-screen (0.8.1)
|
||||||
|
wisper (2.0.1)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
ruby
|
||||||
|
x64-mingw32
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
thor
|
||||||
|
tty-editor
|
||||||
|
|
||||||
|
BUNDLED WITH
|
||||||
|
2.1.4
|
205
regression_testing/README.md
Normal file
205
regression_testing/README.md
Normal file
|
@ -0,0 +1,205 @@
|
||||||
|
Tidy Regression Testing Specification
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
Background
|
||||||
|
----------
|
||||||
|
HTML Tidy uses regression testing as its main means of quality control when
|
||||||
|
implementing new features and fixing bugs. HTML Tidy has been in constant
|
||||||
|
development since before unit testing and automated testing were in wide use,
|
||||||
|
and has proven effective in guiding the development of Tidy.
|
||||||
|
|
||||||
|
This repository is the regression testing tool used by Tidy for both
|
||||||
|
continuous integration, and for development work, and consists for test
|
||||||
|
cases split into multiple set sets, as well as tools for automating testing.
|
||||||
|
|
||||||
|
Testing consists of automatically running some version (of your choice) of HTML
|
||||||
|
Tidy on various operating systems and architectures against the suite of
|
||||||
|
test cases, and comparing the Tidy and report output against known, “good”
|
||||||
|
versions thereof.
|
||||||
|
|
||||||
|
This testing process ensures that:
|
||||||
|
|
||||||
|
- No regressions occur as a result of the changes you make to HTML Tidy.
|
||||||
|
Everything that has passed in the past should continue to pass, regardless
|
||||||
|
of your changes. Changing test expectations for existing test cases must
|
||||||
|
result in a discussion on the pull request discussion thread, otherwise
|
||||||
|
regressions are _prima facie_ cause for rejecting your pull request.
|
||||||
|
|
||||||
|
- Although touted as a “regression test,” code changes should also be
|
||||||
|
furnished with a test case that demonstrates the issue being corrected or
|
||||||
|
the feature being added. Logically you are already informally using one or
|
||||||
|
most test cases during your development of the patch; this simply
|
||||||
|
formalizes the requirement for HTML Tidy, and makes it much easier for the
|
||||||
|
maintainers to understand the impact of your proposed change.
|
||||||
|
|
||||||
|
Additionally, when introducing new features or fixing bugs,
|
||||||
|
new test cases should be written to demonstrate that the fix works against
|
||||||
|
the test case.
|
||||||
|
|
||||||
|
|
||||||
|
About the Test Tool (test.rb)
|
||||||
|
-----------------------------
|
||||||
|
The `test.rb` tool replaces the previous Windows shell and Bash testing
|
||||||
|
scripts. This start-from-scratch approach is intended to provide a single
|
||||||
|
script that’s platform agnostic, for the primary purpose of enabling
|
||||||
|
automated testing, but with strong support for use as a manual tool during
|
||||||
|
HTML Tidy development.
|
||||||
|
|
||||||
|
Ruby was chosen as the scripting language of choice because it is available
|
||||||
|
on every platform, is easy to read (even if you're not a Ruby programmer),
|
||||||
|
and is supported by the major continuous integration testing providers, such
|
||||||
|
as Github.
|
||||||
|
|
||||||
|
We recognize that some developers have scripting environment preferences,
|
||||||
|
and as such, please feel free write wrappers around `test.rb` as needed in
|
||||||
|
order to suit your prefences. If additional CLI API is needed to enable your
|
||||||
|
scripting environment wrapper, please feel free to request such.
|
||||||
|
|
||||||
|
|
||||||
|
Building Tidy, and Tidy Versions
|
||||||
|
--------------------------------
|
||||||
|
The testing tool works by executing `tidy` (or `tidy.exe`, referred to only
|
||||||
|
as `tidy` continuing) on your platform. Naturally, you don’t want to conduct
|
||||||
|
testing using the normal, installed version of `tidy`, but rather version(s)
|
||||||
|
that you’ve built for testing.
|
||||||
|
|
||||||
|
By default, the `tidy` used will be in the standard build folder of the
|
||||||
|
`tidy-html5` directory that is a sibling to this `tidy-html5-tests`
|
||||||
|
directory. The complete relative path from `test.rb`, then, is:
|
||||||
|
|
||||||
|
```
|
||||||
|
../tidy-html5/build/cmake/tidy[.exe]
|
||||||
|
```
|
||||||
|
|
||||||
|
This makes it convenient when performing testing on both repositories when
|
||||||
|
they’re checked out. However you can also specify another build of HTML Tidy
|
||||||
|
as an optional argument, too.
|
||||||
|
|
||||||
|
|
||||||
|
Static Build Considerations
|
||||||
|
---------------------------
|
||||||
|
By default, HTML Tidy is built as a console application statically linked to
|
||||||
|
LibTidy. Although the option to link against a dylib or dll exist when
|
||||||
|
building, it’s suggested that you no longer do so, because you might put
|
||||||
|
yourself into a situation where you’re testing multiple command line
|
||||||
|
executables that are all linked to the same dynamic library!
|
||||||
|
|
||||||
|
Although not formally deprecated, you should consider dynamic linking
|
||||||
|
deprecated and treat it that way. In a world where entire Java Runtime
|
||||||
|
Environments are shipped _per program_, the benefits of dynamic linking no
|
||||||
|
longer exist on any modern computer or operating system. In some cases,
|
||||||
|
modern security hardening even prevents dynamic linking, and we’re likely to
|
||||||
|
see such restrictions become more common in the future.
|
||||||
|
|
||||||
|
|
||||||
|
Running Test Tests
|
||||||
|
------------------
|
||||||
|
|
||||||
|
### Preparing the Environment
|
||||||
|
|
||||||
|
Assuming that you have a working Ruby interpretor, version 2.7 or so, upon
|
||||||
|
`CD`-ing into the `tidy-html5-test` directory, you should execute `bundle
|
||||||
|
install`, which ensures that any dependencies that your environment doesn’t
|
||||||
|
already have will be downloaded.
|
||||||
|
|
||||||
|
### Executing the Program
|
||||||
|
|
||||||
|
In Windows shell and powershell, simply typing
|
||||||
|
|
||||||
|
~~~
|
||||||
|
test
|
||||||
|
~~~
|
||||||
|
|
||||||
|
will run the tool. Usually. Probably. If not, try `ruby test.rb` in case
|
||||||
|
your environment is not configured to work directly.
|
||||||
|
|
||||||
|
Unix and Unix-like operating systems (including WSL and other Unix-like
|
||||||
|
environments for Windows) can run the program like such:
|
||||||
|
|
||||||
|
~~~
|
||||||
|
test.rb
|
||||||
|
~~~
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
When used without any arguments, help will be provided. In general, though,
|
||||||
|
you can do the following:
|
||||||
|
|
||||||
|
| Command | Effect |
|
||||||
|
|--------------------------------|-----------------------------------|
|
||||||
|
| `./test.rb test` | Tests all cases in all test sets. |
|
||||||
|
| `./test.rb only <setname>` | Tests only in the given test set. |
|
||||||
|
| `./test.rb case <case_number>` | Tests only on a single case. |
|
||||||
|
|
||||||
|
|
||||||
|
Input Specification
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
### Test Sets
|
||||||
|
|
||||||
|
“Test sets” are groups of individual tests that are thematically related,
|
||||||
|
such as accessibility checks, XML-specific tests, historical tests, etc.
|
||||||
|
Each set of cases consists of directories and a text file within the `cases/`
|
||||||
|
directory. Each test set shall consist of the following directories/files, where
|
||||||
|
`setname` indicates the name of the testing set, e.g., `testbase` (our default
|
||||||
|
set of case files).
|
||||||
|
|
||||||
|
- `setname/`, which contains the HTML files to tidy, and an optional
|
||||||
|
configuration file for each case.
|
||||||
|
|
||||||
|
- Test files shall have the format `case-basename@n<.html|.xml|.xhtml>`,
|
||||||
|
where `nnn` represents the test case name, and the `@n` metadata
|
||||||
|
represents the required shell exit status code that HTML Tidy should
|
||||||
|
produce after running the test case. The case name cannot contain
|
||||||
|
hyphens or the `@` symbol, and should represent something meaningful
|
||||||
|
such a a Github issue number.
|
||||||
|
|
||||||
|
- Optional Tidy configuration files shall be named `case-basename.conf`.
|
||||||
|
|
||||||
|
- In the absense of a configuration file, the file `config_default.conf` in
|
||||||
|
each directory will be used instead.
|
||||||
|
|
||||||
|
- `README<.txt|.md>`, which describes the test set.
|
||||||
|
|
||||||
|
- `setname-expects/`, which contains the expected output from HTML Tidy.
|
||||||
|
- Files in the format `case-nnn<.html|.xml|.xhtml>` represent the expected
|
||||||
|
HTML file as generated by Tidy.
|
||||||
|
- Files in the format `case-nnn.txt` represent the expected warning/error
|
||||||
|
output from Tidy.
|
||||||
|
|
||||||
|
#### Example
|
||||||
|
|
||||||
|
```
|
||||||
|
cases/
|
||||||
|
testbase/
|
||||||
|
config_default.cong
|
||||||
|
case-427821.html
|
||||||
|
case-427821.conf
|
||||||
|
testbase-expects/
|
||||||
|
case-427821.html
|
||||||
|
case-427821.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Output Specification
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
The output specification is written such that it makes it trivial to easily
|
||||||
|
`diff` a `setname-expects` directory with the output of a test in order
|
||||||
|
to check for differences.
|
||||||
|
|
||||||
|
Test results consist of Tidy's HTML output and Tidy's warning/error output.
|
||||||
|
|
||||||
|
Each set of results consists of directories within the `cases/` directory.
|
||||||
|
|
||||||
|
- `setname-results` contains Tidy's HTML and warning/error output.
|
||||||
|
- Files in the format `case-nnn.html` are the HTML file generated by Tidy.
|
||||||
|
- Files in the format `case-nnn.txt` are the warning/error output from Tidy.
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
~~~
|
||||||
|
cases/
|
||||||
|
testbase-results/
|
||||||
|
case-427821.html
|
||||||
|
case-427821.txt
|
||||||
|
~~~
|
1
regression_testing/cases/_version.txt
Normal file
1
regression_testing/cases/_version.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
5.7.48
|
10
regression_testing/cases/access-cases/README.txt
Normal file
10
regression_testing/cases/access-cases/README.txt
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
About this test suite:
|
||||||
|
======================
|
||||||
|
|
||||||
|
These files ensure that Tidy is presenting the correct accessibility information
|
||||||
|
when used with Tidy’s various levels of accessibility checking.
|
||||||
|
|
||||||
|
The original accessibility test script looked for a single line of output
|
||||||
|
present in Tidy's error output. Current treatment as a standard regression
|
||||||
|
test accomplishes the same result, in that testing the entire error output is
|
||||||
|
a superset of testing only the desired output anyway.
|
3
regression_testing/cases/access-cases/case-10_1_1_1.conf
Normal file
3
regression_testing/cases/access-cases/case-10_1_1_1.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/10.1.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a href="newpage.html" target="_new">Opens in new window.</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-10_1_1_2.conf
Normal file
3
regression_testing/cases/access-cases/case-10_1_1_2.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/10.1.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a href="newpage.html" target="_blank">Opens in new window.</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-11_2_1_1.conf
Normal file
3
regression_testing/cases/access-cases/case-11_2_1_1.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
11
regression_testing/cases/access-cases/case-11_2_1_10@0.html
Normal file
11
regression_testing/cases/access-cases/case-11_2_1_10@0.html
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/11.2.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<u>x</u>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
10
regression_testing/cases/access-cases/case-11_2_1_1@0.html
Normal file
10
regression_testing/cases/access-cases/case-11_2_1_1@0.html
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/11.2.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<applet>
|
||||||
|
</applet>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-11_2_1_2.conf
Normal file
3
regression_testing/cases/access-cases/case-11_2_1_2.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/11.2.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<basefont>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-11_2_1_3.conf
Normal file
3
regression_testing/cases/access-cases/case-11_2_1_3.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
11
regression_testing/cases/access-cases/case-11_2_1_3@0.html
Normal file
11
regression_testing/cases/access-cases/case-11_2_1_3@0.html
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/11.2.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<center>Hello</center>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-11_2_1_4.conf
Normal file
3
regression_testing/cases/access-cases/case-11_2_1_4.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
11
regression_testing/cases/access-cases/case-11_2_1_4@1.html
Normal file
11
regression_testing/cases/access-cases/case-11_2_1_4@1.html
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/11.2.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<dir>Hello</dir>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-11_2_1_5.conf
Normal file
3
regression_testing/cases/access-cases/case-11_2_1_5.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/11.2.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<font size="6">Hello</font>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-11_2_1_6.conf
Normal file
3
regression_testing/cases/access-cases/case-11_2_1_6.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/11.2.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<isindex prompt="Enter your search phrase: ">
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-11_2_1_7.conf
Normal file
3
regression_testing/cases/access-cases/case-11_2_1_7.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/11.2.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<menu></menu>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-11_2_1_8.conf
Normal file
3
regression_testing/cases/access-cases/case-11_2_1_8.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/11.2.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<s>x</s>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-11_2_1_9.conf
Normal file
3
regression_testing/cases/access-cases/case-11_2_1_9.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/11.2.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<strike>x</strike>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-12_1_1_1.conf
Normal file
3
regression_testing/cases/access-cases/case-12_1_1_1.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 1
|
||||||
|
show-info: no
|
10
regression_testing/cases/access-cases/case-12_1_1_1@1.html
Normal file
10
regression_testing/cases/access-cases/case-12_1_1_1@1.html
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
|
||||||
|
"http://www.w3.org/TR/html4/frameset.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/12.1.1</title>
|
||||||
|
</head>
|
||||||
|
<frameset>
|
||||||
|
<frame></frame>
|
||||||
|
</frameset>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-12_1_1_2.conf
Normal file
3
regression_testing/cases/access-cases/case-12_1_1_2.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 1
|
||||||
|
show-info: no
|
10
regression_testing/cases/access-cases/case-12_1_1_2@1.html
Normal file
10
regression_testing/cases/access-cases/case-12_1_1_2@1.html
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
|
||||||
|
"http://www.w3.org/TR/html4/frameset.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/12.1.1</title>
|
||||||
|
</head>
|
||||||
|
<frameset>
|
||||||
|
<frame title=""></frame>
|
||||||
|
</frameset>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-12_1_1_3.conf
Normal file
3
regression_testing/cases/access-cases/case-12_1_1_3.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 1
|
||||||
|
show-info: no
|
10
regression_testing/cases/access-cases/case-12_1_1_3@1.html
Normal file
10
regression_testing/cases/access-cases/case-12_1_1_3@1.html
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
|
||||||
|
"http://www.w3.org/TR/html4/frameset.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/12.1.1</title>
|
||||||
|
</head>
|
||||||
|
<frameset>
|
||||||
|
<frame title=" "></frame>
|
||||||
|
</frameset>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-12_4_1_1.conf
Normal file
3
regression_testing/cases/access-cases/case-12_4_1_1.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
12
regression_testing/cases/access-cases/case-12_4_1_1@0.html
Normal file
12
regression_testing/cases/access-cases/case-12_4_1_1@0.html
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/12.4.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form action="">
|
||||||
|
<label>Some text:</label>
|
||||||
|
<input value="****" type="text">
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-12_4_1_2.conf
Normal file
3
regression_testing/cases/access-cases/case-12_4_1_2.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
12
regression_testing/cases/access-cases/case-12_4_1_2@0.html
Normal file
12
regression_testing/cases/access-cases/case-12_4_1_2@0.html
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/12.4.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form action="">
|
||||||
|
<label>Some text:</label>
|
||||||
|
<input id="control1" value="****" type="text">
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-12_4_1_3.conf
Normal file
3
regression_testing/cases/access-cases/case-12_4_1_3.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
12
regression_testing/cases/access-cases/case-12_4_1_3@0.html
Normal file
12
regression_testing/cases/access-cases/case-12_4_1_3@0.html
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/12.4.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form action="">
|
||||||
|
<label for="control1">Some text:</label>
|
||||||
|
<input value="****" type="text">
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 3
|
||||||
|
show-info: no
|
23
regression_testing/cases/access-cases/case-13_10_1_1@0.html
Normal file
23
regression_testing/cases/access-cases/case-13_10_1_1@0.html
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/13.10.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<pre>
|
||||||
|
% __ __ __ __ __ __ __ __ __ __ __ __ __ __
|
||||||
|
100 | * |
|
||||||
|
90 | * * |
|
||||||
|
80 | * * |
|
||||||
|
70 | @ * |
|
||||||
|
60 | @ * |
|
||||||
|
50 | * @ * |
|
||||||
|
40 | @ * |
|
||||||
|
30 | * @ @ @ * |
|
||||||
|
20 | |
|
||||||
|
10 | @ @ @ @ @ |
|
||||||
|
0 5 10 15 20 25 30 35 40 45 50 55 60 65 70
|
||||||
|
Flash frequency (Hertz)
|
||||||
|
</pre>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-13_1_1_1.conf
Normal file
3
regression_testing/cases/access-cases/case-13_1_1_1.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
11
regression_testing/cases/access-cases/case-13_1_1_1@0.html
Normal file
11
regression_testing/cases/access-cases/case-13_1_1_1@0.html
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/13.1.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a href="animals.htm">cats</a>
|
||||||
|
some text
|
||||||
|
<a href="animals.htm">cats</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-13_1_1_2.conf
Normal file
3
regression_testing/cases/access-cases/case-13_1_1_2.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/13.1.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a href="animals.htm"></a>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-13_1_1_3.conf
Normal file
3
regression_testing/cases/access-cases/case-13_1_1_3.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
10
regression_testing/cases/access-cases/case-13_1_1_3@0.html
Normal file
10
regression_testing/cases/access-cases/case-13_1_1_3@0.html
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/13.1.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a href="animals.htm">Want to find out more about small furry animals?
|
||||||
|
Then click here and this link will take you there.</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-13_1_1_4.conf
Normal file
3
regression_testing/cases/access-cases/case-13_1_1_4.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/13.1.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a href="animals.htm">click here</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-13_2_1_1.conf
Normal file
3
regression_testing/cases/access-cases/case-13_2_1_1.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<!-- aert1.0/13.2.1 -->
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-13_2_1_3.conf
Normal file
3
regression_testing/cases/access-cases/case-13_2_1_3.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/13.2.1</title>
|
||||||
|
<meta http-equiv="refresh" content="http://www.foo.com/bar.html">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-1_1_10_1.conf
Normal file
3
regression_testing/cases/access-cases/case-1_1_10_1.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 1
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/1.1.10</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<script><!-- do nothing --></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-1_1_12_1.conf
Normal file
3
regression_testing/cases/access-cases/case-1_1_12_1.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 2
|
||||||
|
show-info: no
|
23
regression_testing/cases/access-cases/case-1_1_12_1@0.html
Normal file
23
regression_testing/cases/access-cases/case-1_1_12_1@0.html
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/1.1.12</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<pre>
|
||||||
|
% __ __ __ __ __ __ __ __ __ __ __ __ __ __
|
||||||
|
100 | * |
|
||||||
|
90 | * * |
|
||||||
|
80 | * * |
|
||||||
|
70 | @ * |
|
||||||
|
60 | @ * |
|
||||||
|
50 | * @ * |
|
||||||
|
40 | @ * |
|
||||||
|
30 | * @ @ @ * |
|
||||||
|
20 | |
|
||||||
|
10 | @ @ @ @ @ |
|
||||||
|
0 5 10 15 20 25 30 35 40 45 50 55 60 65 70
|
||||||
|
Flash frequency (Hertz)
|
||||||
|
</pre>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-1_1_1_1.conf
Normal file
3
regression_testing/cases/access-cases/case-1_1_1_1.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 1
|
||||||
|
show-info: no
|
3
regression_testing/cases/access-cases/case-1_1_1_10.conf
Normal file
3
regression_testing/cases/access-cases/case-1_1_1_10.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 1
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/1.1.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<img src="hasAlt.gif" alt="0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789">
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/1.1.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<img src="noAlt.jpg">
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-1_1_1_2.conf
Normal file
3
regression_testing/cases/access-cases/case-1_1_1_2.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 1
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/1.1.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<img src="gifimage.gif" alt="gifimage.gif">
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-1_1_1_3.conf
Normal file
3
regression_testing/cases/access-cases/case-1_1_1_3.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 1
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/1.1.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<img src="bytesImage.gif" alt="34K bytes">
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-1_1_1_4.conf
Normal file
3
regression_testing/cases/access-cases/case-1_1_1_4.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 1
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/1.1.1</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<img src="animage.gif" alt="{short description of image}">
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-1_1_2_1.conf
Normal file
3
regression_testing/cases/access-cases/case-1_1_2_1.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 1
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/1.1.2</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<img src="pie-chart.jpg" alt="Pie chart of federal expenditures">
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-1_1_2_2.conf
Normal file
3
regression_testing/cases/access-cases/case-1_1_2_2.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 1
|
||||||
|
show-info: no
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>bobby/g13</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<img src="pie-chart.jpg" longdesc="pie-chart.html" alt="Pie chart of federal expenditures">
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-1_1_2_3.conf
Normal file
3
regression_testing/cases/access-cases/case-1_1_2_3.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 1
|
||||||
|
show-info: no
|
10
regression_testing/cases/access-cases/case-1_1_2_3@0.html
Normal file
10
regression_testing/cases/access-cases/case-1_1_2_3@0.html
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>aert1.0/1.1.2</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<img src="pie-chart.jpg" alt="Pie chart of federal expenditures">
|
||||||
|
<a href="pie-chart.html">D</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
3
regression_testing/cases/access-cases/case-1_1_3_1.conf
Normal file
3
regression_testing/cases/access-cases/case-1_1_3_1.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
char-encoding: latin1
|
||||||
|
accessibility-check: 1
|
||||||
|
show-info: no
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue