blob: 53ddfd22524a510f4ae3bcb464b9169d6865516b [file] [log] [blame]
--------------
Maven SCM Jazz Provider - TCK Test Implementation Details.
--------------
Chris Graham
--------------
2012-03-19
--------------
~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements. See the NOTICE file
~~ distributed with this work for additional information
~~ regarding copyright ownership. The ASF licenses this file
~~ to you under the Apache License, Version 2.0 (the
~~ "License"); you may not use this file except in compliance
~~ with the License. You may obtain a copy of the License at
~~
~~ http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing,
~~ software distributed under the License is distributed on an
~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~~ KIND, either express or implied. See the License for the
~~ specific language governing permissions and limitations
~~ under the License.
~~ NOTE: For help with the syntax of this file, see:
~~ http://maven.apache.org/doxia/references/apt-format.html
TCK Tests
The TCK test the actual implementation of the SCM APIs by calling the provider implementations via JUnit tests.
Jazz TCK Test Setup
The Jazz TCK tests are enabled by enabling the <<<tck-jazz>>> profile. This can be done by <<<mvn -Ptck-jazz ...>>>.
The Jazz TCK tests require three system properties to be defined. These properties can be defined in your local
<<<settings.xml>>> file or from the command line, via <<<-D>>>. The latter option may be needed if running the
TCK tests as JUnit tests from inside Eclipse.
* tckBaseDir
This property must be defined to define where the test snapshot is to be loaded into. Due to the
sandbox in a sandbox issue, this must be outside of the existing source tree. This property will
still need to be set if Eclipse is being used, and the Eclipse Workspace is a sandbox.
* tckSnapshotName
This is the name of an existing snapshot on the Jazz SCM server that is used to load the sandbox
used to conduct that TCK tests. This snapshot needs to be created independently of these TCK tests.
At the current time, creating a repository workspace with a named component (as opposed to a default
one; which causes duplicates when run more than once) is not supported by the Jazz SCM CLI tool.
Therefore a snapshot, with the appropriate contents, will need to be created before running these
TCK tests, and its name set to the value of the <<<tckSnapshotName>>> property.
* tckUrl
This property defines the initial part of the SCM URL that points to the server used to perform the TCK tests against.
For example:
+---
scm:jazz:Deb;Deb@https://rtc:9444/jazz:MavenSCMTCKTestWorkspace
+---
This is part of the usual SCM URL for Jazz. However, this value is appended with <<<System.currentTimeMillis()>>>
as part of the repository workspace name to guarantee uniqueness. A new repostory workspace is created for
each TCK test as it is being run.
The <<<tckSnapshotName>>> is loaded into the <<<tckBaseDir>>> location from the server referenced in the <<<tckUrl>>>
property.
Jazz creates some challenges for the existing TCK tests.
* Jazz always has an initial baseline. This maps to a revision. SCM's such as SVN/CVS etc, around which
the SCM API's and corresponding TCK tests assume that there is no initial revision.
* Jazz has no equivalent of a SVN/CVS style <<<add>>> command, whereby you can add a file to a SCM, ie
indicate that it is to be added, and not commit it.
Fully implemented Jazz TCK tests.
* JazzBlameCommandTckTest
* JazzCheckOutCommandTckTest
Functional but failing Jazz TCK tests.
* JazzChangeLogCommandTckTest
* JazzCheckInCommandTckTest
* JazzDiffCommandTckTest
* JazzStatusCommandTckTest
* JazzTagCommandTckTest
* JazzUpdateCommandTckTest
[]
The underlying Jazz SCM CLI tool does have issues with adding or checking in files that are in the sandbox root.
Several work items have been opened against the Jazz SCM CLI tool to address these issues.
When these work items have been addressed, the Jazz SCM provider should be fully able to support the SCM API and
these TCK tests.
Cleaning Up
Currently, we can not delete Jazz SCM repository objects using the Jazz SCM CLI tool. A work item has been opened
to address this. When this functionality is present, then the removeRepo() method in the TCK tests can be used
to perform a cleanup. Until that time, the repository workspaces that are created using these TCK tests will need
to be removed using the Eclipse client that has the full functionality to do so.